42 lines
1.3 KiB
Lua
42 lines
1.3 KiB
Lua
|
|
-- tracker.stop — close the currently open session.
|
||
|
|
local lang = jarvis.context.language or "ru"
|
||
|
|
local now = jarvis.context.time.timestamp or os.time()
|
||
|
|
|
||
|
|
local data = jarvis.state.get("data") or {}
|
||
|
|
local sessions = data.sessions or {}
|
||
|
|
|
||
|
|
local start_ts = data.current_session_start
|
||
|
|
if not start_ts then
|
||
|
|
return jarvis.cmd.not_found(lang == "ru"
|
||
|
|
and "Трекер не запущен, сэр."
|
||
|
|
or "Tracker isn't running, sir.")
|
||
|
|
end
|
||
|
|
|
||
|
|
local elapsed = now - start_ts
|
||
|
|
if elapsed < 1 then elapsed = 1 end
|
||
|
|
|
||
|
|
table.insert(sessions, { start = start_ts, ["end"] = now })
|
||
|
|
|
||
|
|
data.current_session_start = nil
|
||
|
|
data.sessions = sessions
|
||
|
|
jarvis.state.set("data", data)
|
||
|
|
|
||
|
|
local function format_dur(sec)
|
||
|
|
sec = math.floor(sec)
|
||
|
|
local h = math.floor(sec / 3600)
|
||
|
|
local m = math.floor((sec % 3600) / 60)
|
||
|
|
if lang == "ru" then
|
||
|
|
if h > 0 and m > 0 then return h .. " ч " .. m .. " мин" end
|
||
|
|
if h > 0 then return h .. " ч" end
|
||
|
|
return m .. " мин"
|
||
|
|
else
|
||
|
|
if h > 0 and m > 0 then return h .. "h " .. m .. "m" end
|
||
|
|
if h > 0 then return h .. "h" end
|
||
|
|
return m .. "m"
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return jarvis.cmd.ok(lang == "ru"
|
||
|
|
and ("Записал. Сессия: " .. format_dur(elapsed) .. ".")
|
||
|
|
or ("Done. Session: " .. format_dur(elapsed) .. "."))
|