-- name = "Курсы валют"
-- description = "Виджет курсов валют. Нажмите на дату чтобы изменить ее."
-- dataSource = "https://github.com/fawazahmed0/currency-api#readme"
-- type = "widget"
-- author = "Andrey Gavrilov"
-- version = "1.0"
-- argumentsHelp = "Введите список валютных пар в формате usd:rub btc:usd"
-- argumentsDefault = "usd:rub eur:rub"
sx = require 'pl.stringx'
function on_alarm()
curs = aio:get_args()
if curs == nil then
curs = {"usd:rub", "eur:rub"}
end
get_rates("latest")
end
function get_rates(loc_date)
net:get_text("https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/"..loc_date.."/currencies/usd.json")
end
function on_network_result(result)
local textColor = ui:get_secondary_text_color()
local dat = ajson:get_value(result, "object string:date")
local tab = {}
table.insert(tab, ""..sx.replace(dat, "-", ".").."")
for idx = 1, #curs, 1 do
local equals = " = "
local cur = sx.split(curs[idx], ":")
local cur1 = cur[1]
local cur2 = cur[2]
local rate1 = ajson:get_value(result, "object object:usd double:"..cur1)
local rate2 = ajson:get_value(result, "object object:usd double:"..cur2)
local rate = math.floor(rate2/rate1*10000+0.5)/10000
table.insert(tab, "1 "..string.upper(cur1)..equals..rate.." "..string.upper(cur2))
end
ui:show_lines(tab)
end
function on_click(idx)
if idx == 1 then
ui:show_edit_dialog("Введите дату курсов", "Введите дату курсов в формате 2020.12.31. Пустое значение - текущая дата.")
end
end
function on_dialog_action(date)
if date == "" then
date = "latest"
end
get_rates(sx.replace(date, ".", "-"))
end