多个 Digital Ocean 服务中断
Multiple Digital Ocean services down

原始链接: https://status.digitalocean.com/incidents/lgt5xs2843rx

这段代码主要集中在增强组件状态页面的显示和功能,可能是一个系统状态仪表盘。它将组件重新组织为“全局”和“区域”部分,优先显示具有活动问题的组件(红色、黄色、橙色或蓝色状态)。布局调整包括切换列显示和修改特定状态的背景颜色。 实施了多项UI改进:移除正常运行时间链接,添加工具提示和ARIA标签以提高可访问性,以及为图例添加视觉间距。代码还在历史页面添加了状态图例。 进一步的增强针对过滤器按钮的UX,包括“清除选择”选项和关于旧事件的过滤器限制说明。通过调整Android和iPhone设备上的组件宽度来解决移动响应问题。最后,长的事件描述被截断并提供“展开/折叠”功能以提高可读性。

DigitalOcean 正在经历多项服务中断,包括 API、应用平台、负载均衡器和 Spaces(全球范围)。Hacker News 的用户推测问题源于大规模的 Cloudflare 中断,因为 DigitalOcean Spaces CDN 使用 Cloudflare 基础设施。 虽然一些用户报告他们的 DigitalOcean “droplets”(虚拟机)仍然可用,但 CDN 和相关服务受到影响。DigitalOcean 尚未官方说明原因,但普遍认为与 Cloudflare 的问题有关。一些评论员指出 Cloudflare 中断正变得越来越频繁和具有破坏性。情况仍在持续,随着更多信息的出现,预计会有更新。
相关文章

原文

').appendTo('.regional') $('.components-container').appendTo('.regional') // Global services layout $('

').prependTo('.components-section') $('').appendTo('.global') $('.components-container').clone().appendTo('.global') // build layout table for global services with three rows var global_containers = $('.global > .components-container').find('.component-container'); global_containers.each(function(){ if($(this).find('.status-red').length || $(this).find('.status-yellow').length || $(this).find('.status-orange').length || $(this).find('.status-blue').length){ $(this).prependTo('.global > .components-container'); } if($(this).find('.child-components-container').length){ $(this).remove(); } }); $(function() { $('.components-container').toggleClass('one-column').toggleClass('three-columns') }); // build layout table for regional services var regional_containers = $('.regional > .components-container').find('.component-container'); regional_containers.each(function(){ if($(this).find('.status-red').length || $(this).find('.status-yellow').length || $(this).find('.status-orange').length || $(this).find('.status-blue').length){ $(this).find('.child-components-container > .component-inner-container').each(function(){ if(!$(this).hasClass('status-green')) { this.style.setProperty('background-color', 'rgba(243, 245, 249, 0.97)','important'); this.style.setProperty('margin-bottom', '0','important'); } }); $(this).prependTo('.regional > .components-container'); } if($(this).find('.child-components-container').length == 0){ $(this).remove(); } }) // remove uptime $(function() { $('.components-section > .components-uptime-link').remove(); }); // tooltips for status images in incident header $(function() { $('.icon-indicator.investigating').attr('title','Investigating'); $('.icon-indicator.identified').attr('title','Issue Identified'); $('.icon-indicator.monitoring').attr('title','Monitoring'); $('.icon-indicator.maintenance').attr('title','Maintenance'); }); // add aria-labels $(function() { $('.fa-check').attr('aria-label','Operational'); $('.fa-minus-square').attr('aria-label','Degraded Performance'); $('.fa-exclamation-triangle').attr('aria-label','Partial Outage'); $('.fa-times').attr('aria-label','Major Outage'); $('.fa-wrench').attr('aria-label','Maintenance'); $('.component-statuses-legend').attr('aria-label','Statuses Legend'); $('.container > .logo > img').attr('alt','DigitalOcean logo'); }); // spacer to visually separate main page legend $(function() { $('
').prependTo('.container > .components-section > .component-statuses-legend'); }); // add legend to history page $(function() { if ($('[data-react-class=HistoryIndex]').length) { $('
Impact levels• Critical • Major • Minor • Maintenance • Retroactive
').insertAfter('.pagination'); } }); // Filter button UX improvements function resetSelection() { $("input:checkbox").each(function() { if(this.checked == true) { this.click(); } }); } $(function() { if ($('[data-react-class=HistoryIndex]').length) { window.addEventListener('click', function(e) { if($(event.target).closest('.grouped-items-selector').length === 0 && $(event.target).closest('.component-selector').length === 0 && $(event.target).closest('.cc-window').length === 0 ){ if ($('.grouped-items-selector').length) { $('.component-selector > span').click(); e.stopImmediatePropagation(); } } else { if ($('.grouped-items-selector').length && !$('#reset-selection').length) { $('

  - Clear selection

').prependTo('.grouped-items-selector'); $('#reset-selection').click(resetSelection); e.stopImmediatePropagation(); } } }); } }); $(function() { $('* Note: Incidents before May 10th, 2023 were backfilled and don\'t support the filter feature.').prependTo('.months-container'); }); $(function() { if (/Android|iPhone/i.test(navigator.userAgent)) { $( '.component-container' ).each(function () { this.style.setProperty( 'width', '95%', 'important' ); }); } }); // Shorten header incident describtions function revealTruncated (incidentID) { let truncateDivName = "#truncate_" + incidentID; let expandLinkDivName = "#expand_" + incidentID; let truncateLink = " [less] " $(truncateDivName).css('display','inline'); $(expandLinkDivName).insertAfter(truncateDivName) $(expandLinkDivName).html(truncateLink); } function hideTruncated (incidentID) { let truncateDivName = "#truncate_" + incidentID; let expandLinkDivName = "#expand_" + incidentID; let truncateLink = " [...] " $(truncateDivName).css('display','None'); $(expandLinkDivName).insertBefore(truncateDivName) $(expandLinkDivName).html(truncateLink); } $('.update > span.whitespace-pre-wrap').each(function() { let textLength = $(this).text().split(/\s+/).length; if (textLength > 81){ // get incident ID let incidentUrl = $(this).closest('.unresolved-incident').find('a')[0]; let incidentID = (String(incidentUrl)).split("incidents/")[1]; let firstPart = $(this).html().split(/\s+/).slice(0,80).join(' '); let secondPart = '

' + $(this).html().split(/\s+/).slice(80,textLength).join(' ') + '

'; let expandLink = "" $(this).html(firstPart + expandLink + secondPart); } });
联系我们 contact @ memedata.com