SYMBOL INDEX (581 symbols across 55 files) FILE: internal/glance/auth.go constant AUTH_SESSION_COOKIE_NAME (line 23) | AUTH_SESSION_COOKIE_NAME = "session_token" constant AUTH_RATE_LIMIT_WINDOW (line 24) | AUTH_RATE_LIMIT_WINDOW = 5 * time.Minute constant AUTH_RATE_LIMIT_MAX_ATTEMPTS (line 25) | AUTH_RATE_LIMIT_MAX_ATTEMPTS = 5 constant AUTH_TOKEN_SECRET_LENGTH (line 27) | AUTH_TOKEN_SECRET_LENGTH = 32 constant AUTH_USERNAME_HASH_LENGTH (line 28) | AUTH_USERNAME_HASH_LENGTH = 32 constant AUTH_SECRET_KEY_LENGTH (line 29) | AUTH_SECRET_KEY_LENGTH = AUTH_TOKEN_SECRET_LENGTH + AUTH_USERNAME_HASH_L... constant AUTH_TIMESTAMP_LENGTH (line 30) | AUTH_TIMESTAMP_LENGTH = 4 constant AUTH_TOKEN_DATA_LENGTH (line 31) | AUTH_TOKEN_DATA_LENGTH = AUTH_USERNAME_HASH_LENGTH + AUTH_TIMESTAMP_LENGTH constant AUTH_TOKEN_VALID_PERIOD (line 34) | AUTH_TOKEN_VALID_PERIOD = 14 * 24 * time.Hour constant AUTH_TOKEN_REGEN_BEFORE (line 36) | AUTH_TOKEN_REGEN_BEFORE = 7 * 24 * time.Hour type doWhenUnauthorized (line 40) | type doWhenUnauthorized constant redirectToLogin (line 43) | redirectToLogin doWhenUnauthorized = iota constant showUnauthorizedJSON (line 44) | showUnauthorizedJSON type failedAuthAttempt (line 47) | type failedAuthAttempt struct function generateSessionToken (line 52) | func generateSessionToken(username string, secret []byte, now time.Time)... function computeUsernameHash (line 77) | func computeUsernameHash(username string, secret []byte) ([]byte, error) { function verifySessionToken (line 88) | func verifySessionToken(token string, secretBytes []byte, now time.Time)... function makeAuthSecretKey (line 125) | func makeAuthSecretKey(length int) (string, error) { method handleAuthenticationAttempt (line 134) | func (a *application) handleAuthenticationAttempt(w http.ResponseWriter,... method isAuthorized (line 250) | func (a *application) isAuthorized(w http.ResponseWriter, r *http.Reques... method handleUnauthorizedResponse (line 289) | func (a *application) handleUnauthorizedResponse(w http.ResponseWriter, ... method handleLogoutRequest (line 306) | func (a *application) handleLogoutRequest(w http.ResponseWriter, r *http... method setAuthSessionCookie (line 311) | func (a *application) setAuthSessionCookie(w http.ResponseWriter, r *htt... method handleLoginPageRequest (line 323) | func (a *application) handleLoginPageRequest(w http.ResponseWriter, r *h... FILE: internal/glance/auth_test.go function TestAuthTokenGenerationAndVerification (line 10) | func TestAuthTokenGenerationAndVerification(t *testing.T) { FILE: internal/glance/cli.go type cliIntent (line 13) | type cliIntent constant cliIntentVersionPrint (line 16) | cliIntentVersionPrint cliIntent = iota constant cliIntentServe (line 17) | cliIntentServe constant cliIntentConfigValidate (line 18) | cliIntentConfigValidate constant cliIntentConfigPrint (line 19) | cliIntentConfigPrint constant cliIntentDiagnose (line 20) | cliIntentDiagnose constant cliIntentSensorsPrint (line 21) | cliIntentSensorsPrint constant cliIntentMountpointInfo (line 22) | cliIntentMountpointInfo constant cliIntentSecretMake (line 23) | cliIntentSecretMake constant cliIntentPasswordHash (line 24) | cliIntentPasswordHash type cliOptions (line 27) | type cliOptions struct function parseCliOptions (line 33) | func parseCliOptions() (*cliOptions, error) { function cliSensorsPrint (line 109) | func cliSensorsPrint() int { function cliMountpointInfo (line 137) | func cliMountpointInfo(requestedPath string) int { FILE: internal/glance/config-fields.go constant hslHueMax (line 20) | hslHueMax = 360 constant hslSaturationMax (line 21) | hslSaturationMax = 100 constant hslLightnessMax (line 22) | hslLightnessMax = 100 type hslColorField (line 25) | type hslColorField struct method String (line 31) | func (c *hslColorField) String() string { method ToHex (line 35) | func (c *hslColorField) ToHex() string { method SameAs (line 39) | func (c1 *hslColorField) SameAs(c2 *hslColorField) bool { method UnmarshalYAML (line 49) | func (c *hslColorField) UnmarshalYAML(node *yaml.Node) error { type durationField (line 98) | type durationField method UnmarshalYAML (line 100) | func (d *durationField) UnmarshalYAML(node *yaml.Node) error { type customIconField (line 132) | type customIconField struct method UnmarshalYAML (line 180) | func (i *customIconField) UnmarshalYAML(node *yaml.Node) error { function newCustomIconField (line 137) | func newCustomIconField(value string) customIconField { type proxyOptionsField (line 190) | type proxyOptionsField struct method UnmarshalYAML (line 197) | func (p *proxyOptionsField) UnmarshalYAML(node *yaml.Node) error { type queryParametersField (line 237) | type queryParametersField method UnmarshalYAML (line 239) | func (q *queryParametersField) UnmarshalYAML(node *yaml.Node) error { method toQueryString (line 280) | func (q *queryParametersField) toQueryString() string { FILE: internal/glance/config.go constant CONFIG_INCLUDE_RECURSION_DEPTH_LIMIT (line 22) | CONFIG_INCLUDE_RECURSION_DEPTH_LIMIT = 20 constant configVarTypeEnv (line 25) | configVarTypeEnv = "env" constant configVarTypeSecret (line 26) | configVarTypeSecret = "secret" constant configVarTypeFileFromEnv (line 27) | configVarTypeFileFromEnv = "readFileFromEnv" type config (line 30) | type config struct type user (line 71) | type user struct type page (line 77) | type page struct function newConfigFromYAML (line 94) | func newConfigFromYAML(contents []byte) (*config, error) { function parseConfigVariables (line 142) | func parseConfigVariables(contents []byte) ([]byte, error) { function parseConfigVariableOfType (line 190) | func parseConfigVariableOfType(variableType, variableName string) (strin... function formatWidgetInitError (line 236) | func formatWidgetInitError(err error, w widget) error { function parseYAMLIncludes (line 242) | func parseYAMLIncludes(mainFilePath string) ([]byte, map[string]struct{}... function recursiveParseYAMLIncludes (line 246) | func recursiveParseYAMLIncludes(mainFilePath string, includes map[string... function configFilesWatcher (line 305) | func configFilesWatcher( function isConfigStateValid (line 451) | func isConfigStateValid(config *config) error { type orderedYAMLMap (line 540) | type orderedYAMLMap struct function newOrderedYAMLMap (line 545) | func newOrderedYAMLMap[K comparable, V any](keys []K, values []V) (*orde... method Items (line 564) | func (om *orderedYAMLMap[K, V]) Items() iter.Seq2[K, V] { method Get (line 578) | func (om *orderedYAMLMap[K, V]) Get(key K) (V, bool) { method Merge (line 583) | func (self *orderedYAMLMap[K, V]) Merge(other *orderedYAMLMap[K, V]) *or... method UnmarshalYAML (line 602) | func (om *orderedYAMLMap[K, V]) UnmarshalYAML(node *yaml.Node) error { FILE: internal/glance/diagnose.go constant httpTestRequestTimeout (line 15) | httpTestRequestTimeout = 15 * time.Second function runDiagnostic (line 105) | func runDiagnostic() { type diagnosticStep (line 149) | type diagnosticStep struct function testHttpRequest (line 157) | func testHttpRequest(method, url string, expectedStatusCode int) (string... function testHttpRequestWithHeaders (line 161) | func testHttpRequestWithHeaders(method, url string, headers map[string]s... function testDNSResolution (line 198) | func testDNSResolution(domain string) (string, error) { FILE: internal/glance/embed.go function readAllFromStaticFS (line 29) | func readAllFromStaticFS(path string) ([]byte, error) { function computeFSHash (line 52) | func computeFSHash(files fs.FS) (string, error) { FILE: internal/glance/glance.go constant STATIC_ASSETS_CACHE_DURATION (line 26) | STATIC_ASSETS_CACHE_DURATION = 24 * time.Hour type application (line 30) | type application struct method resolveUserDefinedAssetPath (line 272) | func (a *application) resolveUserDefinedAssetPath(path string) string { method populateTemplateRequestData (line 290) | func (a *application) populateTemplateRequestData(data *templateReques... method handlePageRequest (line 306) | func (a *application) handlePageRequest(w http.ResponseWriter, r *http... method handlePageContentRequest (line 334) | func (a *application) handlePageContentRequest(w http.ResponseWriter, ... method addressOfRequest (line 369) | func (a *application) addressOfRequest(r *http.Request) string { method handleNotFound (line 398) | func (a *application) handleNotFound(w http.ResponseWriter, _ *http.Re... method handleWidgetRequest (line 404) | func (a *application) handleWidgetRequest(w http.ResponseWriter, r *ht... method StaticAssetPath (line 427) | func (a *application) StaticAssetPath(asset string) string { method VersionedAssetPath (line 431) | func (a *application) VersionedAssetPath(asset string) string { method server (line 436) | func (a *application) server() (func() error, func() error) { function newApplication (line 47) | func newApplication(c *config) (*application, error) { method updateOutdatedWidgets (line 233) | func (p *page) updateOutdatedWidgets() { type templateRequestData (line 280) | type templateRequestData struct type templateData (line 284) | type templateData struct FILE: internal/glance/main.go function Main (line 15) | func Main() int { function serveApp (line 93) | func serveApp(configPath string) error { function serveUpdateNoticeIfConfigLocationNotMigrated (line 183) | func serveUpdateNoticeIfConfigLocationNotMigrated(configPath string) bool { FILE: internal/glance/static/js/animations.js function directions (line 3) | function directions(anim, opt, ...dirs) { function slideFade (line 7) | function slideFade({ function animateReposition (line 36) | function animateReposition( FILE: internal/glance/static/js/calendar.js constant FULL_MONTH_SLOTS (line 4) | const FULL_MONTH_SLOTS = 7*6; constant WEEKDAY_ABBRS (line 5) | const WEEKDAY_ABBRS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; constant MONTH_NAMES (line 6) | const MONTH_NAMES = ["January", "February", "March", "April", "May", "Ju... function Calendar (line 39) | function Calendar(firstDay) { function Header (line 77) | function Header(nextClicked, prevClicked, undoClicked) { function Dates (line 130) | function Dates(firstDay) { function datesWithinSameMonth (line 195) | function datesWithinSameMonth(d1, d2) { function daysInMonth (line 199) | function daysInMonth(year, month) { function msTillNextDay (line 203) | function msTillNextDay(now) { FILE: internal/glance/static/js/login.js constant AUTH_ENDPOINT (line 3) | const AUTH_ENDPOINT = pageData.baseURL + "/api/authenticate"; function enableLoginButtonIfCriteriaMet (line 53) | function enableLoginButtonIfCriteriaMet() { function handleLoginAttempt (line 76) | async function handleLoginAttempt() { FILE: internal/glance/static/js/masonry.js function setupMasonries (line 4) | function setupMasonries() { FILE: internal/glance/static/js/page.js function fetchPageContent (line 6) | async function fetchPageContent(pageData) { function setupCarousels (line 15) | function setupCarousels() { function timestampToRelativeTime (line 56) | function timestampToRelativeTime(timestamp) { function updateRelativeTimeForElements (line 84) | function updateRelativeTimeForElements(elements) function setupSearchBoxes (line 98) | function setupSearchBoxes() { function setupDynamicRelativeTime (line 209) | function setupDynamicRelativeTime() { function setupGroups (line 251) | function setupGroups() { function setupLazyImages (line 311) | function setupLazyImages() { function attachExpandToggleButton (line 342) | function attachExpandToggleButton(collapsibleContainer) { function setupCollapsibleLists (line 386) | function setupCollapsibleLists() { function setupCollapsibleGrids (line 420) | function setupCollapsibleGrids() { function afterContentReady (line 497) | function afterContentReady(callback) { function makeSettableTimeElement (line 504) | function makeSettableTimeElement(element, hourFormat) { function timeInZone (line 532) | function timeInZone(now, zone) { function zoneDiffText (line 548) | function zoneDiffText(diffInMinutes) { function setupClocks (line 573) | function setupClocks() { function setupCalendars (line 634) | async function setupCalendars() { function setupTodos (line 645) | async function setupTodos() { function setupTruncatedElementTitles (line 656) | function setupTruncatedElementTitles() { function changeTheme (line 670) | async function changeTheme(key, onChanged) { function initThemePicker (line 694) | function initThemePicker() { function setupPage (line 746) | async function setupPage() { FILE: internal/glance/static/js/popover.js function handleMouseEnter (line 31) | function handleMouseEnter(event) { function handleMouseLeave (line 51) | function handleMouseLeave(event) { function clearTogglePopoverTimeout (line 57) | function clearTogglePopoverTimeout() { function showPopover (line 61) | function showPopover() { function repositionContainer (line 110) | function repositionContainer() { function hidePopover (line 160) | function hidePopover() { function handleHidePopoverOnEscape (line 181) | function handleHidePopoverOnEscape(event) { function setupPopovers (line 187) | function setupPopovers() { FILE: internal/glance/static/js/templating.js function elem (line 1) | function elem(tag = "div") { function fragment (line 5) | function fragment(...children) { function text (line 11) | function text(str = "") { function repeat (line 15) | function repeat(n, fn) { function find (line 24) | function find(selector) { function findAll (line 28) | function findAll(selector) { FILE: internal/glance/static/js/todo.js function itemAnim (line 15) | function itemAnim(height, entrance = true) { function inputMarginAnim (line 28) | function inputMarginAnim(entrance = true) { function loadFromLocalStorage (line 40) | function loadFromLocalStorage(id) { function saveToLocalStorage (line 44) | function saveToLocalStorage(id, data) { function Item (line 48) | function Item(unserialize = {}, onUpdate, onDelete, onEscape, onDragStar... function Todo (line 104) | function Todo(id) { function autoScalingTextarea (line 210) | function autoScalingTextarea(yieldTextarea = null) { function verticallyReorderable (line 229) | function verticallyReorderable(itemsContainer, onItemRepositioned, onDra... FILE: internal/glance/static/js/utils.js function throttledDebounce (line 1) | function throttledDebounce(callback, maxDebounceTimes, debounceDelay) { function isElementVisible (line 23) | function isElementVisible(element) { function clamp (line 27) | function clamp(value, min, max) { function openURLInNewTab (line 34) | function openURLInNewTab(url, focus = true) { class Vec2 (line 41) | class Vec2 { method constructor (line 42) | constructor(x, y) { method new (line 47) | static new(x = 0, y = 0) { method fromEvent (line 51) | static fromEvent(event) { method setFromEvent (line 55) | setFromEvent(event) { method set (line 61) | set(x, y) { function toggleableEvents (line 68) | function toggleableEvents(element, eventToHandlerMap) { FILE: internal/glance/templates.go function mustParseTemplate (line 61) | func mustParseTemplate(primary string, dependencies ...string) *template... function formatApproxNumber (line 73) | func formatApproxNumber(count int) string { function dynamicRelativeTimeAttrs (line 89) | func dynamicRelativeTimeAttrs(t interface{ Unix() int64 }) template.HTML... FILE: internal/glance/theme.go method handleThemeChangeRequest (line 15) | func (a *application) handleThemeChangeRequest(w http.ResponseWriter, r ... type themeProperties (line 41) | type themeProperties struct method init (line 56) | func (t *themeProperties) init() error { method SameAs (line 78) | func (t1 *themeProperties) SameAs(t2 *themeProperties) bool { FILE: internal/glance/utils.go function percentChange (line 20) | func percentChange(current, previous float64) float64 { function extractDomainFromUrl (line 31) | func extractDomainFromUrl(u string) string { function svgPolylineCoordsFromYValues (line 44) | func svgPolylineCoordsFromYValues(width float64, height float64, values ... function maybeCopySliceWithoutZeroValues (line 67) | func maybeCopySliceWithoutZeroValues[T int | float64](values []T) []T { function stripURLScheme (line 93) | func stripURLScheme(url string) string { function isRunningInsideDockerContainer (line 97) | func isRunningInsideDockerContainer() bool { function prefixStringLines (line 102) | func prefixStringLines(prefix string, s string) string { function limitStringLength (line 112) | func limitStringLength(s string, max int) (string, bool) { function parseRFC3339Time (line 122) | func parseRFC3339Time(t string) time.Time { function normalizeVersionFormat (line 131) | func normalizeVersionFormat(version string) string { function titleToSlug (line 141) | func titleToSlug(s string) string { function fileServerWithCache (line 149) | func fileServerWithCache(fs http.FileSystem, cacheDuration time.Duration... function executeTemplateToString (line 160) | func executeTemplateToString(t *template.Template, data any) (string, er... function stringToBool (line 170) | func stringToBool(s string) bool { function itemAtIndexOrDefault (line 174) | func itemAtIndexOrDefault[T any](items []T, index int, def T) T { function ternary (line 182) | func ternary[T any](condition bool, a, b T) T { function ItsUsedTrustMeBro (line 192) | func ItsUsedTrustMeBro(...any) {} function hslToHex (line 194) | func hslToHex(h, s, l float64) string { FILE: internal/glance/widget-bookmarks.go type bookmarksWidget (line 9) | type bookmarksWidget struct method initialize (line 37) | func (widget *bookmarksWidget) initialize() error { method Render (line 75) | func (widget *bookmarksWidget) Render() template.HTML { FILE: internal/glance/widget-calendar.go type calendarWidget (line 21) | type calendarWidget struct method initialize (line 28) | func (widget *calendarWidget) initialize() error { method Render (line 43) | func (widget *calendarWidget) Render() template.HTML { FILE: internal/glance/widget-changedetection.go type changeDetectionWidget (line 16) | type changeDetectionWidget struct method initialize (line 26) | func (widget *changeDetectionWidget) initialize() error { method update (line 44) | func (widget *changeDetectionWidget) update(ctx context.Context) { method Render (line 68) | func (widget *changeDetectionWidget) Render() template.HTML { type changeDetectionWatch (line 72) | type changeDetectionWatch struct type changeDetectionWatchList (line 80) | type changeDetectionWatchList method sortByNewest (line 82) | func (r changeDetectionWatchList) sortByNewest() changeDetectionWatchL... type changeDetectionResponseJson (line 90) | type changeDetectionResponseJson struct function fetchWatchUUIDsFromChangeDetection (line 98) | func fetchWatchUUIDsFromChangeDetection(instanceURL string, token string... function fetchWatchesFromChangeDetection (line 119) | func fetchWatchesFromChangeDetection(instanceURL string, requestedWatchI... FILE: internal/glance/widget-clock.go type clockWidget (line 12) | type clockWidget struct method initialize (line 22) | func (widget *clockWidget) initialize() error { method Render (line 46) | func (widget *clockWidget) Render() template.HTML { FILE: internal/glance/widget-container.go type containerWidgetBase (line 9) | type containerWidgetBase struct method _initializeWidgets (line 13) | func (widget *containerWidgetBase) _initializeWidgets() error { method _update (line 23) | func (widget *containerWidgetBase) _update(ctx context.Context) { method _setProviders (line 44) | func (widget *containerWidgetBase) _setProviders(providers *widgetProv... method _requiresUpdate (line 50) | func (widget *containerWidgetBase) _requiresUpdate(now *time.Time) bool { FILE: internal/glance/widget-custom-api.go type CustomAPIRequest (line 27) | type CustomAPIRequest struct method initialize (line 134) | func (req *CustomAPIRequest) initialize() error { type customAPIWidget (line 40) | type customAPIWidget struct method initialize (line 51) | func (widget *customAPIWidget) initialize() error { method update (line 78) | func (widget *customAPIWidget) update(ctx context.Context) { method Render (line 89) | func (widget *customAPIWidget) Render() template.HTML { type customAPIOptions (line 93) | type customAPIOptions method StringOr (line 95) | func (o *customAPIOptions) StringOr(key, defaultValue string) string { method IntOr (line 99) | func (o *customAPIOptions) IntOr(key string, defaultValue int) int { method FloatOr (line 103) | func (o *customAPIOptions) FloatOr(key string, defaultValue float64) f... method BoolOr (line 107) | func (o *customAPIOptions) BoolOr(key string, defaultValue bool) bool { method JSON (line 111) | func (o *customAPIOptions) JSON(key string) string { function customAPIGetOptionOrDefault (line 125) | func customAPIGetOptionOrDefault[T any](o customAPIOptions, key string, ... type customAPIResponseData (line 195) | type customAPIResponseData struct type customAPITemplateData (line 200) | type customAPITemplateData struct method JSONLines (line 206) | func (data *customAPITemplateData) JSONLines() []decoratedGJSONResult { method Subrequest (line 217) | func (data *customAPITemplateData) Subrequest(key string) *customAPIRe... function fetchCustomAPIResponse (line 231) | func fetchCustomAPIResponse(ctx context.Context, req *CustomAPIRequest) ... function fetchAndRenderCustomAPIRequest (line 278) | func fetchAndRenderCustomAPIRequest( type decoratedGJSONResult (line 356) | type decoratedGJSONResult struct method Exists (line 370) | func (r *decoratedGJSONResult) Exists(key string) bool { method Array (line 374) | func (r *decoratedGJSONResult) Array(key string) []decoratedGJSONResult { method String (line 382) | func (r *decoratedGJSONResult) String(key string) string { method Int (line 390) | func (r *decoratedGJSONResult) Int(key string) int { method Float (line 398) | func (r *decoratedGJSONResult) Float(key string) float64 { method Bool (line 406) | func (r *decoratedGJSONResult) Bool(key string) bool { method Get (line 414) | func (r *decoratedGJSONResult) Get(key string) *decoratedGJSONResult { function gJsonResultArrayToDecoratedResultArray (line 360) | func gJsonResultArrayToDecoratedResultArray(results []gjson.Result) []de... function customAPIDoMathOp (line 418) | func customAPIDoMathOp[T int | float64](a, b T, op string) T { function customAPIFuncFormatTime (line 692) | func customAPIFuncFormatTime(layout string, t time.Time) string { function customAPIFuncParseTimeInLocation (line 709) | func customAPIFuncParseTimeInLocation(layout, value string, loc *time.Lo... FILE: internal/glance/widget-dns-stats.go constant dnsStatsBars (line 22) | dnsStatsBars = 8 constant dnsStatsHoursSpan (line 23) | dnsStatsHoursSpan = 24 constant dnsStatsHoursPerBar (line 24) | dnsStatsHoursPerBar int = dnsStatsHoursSpan / dnsStatsBars type dnsStatsWidget (line 27) | type dnsStatsWidget struct method initialize (line 63) | func (widget *dnsStatsWidget) initialize() error { method update (line 87) | func (widget *dnsStatsWidget) update(ctx context.Context) { method Render (line 126) | func (widget *dnsStatsWidget) Render() template.HTML { constant dnsServiceAdguard (line 46) | dnsServiceAdguard = "adguard" constant dnsServicePihole (line 47) | dnsServicePihole = "pihole" constant dnsServiceTechnitium (line 48) | dnsServiceTechnitium = "technitium" constant dnsServicePiholeV6 (line 49) | dnsServicePiholeV6 = "pihole-v6" function makeDNSWidgetTimeLabels (line 52) | func makeDNSWidgetTimeLabels(format string) [8]string { type dnsStats (line 130) | type dnsStats struct type dnsStatsSeries (line 140) | type dnsStatsSeries struct type dnsStatsBlockedDomain (line 147) | type dnsStatsBlockedDomain struct type adguardStatsResponse (line 152) | type adguardStatsResponse struct function fetchAdguardStats (line 161) | func fetchAdguardStats(instanceURL string, allowInsecure bool, username,... type pihole5StatsResponse (line 266) | type pihole5StatsResponse struct type pihole5QueriesSeries (line 280) | type pihole5QueriesSeries method UnmarshalJSON (line 282) | func (p *pihole5QueriesSeries) UnmarshalJSON(data []byte) error { type pihole5TopBlockedDomains (line 297) | type pihole5TopBlockedDomains method UnmarshalJSON (line 299) | func (p *pihole5TopBlockedDomains) UnmarshalJSON(data []byte) error { function fetchPihole5Stats (line 314) | func fetchPihole5Stats(instanceURL string, allowInsecure bool, token str... function fetchPiholeStats (line 412) | func fetchPiholeStats( function fetchPiholeSessionID (line 618) | func fetchPiholeSessionID(instanceURL string, client *http.Client, passw... function checkPiholeSessionIDIsValid (line 666) | func checkPiholeSessionIDIsValid(instanceURL string, client *http.Client... type technitiumStatsResponse (line 686) | type technitiumStatsResponse struct function fetchTechnitiumStats (line 707) | func fetchTechnitiumStats(instanceUrl string, allowInsecure bool, token ... FILE: internal/glance/widget-docker-containers.go type dockerContainersWidget (line 18) | type dockerContainersWidget struct method initialize (line 29) | func (widget *dockerContainersWidget) initialize() error { method update (line 39) | func (widget *dockerContainersWidget) update(ctx context.Context) { method Render (line 56) | func (widget *dockerContainersWidget) Render() template.HTML { constant dockerContainerLabelHide (line 61) | dockerContainerLabelHide = "glance.hide" constant dockerContainerLabelName (line 62) | dockerContainerLabelName = "glance.name" constant dockerContainerLabelURL (line 63) | dockerContainerLabelURL = "glance.url" constant dockerContainerLabelDescription (line 64) | dockerContainerLabelDescription = "glance.description" constant dockerContainerLabelSameTab (line 65) | dockerContainerLabelSameTab = "glance.same-tab" constant dockerContainerLabelIcon (line 66) | dockerContainerLabelIcon = "glance.icon" constant dockerContainerLabelID (line 67) | dockerContainerLabelID = "glance.id" constant dockerContainerLabelParent (line 68) | dockerContainerLabelParent = "glance.parent" constant dockerContainerLabelCategory (line 69) | dockerContainerLabelCategory = "glance.category" constant dockerContainerStateIconOK (line 73) | dockerContainerStateIconOK = "ok" constant dockerContainerStateIconPaused (line 74) | dockerContainerStateIconPaused = "paused" constant dockerContainerStateIconWarn (line 75) | dockerContainerStateIconWarn = "warn" constant dockerContainerStateIconOther (line 76) | dockerContainerStateIconOther = "other" type dockerContainerJsonResponse (line 86) | type dockerContainerJsonResponse struct type dockerContainerLabels (line 94) | type dockerContainerLabels method getOrDefault (line 96) | func (l *dockerContainerLabels) getOrDefault(label, def string) string { type dockerContainer (line 113) | type dockerContainer struct type dockerContainerList (line 126) | type dockerContainerList method sortByStateIconThenTitle (line 128) | func (containers dockerContainerList) sortByStateIconThenTitle() { function dockerContainerStateToStateIcon (line 140) | func dockerContainerStateToStateIcon(state string) string { function fetchDockerContainers (line 153) | func fetchDockerContainers( function deriveDockerContainerName (line 216) | func deriveDockerContainerName(container *dockerContainerJsonResponse, f... function groupDockerContainerChildren (line 243) | func groupDockerContainerChildren( function isDockerContainerHidden (line 273) | func isDockerContainerHidden(container *dockerContainerJsonResponse, hid... function fetchDockerContainersFromSource (line 282) | func fetchDockerContainersFromSource( FILE: internal/glance/widget-extension.go constant extensionWidgetDefaultTitle (line 18) | extensionWidgetDefaultTitle = "Extension" type extensionWidget (line 20) | type extensionWidget struct method initialize (line 31) | func (widget *extensionWidget) initialize() error { method update (line 45) | func (widget *extensionWidget) update(ctx context.Context) { method Render (line 69) | func (widget *extensionWidget) Render() template.HTML { type extensionType (line 73) | type extensionType constant extensionContentHTML (line 76) | extensionContentHTML extensionType = iota constant extensionContentUnknown (line 77) | extensionContentUnknown constant extensionHeaderTitle (line 85) | extensionHeaderTitle = "Widget-Title" constant extensionHeaderTitleURL (line 86) | extensionHeaderTitleURL = "Widget-Title-URL" constant extensionHeaderContentType (line 87) | extensionHeaderContentType = "Widget-Content-Type" constant extensionHeaderContentFrameless (line 88) | extensionHeaderContentFrameless = "Widget-Content-Frameless" type extensionRequestOptions (line 91) | type extensionRequestOptions struct type extension (line 99) | type extension struct function convertExtensionContent (line 106) | func convertExtensionContent(options extensionRequestOptions, content []... function fetchExtension (line 119) | func fetchExtension(options extensionRequestOptions) (extension, error) { FILE: internal/glance/widget-group.go type groupWidget (line 12) | type groupWidget struct method initialize (line 17) | func (widget *groupWidget) initialize() error { method update (line 38) | func (widget *groupWidget) update(ctx context.Context) { method setProviders (line 42) | func (widget *groupWidget) setProviders(providers *widgetProviders) { method requiresUpdate (line 46) | func (widget *groupWidget) requiresUpdate(now *time.Time) bool { method Render (line 50) | func (widget *groupWidget) Render() template.HTML { FILE: internal/glance/widget-hacker-news.go type hackerNewsWidget (line 14) | type hackerNewsWidget struct method initialize (line 25) | func (widget *hackerNewsWidget) initialize() error { method update (line 46) | func (widget *hackerNewsWidget) update(ctx context.Context) { method Render (line 65) | func (widget *hackerNewsWidget) Render() template.HTML { type hackerNewsPostResponseJson (line 69) | type hackerNewsPostResponseJson struct function fetchHackerNewsPostIds (line 78) | func fetchHackerNewsPostIds(sort string) ([]int, error) { function fetchHackerNewsPostsFromIds (line 88) | func fetchHackerNewsPostsFromIds(postIds []int, commentsUrlTemplate stri... function fetchHackerNewsPosts (line 141) | func fetchHackerNewsPosts(sort string, limit int, commentsUrlTemplate st... FILE: internal/glance/widget-html.go type htmlWidget (line 7) | type htmlWidget struct method initialize (line 12) | func (widget *htmlWidget) initialize() error { method Render (line 18) | func (widget *htmlWidget) Render() template.HTML { FILE: internal/glance/widget-iframe.go type iframeWidget (line 12) | type iframeWidget struct method initialize (line 19) | func (widget *iframeWidget) initialize() error { method Render (line 41) | func (widget *iframeWidget) Render() template.HTML { FILE: internal/glance/widget-lobsters.go type lobstersWidget (line 11) | type lobstersWidget struct method initialize (line 23) | func (widget *lobstersWidget) initialize() error { method update (line 47) | func (widget *lobstersWidget) update(ctx context.Context) { method Render (line 61) | func (widget *lobstersWidget) Render() template.HTML { type lobstersPostResponseJson (line 65) | type lobstersPostResponseJson struct type lobstersFeedResponseJson (line 75) | type lobstersFeedResponseJson function fetchLobstersPostsFromFeed (line 77) | func fetchLobstersPostsFromFeed(feedUrl string) (forumPostList, error) { function fetchLobstersPosts (line 112) | func fetchLobstersPosts(customURL string, instanceURL string, sortBy str... FILE: internal/glance/widget-markets.go type marketsWidget (line 17) | type marketsWidget struct method initialize (line 27) | func (widget *marketsWidget) initialize() error { method update (line 50) | func (widget *marketsWidget) update(ctx context.Context) { method Render (line 66) | func (widget *marketsWidget) Render() template.HTML { type marketRequest (line 70) | type marketRequest struct type market (line 77) | type market struct type marketList (line 87) | type marketList method sortByAbsChange (line 89) | func (t marketList) sortByAbsChange() { method sortByChange (line 95) | func (t marketList) sortByChange() { type marketResponseJson (line 101) | type marketResponseJson struct constant marketChartDays (line 122) | marketChartDays = 21 function fetchMarketsDataFromYahoo (line 124) | func fetchMarketsDataFromYahoo(marketRequests []marketRequest) (marketLi... FILE: internal/glance/widget-monitor.go type monitorWidget (line 18) | type monitorWidget struct method initialize (line 37) | func (widget *monitorWidget) initialize() error { method update (line 43) | func (widget *monitorWidget) update(ctx context.Context) { method Render (line 78) | func (widget *monitorWidget) Render() template.HTML { function statusCodeToText (line 86) | func statusCodeToText(status int, altStatusCodes []int) string { function statusCodeToStyle (line 109) | func statusCodeToStyle(status int, altStatusCodes []int) string { type SiteStatusRequest (line 117) | type SiteStatusRequest struct type siteStatus (line 128) | type siteStatus struct function fetchSiteStatusTask (line 135) | func fetchSiteStatusTask(statusRequest *SiteStatusRequest) (siteStatus, ... function fetchStatusForSites (line 185) | func fetchStatusForSites(requests []*SiteStatusRequest) ([]siteStatus, e... FILE: internal/glance/widget-old-calendar.go type oldCalendarWidget (line 11) | type oldCalendarWidget struct method initialize (line 17) | func (widget *oldCalendarWidget) initialize() error { method update (line 23) | func (widget *oldCalendarWidget) update(ctx context.Context) { method Render (line 28) | func (widget *oldCalendarWidget) Render() template.HTML { type calendar (line 32) | type calendar struct function newCalendar (line 42) | func newCalendar(now time.Time, startSunday bool) *calendar { function daysInMonth (line 84) | func daysInMonth(m time.Month, year int) int { FILE: internal/glance/widget-reddit.go type redditWidget (line 21) | type redditWidget struct method initialize (line 49) | func (widget *redditWidget) initialize() error { method update (line 94) | func (widget *redditWidget) update(ctx context.Context) { method Render (line 112) | func (widget *redditWidget) Render() template.HTML { method parseCustomCommentsURL (line 152) | func (widget *redditWidget) parseCustomCommentsURL(subreddit, postId, ... method fetchSubredditPosts (line 160) | func (widget *redditWidget) fetchSubredditPosts() (forumPostList, erro... method fetchNewAppAccessToken (line 283) | func (widget *redditWidget) fetchNewAppAccessToken() error { type subredditResponseJson (line 125) | type subredditResponseJson struct FILE: internal/glance/widget-releases.go type releasesWidget (line 20) | type releasesWidget struct method initialize (line 31) | func (widget *releasesWidget) initialize() error { method update (line 55) | func (widget *releasesWidget) update(ctx context.Context) { method Render (line 73) | func (widget *releasesWidget) Render() template.HTML { type releaseSource (line 77) | type releaseSource constant releaseSourceCodeberg (line 80) | releaseSourceCodeberg releaseSource = "codeberg" constant releaseSourceGithub (line 81) | releaseSourceGithub releaseSource = "github" constant releaseSourceGitlab (line 82) | releaseSourceGitlab releaseSource = "gitlab" constant releaseSourceDockerHub (line 83) | releaseSourceDockerHub releaseSource = "dockerhub" type appRelease (line 86) | type appRelease struct type appReleaseList (line 96) | type appReleaseList method sortByNewest (line 98) | func (r appReleaseList) sortByNewest() appReleaseList { type releaseRequest (line 106) | type releaseRequest struct method UnmarshalYAML (line 114) | func (r *releaseRequest) UnmarshalYAML(node *yaml.Node) error { function fetchLatestReleases (line 156) | func fetchLatestReleases(requests []*releaseRequest) (appReleaseList, er... function fetchLatestReleaseTask (line 190) | func fetchLatestReleaseTask(request *releaseRequest) (*appRelease, error) { type githubReleaseResponseJson (line 205) | type githubReleaseResponseJson struct function fetchLatestGithubRelease (line 214) | func fetchLatestGithubRelease(request *releaseRequest) (*appRelease, err... type dockerHubRepositoryTagsResponse (line 261) | type dockerHubRepositoryTagsResponse struct type dockerHubRepositoryTagResponse (line 265) | type dockerHubRepositoryTagResponse struct constant dockerHubOfficialRepoTagURLFormat (line 270) | dockerHubOfficialRepoTagURLFormat = "https://hub.docker.com/_/%s/tags?na... constant dockerHubRepoTagURLFormat (line 271) | dockerHubRepoTagURLFormat = "https://hub.docker.com/r/%s/tags?name=%s" constant dockerHubTagsURLFormat (line 272) | dockerHubTagsURLFormat = "https://hub.docker.com/v2/namespaces/%s/reposi... constant dockerHubSpecificTagURLFormat (line 273) | dockerHubSpecificTagURLFormat = "https://hub.docker.com/v2/namespaces/%s... function fetchLatestDockerHubRelease (line 275) | func fetchLatestDockerHubRelease(request *releaseRequest) (*appRelease, ... type gitlabReleaseResponseJson (line 351) | type gitlabReleaseResponseJson struct function fetchLatestGitLabRelease (line 359) | func fetchLatestGitLabRelease(request *releaseRequest) (*appRelease, err... type codebergReleaseResponseJson (line 390) | type codebergReleaseResponseJson struct function fetchLatestCodebergRelease (line 396) | func fetchLatestCodebergRelease(request *releaseRequest) (*appRelease, e... FILE: internal/glance/widget-repository.go type repositoryWidget (line 15) | type repositoryWidget struct method initialize (line 25) | func (widget *repositoryWidget) initialize() error { method update (line 43) | func (widget *repositoryWidget) update(ctx context.Context) { method Render (line 59) | func (widget *repositoryWidget) Render() template.HTML { type repository (line 63) | type repository struct type githubTicket (line 75) | type githubTicket struct type githubCommitDetails (line 81) | type githubCommitDetails struct type githubRepositoryResponseJson (line 88) | type githubRepositoryResponseJson struct type githubTicketResponseJson (line 94) | type githubTicketResponseJson struct type gitHubCommitResponseJson (line 103) | type gitHubCommitResponseJson struct function fetchRepositoryDetailsFromGithub (line 114) | func fetchRepositoryDetailsFromGithub(repo string, token string, maxPRs ... FILE: internal/glance/widget-rss.go type rssWidget (line 31) | type rssWidget struct method initialize (line 49) | func (widget *rssWidget) initialize() error { method update (line 80) | func (widget *rssWidget) update(ctx context.Context) { method Render (line 98) | func (widget *rssWidget) Render() template.HTML { method fetchItemsFromFeeds (line 152) | func (widget *rssWidget) fetchItemsFromFeeds() (rssFeedItemList, error) { method fetchItemsFromFeedTask (line 192) | func (widget *rssWidget) fetchItemsFromFeedTask(request rssFeedRequest... type cachedRSSFeed (line 114) | type cachedRSSFeed struct type rssFeedItem (line 120) | type rssFeedItem struct type rssFeedRequest (line 131) | type rssFeedRequest struct type rssFeedItemList (line 142) | type rssFeedItemList method sortByNewest (line 144) | func (f rssFeedItemList) sortByNewest() rssFeedItemList { function findThumbnailInItemExtensions (line 346) | func findThumbnailInItemExtensions(item *gofeed.Item) string { function recursiveFindThumbnailInExtensions (line 356) | func recursiveFindThumbnailInExtensions(extensions map[string][]gofeedex... function sanitizeFeedDescription (line 378) | func sanitizeFeedDescription(description string) string { function shortenFeedDescriptionLen (line 392) | func shortenFeedDescriptionLen(description string, maxLen int) string { FILE: internal/glance/widget-search.go type SearchBang (line 11) | type SearchBang struct type searchWidget (line 17) | type searchWidget struct method initialize (line 43) | func (widget *searchWidget) initialize() error { method Render (line 76) | func (widget *searchWidget) Render() template.HTML { function convertSearchUrl (line 28) | func convertSearchUrl(url string) string { FILE: internal/glance/widget-server-stats.go type serverStatsWidget (line 18) | type serverStatsWidget struct method initialize (line 23) | func (widget *serverStatsWidget) initialize() error { method update (line 42) | func (widget *serverStatsWidget) update(context.Context) { method Render (line 83) | func (widget *serverStatsWidget) Render() template.HTML { type serverStatsRequest (line 87) | type serverStatsRequest struct function fetchRemoteServerInfo (line 102) | func fetchRemoteServerInfo(infoReq *serverStatsRequest) (*sysinfo.System... FILE: internal/glance/widget-shared.go constant twitchGqlEndpoint (line 9) | twitchGqlEndpoint = "https://gql.twitch.tv/gql" constant twitchGqlClientId (line 10) | twitchGqlClientId = "kimne78kx3ncx6brgo4mv6wki5h1ko" type forumPost (line 14) | type forumPost struct type forumPostList (line 28) | type forumPostList method calculateEngagement (line 34) | func (p forumPostList) calculateEngagement() { method sortByEngagement (line 60) | func (p forumPostList) sortByEngagement() { constant depreciatePostsOlderThanHours (line 30) | depreciatePostsOlderThanHours = 7 constant maxDepreciation (line 31) | maxDepreciation = 0.9 constant maxDepreciationAfterHours (line 32) | maxDepreciationAfterHours = 24 FILE: internal/glance/widget-split-column.go type splitColumnWidget (line 11) | type splitColumnWidget struct method initialize (line 17) | func (widget *splitColumnWidget) initialize() error { method update (line 31) | func (widget *splitColumnWidget) update(ctx context.Context) { method setProviders (line 35) | func (widget *splitColumnWidget) setProviders(providers *widgetProvide... method requiresUpdate (line 39) | func (widget *splitColumnWidget) requiresUpdate(now *time.Time) bool { method Render (line 43) | func (widget *splitColumnWidget) Render() template.HTML { FILE: internal/glance/widget-todo.go type todoWidget (line 9) | type todoWidget struct method initialize (line 15) | func (widget *todoWidget) initialize() error { method Render (line 22) | func (widget *todoWidget) Render() template.HTML { FILE: internal/glance/widget-twitch-channels.go type twitchChannelsWidget (line 17) | type twitchChannelsWidget struct method initialize (line 25) | func (widget *twitchChannelsWidget) initialize() error { method update (line 42) | func (widget *twitchChannelsWidget) update(ctx context.Context) { method Render (line 58) | func (widget *twitchChannelsWidget) Render() template.HTML { type twitchChannel (line 62) | type twitchChannel struct type twitchChannelList (line 75) | type twitchChannelList method sortByViewers (line 77) | func (channels twitchChannelList) sortByViewers() { method sortByLive (line 83) | func (channels twitchChannelList) sortByLive() { type twitchOperationResponse (line 89) | type twitchOperationResponse struct type twitchChannelShellOperationResponse (line 96) | type twitchChannelShellOperationResponse struct type twitchStreamMetadataOperationResponse (line 107) | type twitchStreamMetadataOperationResponse struct constant twitchChannelStatusOperationRequestBody (line 122) | twitchChannelStatusOperationRequestBody = `[ function fetchChannelFromTwitchTask (line 133) | func fetchChannelFromTwitchTask(channel string) (twitchChannel, error) { function fetchChannelsFromTwitch (line 208) | func fetchChannelsFromTwitch(channelLogins []string) (twitchChannelList,... FILE: internal/glance/widget-twitch-top-games.go type twitchGamesWidget (line 16) | type twitchGamesWidget struct method initialize (line 24) | func (widget *twitchGamesWidget) initialize() error { method update (line 41) | func (widget *twitchGamesWidget) update(ctx context.Context) { method Render (line 51) | func (widget *twitchGamesWidget) Render() template.HTML { type twitchCategory (line 55) | type twitchCategory struct type twitchDirectoriesOperationResponse (line 67) | type twitchDirectoriesOperationResponse struct constant twitchDirectoriesOperationRequestBody (line 77) | twitchDirectoriesOperationRequestBody = `[ function fetchTopGamesFromTwitch (line 81) | func fetchTopGamesFromTwitch(exclude []string, limit int) ([]twitchCateg... FILE: internal/glance/widget-utils.go constant defaultClientTimeout (line 24) | defaultClientTimeout = 5 * time.Second type requestDoer (line 42) | type requestDoer interface function getBrowserUserAgentHeader (line 49) | func getBrowserUserAgentHeader() string { function setBrowserUserAgentHeader (line 58) | func setBrowserUserAgentHeader(request *http.Request) { function decodeJsonFromRequest (line 62) | func decodeJsonFromRequest[T any](client requestDoer, request *http.Requ... function decodeJsonFromRequestTask (line 95) | func decodeJsonFromRequestTask[T any](client requestDoer) func(*http.Req... function decodeXmlFromRequest (line 102) | func decodeXmlFromRequest[T any](client requestDoer, request *http.Reque... function decodeXmlFromRequestTask (line 135) | func decodeXmlFromRequestTask[T any](client requestDoer) func(*http.Requ... type workerPoolTask (line 141) | type workerPoolTask struct type workerPoolJob (line 148) | type workerPoolJob struct constant defaultNumWorkers (line 155) | defaultNumWorkers = 10 method withWorkers (line 157) | func (job *workerPoolJob[I, O]) withWorkers(workers int) *workerPoolJob[... function newJob (line 175) | func newJob[I any, O any](task func(I) (O, error), data []I) *workerPool... function workerPoolDo (line 184) | func workerPoolDo[I any, O any](job *workerPoolJob[I, O]) ([]O, []error,... FILE: internal/glance/widget-videos.go constant videosWidgetPlaylistPrefix (line 15) | videosWidgetPlaylistPrefix = "playlist:" type videosWidget (line 23) | type videosWidget struct method initialize (line 36) | func (widget *videosWidget) initialize() error { method update (line 66) | func (widget *videosWidget) update(ctx context.Context) { method Render (line 80) | func (widget *videosWidget) Render() template.HTML { type youtubeFeedResponseXml (line 95) | type youtubeFeedResponseXml struct function parseYoutubeFeedTime (line 113) | func parseYoutubeFeedTime(t string) time.Time { type video (line 122) | type video struct type videoList (line 131) | type videoList method sortByNewest (line 133) | func (v videoList) sortByNewest() videoList { function fetchYoutubeChannelUploads (line 141) | func fetchYoutubeChannelUploads(channelOrPlaylistIDs []string, videoUrlT... FILE: internal/glance/widget-weather.go type weatherWidget (line 20) | type weatherWidget struct method initialize (line 35) | func (widget *weatherWidget) initialize() error { method update (line 59) | func (widget *weatherWidget) update(ctx context.Context) { method Render (line 79) | func (widget *weatherWidget) Render() template.HTML { type weather (line 83) | type weather struct method WeatherCodeAsString (line 93) | func (w *weather) WeatherCodeAsString() string { type openMeteoPlacesResponseJson (line 101) | type openMeteoPlacesResponseJson struct type openMeteoPlaceResponseJson (line 105) | type openMeteoPlaceResponseJson struct type openMeteoWeatherResponseJson (line 115) | type openMeteoWeatherResponseJson struct type weatherColumn (line 133) | type weatherColumn struct function expandCountryAbbreviations (line 145) | func expandCountryAbbreviations(name string) string { function parsePlaceName (line 157) | func parsePlaceName(name string) (string, string) { function fetchOpenMeteoPlaceFromName (line 171) | func fetchOpenMeteoPlaceFromName(location string) (*openMeteoPlaceRespon... function fetchWeatherForOpenMeteoPlace (line 213) | func fetchWeatherForOpenMeteoPlace(place *openMeteoPlaceResponseJson, un... FILE: internal/glance/widget.go function newWidget (line 20) | func newWidget(widgetType string) (widget, error) { type widgets (line 93) | type widgets method UnmarshalYAML (line 95) | func (w *widgets) UnmarshalYAML(node *yaml.Node) error { type widget (line 126) | type widget interface type cacheType (line 141) | type cacheType constant cacheTypeInfinite (line 144) | cacheTypeInfinite cacheType = iota constant cacheTypeDuration (line 145) | cacheTypeDuration constant cacheTypeOnTheHour (line 146) | cacheTypeOnTheHour type widgetBase (line 149) | type widgetBase struct method requiresUpdate (line 173) | func (w *widgetBase) requiresUpdate(now *time.Time) bool { method IsWIP (line 185) | func (w *widgetBase) IsWIP() bool { method update (line 189) | func (w *widgetBase) update(ctx context.Context) { method GetID (line 193) | func (w *widgetBase) GetID() uint64 { method setID (line 197) | func (w *widgetBase) setID(id uint64) { method setHideHeader (line 201) | func (w *widgetBase) setHideHeader(value bool) { method handleRequest (line 205) | func (widget *widgetBase) handleRequest(w http.ResponseWriter, r *http... method GetType (line 209) | func (w *widgetBase) GetType() string { method setProviders (line 213) | func (w *widgetBase) setProviders(providers *widgetProviders) { method renderTemplate (line 217) | func (w *widgetBase) renderTemplate(data any, t *template.Template) te... method withTitle (line 243) | func (w *widgetBase) withTitle(title string) *widgetBase { method withTitleURL (line 251) | func (w *widgetBase) withTitleURL(titleURL string) *widgetBase { method withCacheDuration (line 259) | func (w *widgetBase) withCacheDuration(duration time.Duration) *widget... method withCacheOnTheHour (line 271) | func (w *widgetBase) withCacheOnTheHour() *widgetBase { method withNotice (line 277) | func (w *widgetBase) withNotice(err error) *widgetBase { method withError (line 283) | func (w *widgetBase) withError(err error) *widgetBase { method canContinueUpdateAfterHandlingErr (line 293) | func (w *widgetBase) canContinueUpdateAfterHandlingErr(err error) bool { method getNextUpdateTime (line 327) | func (w *widgetBase) getNextUpdateTime() time.Time { method scheduleNextUpdate (line 343) | func (w *widgetBase) scheduleNextUpdate() *widgetBase { method scheduleEarlyUpdate (line 350) | func (w *widgetBase) scheduleEarlyUpdate() *widgetBase { type widgetProviders (line 169) | type widgetProviders struct FILE: main.go function main (line 9) | func main() { FILE: pkg/sysinfo/sysinfo.go type timestampJSON (line 20) | type timestampJSON struct method MarshalJSON (line 24) | func (t timestampJSON) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 28) | func (t *timestampJSON) UnmarshalJSON(data []byte) error { type SystemInfo (line 38) | type SystemInfo struct type MountpointInfo (line 68) | type MountpointInfo struct type SystemInfoRequest (line 76) | type SystemInfoRequest struct type MointpointRequest (line 82) | type MointpointRequest struct type cacheableHostInfo (line 90) | type cacheableHostInfo struct function getHostInfo (line 99) | func getHostInfo() (cacheableHostInfo, error) { function Collect (line 124) | func Collect(req *SystemInfoRequest) (*SystemInfo, []error) { function inferCPUTempSensor (line 284) | func inferCPUTempSensor(sensors []sensors.TemperatureStat) *sensors.Temp...