A live status widget for Hund.io status pages
Add this script to your head or footer:
<script src="https://libraries.hund.io/status-js/status-3.9.0.js"></script>
Create an empty element with a selector (e.g. <div id="status"></div>
) where you want the widget to appear.
Configure the widget:
<script>
var statusWidget = new Status.Widget({
hostname: "example.hund.io",
selector: "#status"
});
</script>
{
hostname: "", // The hostname of your status page (custom domains supported)
component: "", // Show a specific component's status by providing its id
selector: "", // CSS selector of an existing element for widget placement
privacyBypassToken: "", // A Privacy Bypass Token to allow visitors to view this widget without additional authentication (requires the Privacy Control upgrade)
includePrivacyBypassTokenInLinks: false, // Include the given Privacy Bypass Token in any widget links to the status page, so that visitors can view the status page itself through the widget without additional authentication
css: true, // Inject the default CSS styles
debug: false, // Log debugging messages
outOfOffice: false, // Toggles out of office status change (see section below)
linkTarget: "_blank", // The link target for outbound links (see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target)
display: {
hideOnError: true, // Hide the widget if a connection cannot be established
pane: true, // Display the pane dropdown
paneStatistics: true, // Display pane statistics (i.e. uptime, incident-free streak)
ledOnly: false, // Show only the LED indicator, hiding the status text
panePosition: "bottom-right", // One of "top-left", "top-right", "bottom-left", "bottom-right"
ledPosition: "left", // Either "left" or "right"
statistic: {
uptimeDecimals: 4 // Number of decimals for uptime pane statistic
minIncidentFreeStreak: 86400 // Minimum number of incident free streak seconds required to display
},
outOfOffice: {
resetStatusLed: false, // Sets the status LED indicator to it's default gray color
officeOpenHour: 0, // An integer representing the hour (24-hour, UTC if no timezone)
officeCloseHour: 24, // An integer representing the hour (24-hour, UTC if no timezone)
timezone: "" // See the section below for setting a timezone
}
},
i18n: {
heading: "Issues",
toggle: "${state}", // Other variables: percentUptime and incidentFreeStreak
loading: "Loading status...",
error: "Connection error",
statistic: {
streak: "No events for ${duration}!",
uptime: "${percent}% Uptime"
},
issue: {
scheduled: "Scheduled",
empty: {
operational: "There are currently no reported issues."
degraded: "There are currently no reported issues, but we have detected that at least one component is degraded."
outage: "There are currently no reported issues, but we have detected outages on at least one component."
}
},
state: {
operational: "Operational",
degraded: "Degraded",
outage: "Outage",
pending: "Pending",
outOfOffice: "Out of Office"
},
linkBack: "View Status Page",
dates: { // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#Parameters
locale: "",
options: {}
},
time: {
distanceInWords: {
halfAMinute: "half a minute",
lessThanXSeconds: {
one: "less than 1 second",
other: "less than ${count} seconds"
},
xSeconds: {
one: "1 second",
other: "${count} seconds"
},
lessThanXMinutes: {
one: "less than a minute",
other: "less than ${count} minutes"
},
xMinutes: {
one: "1 minute",
other: "${count} minutes"
},
aboutXHours: {
one: "about 1 hour",
other: "about ${count} hours"
},
xDays: {
one: "1 day",
other: "${count} days"
},
aboutXMonths: {
one: "about 1 month",
other: "about ${count} months"
},
xMonths: {
one: "1 month",
other: "${count} months"
},
aboutXYears: {
one: "about 1 year",
other: "about ${count} years"
},
overXYears: {
one: "over 1 year",
other: "over ${count} years"
},
almostXYears: {
one: "almost 1 year",
other: "almost ${count} years"
}
}
}
}
}
You may wish to display an "out of office" status when outside of business hours. To do so, set the outOfOffice
option to true
, then configure the feature within the display
object as seen above.
By default, UTC is used. Moment Timezone (with data) must be included on pages if you wish to use a specific timezone and respect DST changes. It will be used when detected. Specify a timezone as so:
var statusWidget = new Status.Widget({
hostname: "example.hund.io",
selector: "#status",
outOfOffice: true,
display: {
outOfOffice: {
officeOpenHour: 9,
officeCloseHour: 17,
timezone: "America/Los_Angeles"
}
}
});