Модуль:ExtGraph: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) Нет описания правки |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 4: | Строка 4: | ||
local args = frame.args | local args = frame.args | ||
local csvUrl = args.url or 'YOUR_CSV_URL_HERE' | local csvUrl = args.url or 'YOUR_CSV_URL_HERE' | ||
local view = args.view or 'table | local view = args.view or 'table' | ||
-- Получаем данные из CSV через ExternalData | -- Получаем данные из CSV через ExternalData | ||
| Строка 20: | Строка 20: | ||
end | end | ||
local | if view == 'graph' then | ||
-- Генерируем Graphviz digraph | |||
local graphEdges = {} | |||
for _, row in ipairs(data) do | |||
local aid = row.author_id or '' | |||
local pid = row.pageid or '' | |||
if aid ~= '' and pid ~= '' then | |||
table.insert(graphEdges, string.format(' "A_%s" -> "P_%s";', aid, pid)) | |||
end | |||
end | |||
local graphContent = table.concat(graphEdges, '\n') | |||
return string.format([[<graphviz> | |||
digraph G { | |||
layout = "neato"; | |||
node [shape=none]; | |||
%s | |||
} | |||
</graphviz>]], graphContent) | |||
else | |||
-- Оригинальная таблица | |||
local tableHtml = '{| class="wikitable sortable"\n! author_id !! pageid !! page_title !! category\n' | local tableHtml = '{| class="wikitable sortable"\n! author_id !! pageid !! page_title !! category\n' | ||
for i, row in ipairs(data) do | for i, row in ipairs(data) do | ||
tableHtml = tableHtml .. string.format('|-\n| %s || %s || %s || %s\n', | tableHtml = tableHtml .. string.format('|-\n| %s || %s || %s || %s\n', | ||
| Строка 32: | Строка 51: | ||
row.category or '' | row.category or '' | ||
) | ) | ||
end | end | ||
return tableHtml .. '|}\n' | |||
end | end | ||
end | end | ||
return p | return p | ||
Текущая версия от 20:10, 25 февраля 2026
Для документации этого модуля может быть создана страница Модуль:ExtGraph/doc
local p = {}
function p.main(frame)
local args = frame.args
local csvUrl = args.url or 'YOUR_CSV_URL_HERE'
local view = args.view or 'table'
-- Получаем данные из CSV через ExternalData
local data, errors = mw.ext.externalData.getWebData {
url = csvUrl,
format = 'CSV with header'
}
if errors then
return '<strong>Ошибка загрузки данных:</strong> ' .. table.concat(errors, '<br>')
end
if not data or #data == 0 then
return 'Нет данных для отображения.'
end
if view == 'graph' then
-- Генерируем Graphviz digraph
local graphEdges = {}
for _, row in ipairs(data) do
local aid = row.author_id or ''
local pid = row.pageid or ''
if aid ~= '' and pid ~= '' then
table.insert(graphEdges, string.format(' "A_%s" -> "P_%s";', aid, pid))
end
end
local graphContent = table.concat(graphEdges, '\n')
return string.format([[<graphviz>
digraph G {
layout = "neato";
node [shape=none];
%s
}
</graphviz>]], graphContent)
else
-- Оригинальная таблица
local tableHtml = '{| class="wikitable sortable"\n! author_id !! pageid !! page_title !! category\n'
for i, row in ipairs(data) do
tableHtml = tableHtml .. string.format('|-\n| %s || %s || %s || %s\n',
row.author_id or '',
row.pageid or '',
row.page_title or '',
row.category or ''
)
end
return tableHtml .. '|}\n'
end
end
return p
