Модуль:BotanyStats: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
Строка 34: | Строка 34: | ||
local location = default(frame.args.location, "") -- Местонахождение | local location = default(frame.args.location, "") -- Местонахождение | ||
local mutationId = default(frame.args.mutationId, "") -- Мутации | local mutationId = default(frame.args.mutationId, "") -- Мутации | ||
-- Разделение параметра mutationId на слова | |||
local function splitWords(text) | |||
local words = {} | |||
for word in text:gmatch("%S+") do | |||
table.insert(words, word) | |||
end | |||
return words | |||
end | |||
local words = splitWords(mutationId) | |||
local mutationCells = "" | |||
-- Генерация HTML-кода для каждого ID | |||
for _, word in ipairs(words) do | |||
mutationCells = mutationCells .. '<div class="maturation-cell">{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. word .. '.png|' .. word .. '|Мета=32x32px,link=}} [[#{{#invoke:Entity Lookup|getname|' .. word .. '}}|{{#invoke:Entity Lookup|getname|' .. word .. '}}]]</div>' | |||
end | |||
-- Преобразование температуры из Кельвинов в Цельсии | -- Преобразование температуры из Кельвинов в Цельсии | ||
Строка 55: | Строка 72: | ||
out = out .. '| ' .. description .. '\n' | out = out .. '| ' .. description .. '\n' | ||
out = out .. '| ' .. location .. '\n' | out = out .. '| ' .. location .. '\n' | ||
out = out .. frame:preprocess('! | out = out .. frame:preprocess('!' .. mutationCells .. '\n') | ||
out = out .. '|- \n' | out = out .. '|- \n' | ||
-- CSS код, который подгружается при первом вызове модуля на странице | |||
if firstRun then | if firstRun then | ||
firstRun = false | firstRun = false | ||
out = out .. '<div class="customCSS" style="display:none"> .maturation-cell { width: 100%; margin: 5px 0; box-sizing: border-box; text-align: left; background: #096d35; padding: 6px 10px; border-radius: 0.3em; border: 2px solid #0c4729; font-weight: bold; font-family:"Montserrat", sans-serif; transition: background 0.05s; } .maturation--box:hover { background: #097137; } </div>' | out = out .. '<div class="customCSS" style="display:none"> .maturation-cell { width: 100%; margin: 5px 0; box-sizing: border-box; text-align: left; background: #096d35; padding: 6px 10px; border-radius: 0.3em; border: 2px solid #0c4729; font-weight: bold; font-family:"Montserrat", sans-serif; transition: background 0.05s; } .maturation--box:hover { background: #097137; } </div>' |
Версия от 03:12, 23 августа 2024
Для документации этого модуля может быть создана страница Модуль:BotanyStats/doc
local p = {} local firstRun = true -- Глобальная переменная для отслеживания первого вызова -- Функция для установки значения по умолчанию local function default(value, fallback) return (value ~= nil and value ~= "") and value or fallback end -- Функция для преобразования Кельвинов в Цельсии local function kelvinToCelsius(kelvin) return kelvin - 273.15 end function p.templateCells(frame) local out = "" local anchorName = default(frame.args.anchorName, "") -- Якорь local fruitId = default(frame.args.fruitId, "") -- ID растения local seedId = default(frame.args.seedId, "") -- ID семена local potency = tonumber(default(frame.args.potency, 1)) -- Потенция local yield = tonumber(default(frame.args.yield, 0)) -- Урожайность local lifespan = tonumber(default(frame.args.lifespan, 0)) -- Время жизни local maturation = tonumber(default(frame.args.maturation, 0)) -- Созревания local production = tonumber(default(frame.args.production, 0)) -- Продуктивность local growthStages = tonumber(default(frame.args.growthStages, 6)) -- Стадии роста local waterConsumption = tonumber(default(frame.args.waterConsumption, 0.5)) -- Вода local nutrientConsumption = tonumber(default(frame.args.nutrientConsumption, 0.75)) -- Удобрения local idealHeatKelvin = tonumber(default(frame.args.idealHeat, 293)) -- Температура local idealLight = tonumber(default(frame.args.idealLight, 7)) -- Освещения local description = default(frame.args.description, "") -- Описание local location = default(frame.args.location, "") -- Местонахождение local mutationId = default(frame.args.mutationId, "") -- Мутации -- Разделение параметра mutationId на слова local function splitWords(text) local words = {} for word in text:gmatch("%S+") do table.insert(words, word) end return words end local words = splitWords(mutationId) local mutationCells = "" -- Генерация HTML-кода для каждого ID for _, word in ipairs(words) do mutationCells = mutationCells .. '<div class="maturation-cell">{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. word .. '.png|' .. word .. '|Мета=32x32px,link=}} [[#{{#invoke:Entity Lookup|getname|' .. word .. '}}|{{#invoke:Entity Lookup|getname|' .. word .. '}}]]</div>' end -- Преобразование температуры из Кельвинов в Цельсии local idealHeatCelsius = kelvinToCelsius(idealHeatKelvin) -- Формирование строк для ячеек таблицы out = out .. frame:preprocess('!{{Anchor|' .. anchorName .. '}}{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. fruitId .. '.png|' .. fruitId .. '|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|' .. fruitId .. '}} \n') out = out .. frame:preprocess('!{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. seedId .. '.png|' .. seedId .. '|Мета=64x64px,link=}} \n') out = out .. '|style="text-wrap:nowrap;"| \n' out = out .. frame:preprocess('* {{tooltip|Потенция|Потенция растения, которая влияет на количество химических веществ в растении|color=#e1f6ff}}: ' .. '<b>' .. potency .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Урожайность|Количество продуктов, которые растение дает за один урожай|color=#e1f6ff}}: ' .. '<b>' .. yield .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Время жизни|Продолжительность жизни растения|color=#e1f6ff}}: ' .. '<b>' .. lifespan .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Созревания|Время созревания растения|color=#e1f6ff}}: ' .. '<b>' .. maturation .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Продуктивность|Время, необходимое для производства следующего урожая после созревания|color=#e1f6ff}}: ' .. '<b>' .. production .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Стадии роста|Этапы роста растения, которые оно проходит от начальной стадии до полной зрелости|color=#e1f6ff}}: ' .. '<b>' .. growthStages .. '</b>' .. '\n') out = out .. '|style="text-wrap:nowrap;"| \n' out = out .. frame:preprocess('* {{tooltip|Вода|Потребления воды в секунду|color=#e1f6ff}}: ' .. '<b>' .. waterConsumption .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Удобрения|Потребления удобрений в секунду|color=#e1f6ff}}: ' .. '<b>' .. nutrientConsumption .. '</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Температура|Оптимальная температура|color=#e1f6ff}}: ' .. '<b>' .. string.format("%.2f", idealHeatCelsius) .. '°C</b>' .. '\n') out = out .. frame:preprocess('* {{tooltip|Освещения|Оптимальный уровень освещения|color=#e1f6ff}}: ' .. '<b>' .. idealLight .. '</b>' .. '\n') out = out .. '| ' .. description .. '\n' out = out .. '| ' .. location .. '\n' out = out .. frame:preprocess('!' .. mutationCells .. '\n') out = out .. '|- \n' -- CSS код, который подгружается при первом вызове модуля на странице if firstRun then firstRun = false out = out .. '<div class="customCSS" style="display:none"> .maturation-cell { width: 100%; margin: 5px 0; box-sizing: border-box; text-align: left; background: #096d35; padding: 6px 10px; border-radius: 0.3em; border: 2px solid #0c4729; font-weight: bold; font-family:"Montserrat", sans-serif; transition: background 0.05s; } .maturation--box:hover { background: #097137; } </div>' end return out end return p