Add the agents usage bar widget
This commit is contained in:
1 parent
854ce5fe5a
commit
6c83f7089c
18 files changed
+1936
-4
No files matched your search
@@ -0,0 +1,59 @@
|
||||
function parseUsage(raw) {
|
||||
var values = {}
|
||||
var lines = String(raw || "").split("\n")
|
||||
|
||||
for (var i = 0; i < lines.length; i++) {
|
||||
var tabIndex = lines[i].indexOf("\t")
|
||||
if (tabIndex === -1) continue
|
||||
values[lines[i].substring(0, tabIndex)] = lines[i].substring(tabIndex + 1).trim()
|
||||
}
|
||||
|
||||
return {
|
||||
session: limitFrom(values, "session"),
|
||||
weekly: limitFrom(values, "weekly"),
|
||||
weeklyOpus: limitFrom(values, "weekly_opus")
|
||||
}
|
||||
}
|
||||
|
||||
function limitFrom(values, name) {
|
||||
var percentText = values[name + "_percent"]
|
||||
if (percentText === undefined) return null
|
||||
|
||||
var percent = parseInt(percentText, 10)
|
||||
return {
|
||||
percent: isNaN(percent) ? 0 : Math.max(0, Math.min(100, percent)),
|
||||
resetsAt: values[name + "_resets"] || ""
|
||||
}
|
||||
}
|
||||
|
||||
function formatTimeUntil(resetsAt, nowMs) {
|
||||
if (!resetsAt) return ""
|
||||
|
||||
var resetMs = new Date(resetsAt).getTime()
|
||||
if (isNaN(resetMs)) return ""
|
||||
|
||||
var totalMinutes = Math.max(0, Math.round((resetMs - nowMs) / 60000))
|
||||
var days = Math.floor(totalMinutes / 1440)
|
||||
var hours = Math.floor((totalMinutes % 1440) / 60)
|
||||
var minutes = totalMinutes % 60
|
||||
|
||||
if (days > 0) return days + "d " + hours + "h"
|
||||
if (hours > 0) return hours + "h " + minutes + "m"
|
||||
return minutes + "m"
|
||||
}
|
||||
|
||||
function limitDetail(limit, nowMs) {
|
||||
if (!limit) return ""
|
||||
|
||||
var timeUntilReset = formatTimeUntil(limit.resetsAt, nowMs)
|
||||
if (timeUntilReset === "") return limit.percent + "%"
|
||||
return limit.percent + "% resets in " + timeUntilReset
|
||||
}
|
||||
|
||||
if (typeof module !== "undefined") {
|
||||
module.exports = {
|
||||
parseUsage: parseUsage,
|
||||
formatTimeUntil: formatTimeUntil,
|
||||
limitDetail: limitDetail
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user