ACK and pushed with one minor change: this patch drops pool/_new.haml (moves content to pool/new.haml), I removed it from the patch because _new partial is required for rendering js reply.
Jan
On 06/17/2011 10:19 AM, kenkeiter@redhat.com wrote:
From: Kenneth Keiterkkeiter@redhat.com
src/app/stylesheets/layout.scss | 459 ++++++++++++-------- src/app/views/pools/_deployments.haml | 20 +- src/app/views/pools/_new.haml | 9 - src/app/views/pools/_pretty_list.haml | 7 +- src/app/views/pools/_scoreboard_index.haml | 8 +- src/app/views/pools/new.haml | 10 +- src/features/step_definitions/web_steps.rb | 2 +- src/public/images/deployment_small_alert_bg.png | Bin 0 -> 1146 bytes src/public/images/deployment_small_failure_bg.png | Bin 0 -> 937 bytes .../images/deployment_small_icon_instances.png | Bin 0 -> 332 bytes src/public/images/deployment_small_icon_uptime.png | Bin 0 -> 471 bytes src/public/images/deployment_small_pending_bg.png | Bin 0 -> 959 bytes 12 files changed, 315 insertions(+), 200 deletions(-) delete mode 100644 src/app/views/pools/_new.haml create mode 100644 src/public/images/deployment_small_alert_bg.png create mode 100644 src/public/images/deployment_small_failure_bg.png create mode 100644 src/public/images/deployment_small_icon_instances.png create mode 100644 src/public/images/deployment_small_icon_uptime.png create mode 100644 src/public/images/deployment_small_pending_bg.png
diff --git a/src/app/stylesheets/layout.scss b/src/app/stylesheets/layout.scss index 44d37dc..18fff1c 100644 --- a/src/app/stylesheets/layout.scss +++ b/src/app/stylesheets/layout.scss @@ -1,6 +1,6 @@ /* ########################################################################### Generated SCSS for Aeolus UI [aeolus_ui] -Compiled on 2011-06-16 17:12:35 -0700 +Compiled on 2011-06-16 22:42:20 -0700 ########################################################################### */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1718,180 +1718,6 @@ section.content-section{ margin-top: 0px; }
/* Deployment Array */
ul.deployable-cards{
margin-top: 16px;
list-style: none;
}
ul.deployable-cards> li{
display: inline-block;
}
ul.deployable-cards> li + li{
margin-left: 26px;
}
div.deployable{
background-color: #e5e5e5;
-webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px;
border: 1px solid #ccc;
width: 154px;
height: 154px;
font-family: $font-family-primary;
h3{
font-size: 13px;
font-weight: 200;
color: #333;
padding: 6px;
display: block;
}
hr{
background-image: url('../../images/deploy_separator_dark.png') repeat-x bottom left;
display: block;
height: 2px;
}
span.alert{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
}
span.alert.warn{
padding-left: 24px;
background: transparent url('../../images/alert_icon_warn_white.png') no-repeat 6px 0px;
}
ul.statistics{
list-style: none;
margin: 8px;
li{
display: block;
span.uptime{
display: inline-block;
font-size: 14px;
height: 16px;
padding: 2px;
padding-left: 24px;
color: #fff;
background: transparent url('../../images/deploy_icon_uptime.png') no-repeat 6px 0px;
}
span.instance{
display: inline-block;
height: 16px;
padding: 2px;
padding-left: 24px;
font-size: 14px;
color: #fff;
background: transparent url('../../images/deploy_icon_instance.png') no-repeat 6px 0px;
}
}
li + li{
margin-top: 6px;
}
}
span.provider{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
padding-left: 34px;
background: transparent url('../../images/deploy_icon_provider.png') no-repeat 6px 0px;
}
}
div.deployable.alert{
background-image: -moz-linear-gradient(top, rgba(174,4,4,1), rgba(136,0,0, 1));
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(174,4,4,1)), to(rgba(136,0,0, 1)));
-webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px;
border: 1px solid #990000;
width: 154px;
height: 154px;
font-family: $font-family-primary;
h3{
font-size: 13px;
font-weight: 200;
color: #fff;
padding: 6px;
display: block;
background-color: #A10303;
}
hr{
background-image: url('../../images/deploy_separator_dark.png') repeat-x bottom left;
display: block;
height: 2px;
}
span.alert{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
}
span.alert.warn{
padding-left: 24px;
background: transparent url('../../images/alert_icon_warn_white.png') no-repeat 6px 0px;
}
ul.statistics{
list-style: none;
margin: 8px;
li{
display: block;
span.uptime{
display: inline-block;
font-size: 14px;
height: 16px;
padding: 2px;
padding-left: 24px;
color: #fff;
background: transparent url('../../images/deploy_icon_uptime.png') no-repeat 6px 0px;
}
span.instance{
display: inline-block;
height: 16px;
padding: 2px;
padding-left: 24px;
font-size: 14px;
color: #fff;
background: transparent url('../../images/deploy_icon_instance.png') no-repeat 6px 0px;
}
}
li + li{
margin-top: 6px;
}
}
span.provider{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
padding-left: 34px;
background: transparent url('../../images/deploy_icon_provider.png') no-repeat 6px 0px;
}
}
}
header.page-header + section.content-section{
@@ -2222,6 +2048,289 @@ header + div.pool.overview{ }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Deployment Components -- v.0.0.1 [deployment] (deployment.scss) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+$font-family-base: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; +$font-family-em: "Lucida Sans", "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; +$font-family-primary: Helvetica, Arial, "Lucida Grande", sans-serif;
+/* Deployment Array */
+ul.deployable-cards{
- margin-top: 16px;
- list-style: none;
- li{
- display: inline-block;
- }
- li + li{
- margin-left: 26px;
- }
- div.deployable{
- background-color: #e5e5e5;
- -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px;
- border: 1px solid #ccc;
- width: 154px;
- height: 154px;
- font-family: $font-family-primary;
- h3{
font-size: 13px;
font-weight: 200;
color: #333;
padding: 6px;
display: block;
- }
- hr{
background-image: url('../../images/deploy_separator_dark.png') repeat-x bottom left;
display: block;
height: 2px;
- }
- span.alert{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
- }
- span.alert.warn{
padding-left: 24px;
background: transparent url('../../images/alert_icon_warn_white.png') no-repeat 6px 0px;
- }
- ul.statistics{
list-style: none;
margin: 8px;
li{
display: block;
span.uptime{
display: inline-block;
font-size: 14px;
height: 16px;
padding: 2px;
padding-left: 24px;
color: #fff;
background: transparent url('../../images/deploy_icon_uptime.png') no-repeat 6px 0px;
}
span.instance{
display: inline-block;
height: 16px;
padding: 2px;
padding-left: 24px;
font-size: 14px;
color: #fff;
background: transparent url('../../images/deploy_icon_instance.png') no-repeat 6px 0px;
}
}
li + li{
margin-top: 6px;
}
- }
- span.provider{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
padding-left: 34px;
background: transparent url('../../images/deploy_icon_provider.png') no-repeat 6px 0px;
- }
- }
- div.deployable.alert{
- background-image: -moz-linear-gradient(top, rgba(174,4,4,1), rgba(136,0,0, 1));
- background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(174,4,4,1)), to(rgba(136,0,0, 1)));
- -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px;
- border: 1px solid #990000;
- width: 154px;
- height: 154px;
- font-family: $font-family-primary;
- h3{
font-size: 13px;
font-weight: 200;
color: #fff;
padding: 6px;
display: block;
background-color: #A10303;
- }
- hr{
background-image: url('../../images/deploy_separator_dark.png') repeat-x bottom left;
display: block;
height: 2px;
- }
- span.alert{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
- }
- span.alert.warn{
padding-left: 24px;
background: transparent url('../../images/alert_icon_warn_white.png') no-repeat 6px 0px;
- }
- ul.statistics{
list-style: none;
margin: 8px;
li{
display: block;
span.uptime{
display: inline-block;
font-size: 14px;
height: 16px;
padding: 2px;
padding-left: 24px;
color: #fff;
background: transparent url('../../images/deploy_icon_uptime.png') no-repeat 6px 0px;
}
span.instance{
display: inline-block;
height: 16px;
padding: 2px;
padding-left: 24px;
font-size: 14px;
color: #fff;
background: transparent url('../../images/deploy_icon_instance.png') no-repeat 6px 0px;
}
}
li + li{
margin-top: 6px;
}
- }
- span.provider{
display: block;
margin: 10px;
font-size: 13px;
font-weight: 200;
color: #fff;
padding-left: 34px;
background: transparent url('../../images/deploy_icon_provider.png') no-repeat 6px 0px;
- }
- }
+}
+/********************************************* Small Deployable Card Arrays */
+$deployment-small-height: 84px; +$deployment-small-width: 174px; +$deployment-small-padding: 8px;
+ul.deployment-array.small{
- margin-top: 10px;
- list-style: none;
- display: table;
- li.deployment{
- display: table-cell;
- float: left;
- border: 1px solid #ccc;
- background-color: #efefef;
- -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;
- padding: $deployment-small-padding;
- width: $deployment-small-width - ($deployment-small-padding * 2);
- height: $deployment-small-height - ($deployment-small-padding * 2);
- overflow: hidden;
- h3.name{
font-family: $font-family-base;
font-weight: normal;
font-size: 13px;
margin-bottom: 14px;
- }
- dl.statistics{
ul{list-style: none;}
li{display: inline-block;}
li.left{text-align: left;}
li.right{text-align: right; float: right;}
dt{font-size: 9px; text-transform: uppercase; padding: 4px; color: #999; display: block; margin-bottom: 4px;}
dt.uptime{
padding-left: 20px;
background: url('../../images/deployment_small_icon_uptime.png') no-repeat top left;
}
dt.count.instances{
padding-right: 20px;
background: url('../../images/deployment_small_icon_instances.png') no-repeat top right;
}
dd{
font-family: $font-family-primary;
font-size: 13px;
color: #666;
}
- }
- }
- li.deployment + li.deployment{
- margin-left: 14px;
- }
- li.deployment.pending, li.deployment.alert, li.deployment.failure{
- h3.name{margin: 0; margin-bottom: 8px; color: #fff;}
- }
- /* pending */
- li.deployment.pending{
- background: #efefef url('../../images/deployment_small_pending_bg.png') no-repeat bottom right;
- h3.name{color: #333;}
- span.status{
font-family: $font-family-primary;
font-size: 13px;
color: #333;
- }
- }
- /* alert */
- li.deployment.alert{
- background: url('../../images/deployment_small_alert_bg.png') no-repeat bottom right;
- span.alert-type{display: block; font-size: 13px; color: #fff; font-weight: normal;}
- span.occurred-at{
font-family: $font-family-primary;
font-size: 11px;
color: #fff;
- }
- }
- /* failure */
- li.deployment.failure{
- background: url('../../images/deployment_small_failure_bg.png') no-repeat bottom right;
- span.failure-type{display: block; font-size: 13px; color: #fff; font-weight: normal;}
- span.occurred-at{
font-family: $font-family-primary;
font-size: 11px;
color: #fff;
- }
- }
+}
+ul.deployment-array.small + ul.deployment-array.small{
- margin-top: 10px;
+}
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Page Footer -- v.0.0.1 [footer] (footer.scss)
diff --git a/src/app/views/pools/_deployments.haml b/src/app/views/pools/_deployments.haml index df14c64..ea2ddb3 100644 --- a/src/app/views/pools/_deployments.haml +++ b/src/app/views/pools/_deployments.haml @@ -1,6 +1,14 @@ -%ul.deployments_list - - deployments.each do |deployment| - %li - =deployment.name - =count_uptime(deployment.created_at) - =deployment.instances.count if deployment.instances +- deployments.in_groups_of(5, false) do |group| + %ul.deployment-array.small + - group.each do |deployment| + %li.deployment + %h3.name + = link_to deployment.name, deployment_path(deployment) + %dl.statistics + %ul + %li.left + %dt.uptime Uptime + %dd= count_uptime(deployment.created_at || Time.now) + %li.right + %dt.instances.count Instances + %dd= deployment.instances.count || 0 \ No newline at end of file diff --git a/src/app/views/pools/_new.haml b/src/app/views/pools/_new.haml deleted file mode 100644 index d5c3a24..0000000 --- a/src/app/views/pools/_new.haml +++ /dev/null @@ -1,9 +0,0 @@ -= render :partial => 'layouts/admin_header' -= render :partial => 'section_header' - -%section.content-section.pools - %header - %h2 Create New Pool - - .content - = render :partial => 'form' diff --git a/src/app/views/pools/_pretty_list.haml b/src/app/views/pools/_pretty_list.haml index f7512db..dd6785b 100644 --- a/src/app/views/pools/_pretty_list.haml +++ b/src/app/views/pools/_pretty_list.haml @@ -4,7 +4,7 @@ .content - @pools.each do |pool| - %div.pool.overview{:id => ['pool', pool.id]} + %div.pool.overview{:id => ['pool', pool.id], :class => ('collapsed' unless pool.deployments.count> 0)} %header %h3.name %a{:href => pool_path(pool)}= pool.name @@ -20,10 +20,10 @@ %dd.count.instance.failure= pool.instances.select {|i| i.state == Instance::STATE_ERROR }.length %li %dt Quota Used - %dd.percentage.quota= pool.quota ? pool.quota.percentage_used.to_s + "%" : 'unlimited' + %dd.percentage.quota= pool.quota ? pool.quota.percentage_used.to_s + "%" : '∞' %a.control{:href => '#'} %span Expand/Collapse - %div.content.deployment-array + %div.content = render :partial => 'deployments', :locals => {:deployments => pool.deployments} %ul.content.actions %li @@ -35,7 +35,6 @@ $(document).ready(function() { $('div.pool').each(function(){ var this_pool = this; - $(this).addClass('collapsed'); $(this).find('header a.control').click(function(){ $(this_pool).toggleClass('collapsed'); return false; diff --git a/src/app/views/pools/_scoreboard_index.haml b/src/app/views/pools/_scoreboard_index.haml index 22aceb6..57578d9 100644 --- a/src/app/views/pools/_scoreboard_index.haml +++ b/src/app/views/pools/_scoreboard_index.haml @@ -17,14 +17,14 @@ %ul.subgroup %li %dt= t("alerts") - %dd.count.alert 3 + %dd.count.alert= @statistics[:instances_failed] %li %dt= t("updates") %dd.count.update 0 %li %dt= t("pools.index.quota_used") - %dd.percentage.quota 86% + %dd.percentage.quota 0% %dd.fraction.instance - %span.part 21 + %span.part 0 %span.divider.label.small.caps of - %span.total 25 + %span.total 0 diff --git a/src/app/views/pools/new.haml b/src/app/views/pools/new.haml index 949343a..d5c3a24 100644 --- a/src/app/views/pools/new.haml +++ b/src/app/views/pools/new.haml @@ -1 +1,9 @@ -= render :partial => 'new' \ No newline at end of file += render :partial => 'layouts/admin_header' += render :partial => 'section_header' + +%section.content-section.pools + %header + %h2 Create New Pool + + .content + = render :partial => 'form' diff --git a/src/features/step_definitions/web_steps.rb b/src/features/step_definitions/web_steps.rb index 3671f23..ee01547 100644 --- a/src/features/step_definitions/web_steps.rb +++ b/src/features/step_definitions/web_steps.rb @@ -35,7 +35,7 @@ When /^(?:|I )follow "([^"]*)"$/ do |link| end When /^(?:|I )follow link with ID "([^"]*)"$/ do |link_id| - find("//a[@id='#{link_id}']").click + click_link(link_id) end When /^(?:|I )follow "([^"]*)" within "([^"]*)"$/ do |link, parent| diff --git a/src/public/images/deployment_small_alert_bg.png b/src/public/images/deployment_small_alert_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..69dc6914deb0989a8ee4ab2caaa4c0308a97893a GIT binary patch literal 1146 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGGgAGU?ZmZ`8QY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@q9v{oCC){ui6xo&c?uz!xv30h`iAEEhK5^2*w+CS$bb|C=ckpF zCl;kLIHu$$r7E~(7NwTw7iAYKI0u^+ZhdUVz`%Uj)5S5QV$Rz;-ubs2MA{za%QWwt z8nSBFyZ`sU_?O;Y7I^uNN9`_y6&eQ)mY)xKube74ML^81(zc@D$E@dS4C$%C`xz9{ zcsL#;I54m?Gg(Lo95~p(z{kc?V4%>@%*ZH1l+=!7<_8Oa>YEt&xR@+7I8Zq!QhPWG zI9VBG);NOgusF&jBf?S;AaKADC;${k=YXsZ)`7|XyrR$W!Z~l*A|26h_h&DO<+znP zbC*j)lR{<prYmpmx*u;|vUBFAO;?iJ6%%=zmYhB7*Y-FfZQ0ep$XTa)XPYSm&RkL% z8Ta4P`0VMR^9z5@2oO+NZLm7FZD-`_=DDUElcspSTY1&8b*7wjSWA<Fr)&4pgJ*my z58q#`;Nh3Itn&2M;>2aK&0Rok=@%dNE{(|w5#(xG@+58U`n>gLO5!&wiLiJ^ek+Jn znw&L%QJ{dz;uj0$*u9PSwiSHkvSxKO`nBS?<Fcx3Nj4Twji|U6pLMcgGM<QVU*ujD z-+x`;i~Ij;lJ^)`LY*JQ+NA8ZUbKBpWPiKBm!gsl&lNMOQx`wF<a1u}#ic$yuBH{T z|4zq$mN;}W?a16E_Z2gWpMDQd`&GJ7X^o@6*3`4Sox8dFuirfQdat#cqrh6}tMS!0 z{;ghH8u=={>=rjyQ^s1Uob>lu%RcXJ*5p`JviMo`x?OUovyJcWwN_oM&~d4%$$!_m z600d9EEi|a-nz<N{`jX`KK|~a3l%!fiF~!#5xDi6<%y%d(gG8I{#!kDUf<K+ne#$K zJA-vxmgd_2vN}3xRrh3VW80PknqrSOhO}3G$yuBA*U?d+H#^$NrdG^lmDZ=k2H7JH z+TNkuPiE-2Itn!UT&;h-uFYbaCWqQ~v+i|r>>@0aPlf1q?0!|vTjbzqu+sMlcOqBQ z$tSOt%e6nRvin?d@ndDOT-=}M+ib5TXD_?C`?!&(ytUpxpaB!TqrU#AnYrYAT2;VT z%|kI)FO=+k$z+~;KxG^A8^$v#xz%-fTum2suiU?toUz8yVAt)IvI)TgJy{Fiz1Nxh zSu1wW_N$8yf8NA)a7Ejy<FOp+_n%E&qA&YTZFz*mS+~3YX8Sh=>-40Z*vcO5J7G)j zC7b!n6(nNh!?&!LT%~Yl3uE){s~le?URW$skhqi9vfuDZ`psY)U6-U|7ANd@zw8lV z+3~=4Pd97K7jF?3<%)|2x4qlGD81aR!Qob5|CKxAf$t@L&->r*|7YFTB7C=HM*Tuy PF~H#I>gTe~DWM4fj1%P> literal 0 HcmV?d00001 diff --git a/src/public/images/deployment_small_failure_bg.png b/src/public/images/deployment_small_failure_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8489e1d8472381fa59dba4bfbbc94838b97c1e GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGGgAGU?ZmZ`8QY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@q9v{oCC){ui6xo&c?uz!xv30h`iAEEhK5^2*w+CS$bb|C=ckpF zCl;kLIHu$$r7E~(7NwTw7iAYKI0u^+ZhdUVz`)Gp>EaktG3V`_yFs_ZL|7lFW?8d2 zrB6EPdjCJ;uejE2;=Vyn1+`U;S2LGqY?oXpZ+yQz`GB$et_w+Xb6a-Fo6i<|5Gn3G zpJC0+1_wun1quoQ0s<Nw93m_%Tue-?jEzkMgg+c%)5s9Oj&d%!u(SasXE=h)-Eg$2 ziLDVQYH&Cx#?2+gf<UvE`ZN4H{jcIo*`joHo3hw_F+BN8%+5MXM{GQOO^w@q((<kS z$M2Ni-TZ#GW5n8(hcDjVHtlrd;~9<-OLrauai;xQ?P<cXy7*>P8F$X#^7AI0Y>A=k z#JJqo+kbn%T<xO5nq!w9zIYpT`szy?pt^#+lM254D!!<ola~t;zO0~=z4qaYOaZat zyHWSnSjcon`$n7)dHCa2X{AN&UQf3FKfdecY@BiTHs_(j`=#}@CbL!IC)=p~tb0-j z6uv6*&_eA$hx_}DuRj?S^k4nI)N#hyvo6NR7rr*y@=9L$`Za|!NvjG}P9{zYou46~ zW}a$M6})zx<BTi5**Dk!S$wC9EitILWpU~b$76D_%?^&uAGBsTCNR#P^O1qoGbrw` z^7{N}opbXPWyKabR*3Sv+`zzl=%#V=0VflV^n7t+4xU?SKb-bS?cB!p@J+1B&kIrS zcIh48|MyRA_RqX0x8!aeSiQmblXLdZNz3aG?)7nNSH7sQM@d|A|I(^F--HHWR7tjM z{%(2ldE@clG25rT7R=5TICoF+<lh6;`EKiSf%2dz>-Mbm`c(EPc}L{L&0mYJKfQcO z-LQ!*v8X(D`WCay$v&mB)fvp2cUbTB6P#2#shs)x$GRuCq*`v?dG^x$?^*8kyU+hn z;4y4ASiM_Ce!5*}{sPAtci+DJx^(uFrLv10BTnRAyRRa@*fHXQ|MKgmW+$B|#Xm}O o72CFLg3P2p)1F+v{Jow@PWAa8X?b}@V6I{CboFyt=akR{0H2kQV*mgE literal 0 HcmV?d00001 diff --git a/src/public/images/deployment_small_icon_instances.png b/src/public/images/deployment_small_icon_instances.png new file mode 100644 index 0000000000000000000000000000000000000000..947d21cc4d5932a19d0bdf76b0515199416bb5d0 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^d_XL~!3HGNrubO_DVAa<&kznEsNqQI0P;BtJR*x3 z7`TN%nDNrxx<5cc(Gu5)66d1S#FEVXJcW?V+*AfLeM577L&Gg1?CXFEWIzgn^V3So z6N^$A98>a>QWe}Xi&D$;i?WLqoP$jZw>~xls$1&m;uxYaaqc8TzC#8)uJaeaD{$Fm zVQijQDz?MZ(y5<Gor7Cbv2^O8=}JfA|DT+cd(x75LXZ`s_=5x6+(P#<ww!w7$Z-9W zq}FDK^n|hnEA^U$XWU=-bmgnPyu51}1(K)i3cDJ5?DY>-<J0r*vxbJ+?C0*{P|DuM zotG(|k#_vr=VewiZ~Ds~mpwbZ$J+46nuT{WcfQ@<uAKI5LH(Vz^B4>C7cc(9be31M UB$?U51L$A|Pgg&ebxsLQ0CCcFKL7v# literal 0 HcmV?d00001 diff --git a/src/public/images/deployment_small_icon_uptime.png b/src/public/images/deployment_small_icon_uptime.png new file mode 100644 index 0000000000000000000000000000000000000000..423dd5708f7249bd0987775e59949f99af0f827d GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+o!3HFmxV|j}QY^(zo*^7SP{WbZ0pxQQctjR6 zFmMZjFyp1Wb$@_@q9v{oCC){ui6xo&c?uz!xv30h`iAEEhK5^2*w+CS$bb|C=ckpF zCl;kLIHu$$r7E~(7NwTw7iAYKI0u^+ZhdUVz`$tW>Eak-(OWzDZ0#Wfo}>TIF`Z?5 z%cd(l#m~Wt@u5=eW!@VLVvctD1k6~_<6zDq-NO0epwa#-Dz)N~ljg^NnRtNZ%$r%~ zR!Lp@S+%!SbJ+=p**C3wCY{aU`!cisaM|v)j81M@4W=IqK0P~Htbaf#gIj%SS{aL7 z>__Gqm1~W^SD)9voPF?Qbpqp-RZ;#|Gt#Wp=es`9oDs=d!^j@Gc9YfqM)OcxzDJ%f z_A*HI`)j3ne1FAMQF_&GcSxETgW$_X<_#W;t$H;~X39Qd`LBOcb91>y$LG~<Mb-~q zn7OmY99r<VewS72L6KWcJ4_j>jkTA1_~|t6-Tm4r)H=a6=A_>J$37cBS8EHtJfslG zEbaeK;Pu<i#j}{tANgmZw5j>G{NqlGSzHw|OV0h<DJ}Ri=z}=Fe1QR*$44Vz7&Caf L`njxgN@xNARTQ^Q literal 0 HcmV?d00001 diff --git a/src/public/images/deployment_small_pending_bg.png b/src/public/images/deployment_small_pending_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6150ba0715aef08901b31f4b8548dc25bc9ebc GIT binary patch literal 959 zcmV;w13>(VP)<h;3K|Lk000e1NJLTq001-q001=z1^@s64kXA<00004b3#c}2nYxW zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|6?8>dbVG7wVRUJ4ZXi@?ZDjy9FEKYS zF)_3h2d)4B0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#En5<2C>Q0~kp} zK~!jg-I~jB;y@6FKdXFSXJC$VTO7f9BfuL0at4Ip5XfLf1jZ2<XMk^ggbZ*7dzi+s zvXFWnAnpEDDpyJK=#L(C&$N8Sg(M<3z&$Y5zc;}5j&AS34p;$eVC9_KwRN~kw6j$r zG6qUKK$r1Wz2gBZ=iIvfFguWXqSPxF#3{W46&`K}8G#gJrq{Pz;~Mn=%z=3pAQ5?@ zACS5}l7K|y9`Ewo9M<Ge5!+Ej=D;fhf`N#4NJK`!lJmdtQ3?XmFubDwcjctaKxcq? z12%erPoUrvF2G2yA0dO9fHJ{s@k@2-oLhx-)Zp`=SL-|536ue50nD4SdW_Vb88B^n z-U_4vU`-s%3ovueZ6f-1N^P41ljHkcKx@LI*%l~6msPClx$tBj(mWFivjE1If&tLE z#yWSihm`s?aO_9tT$Ny3vP7i(0;HSFHDNn|-eLA?T5>b~Q5dK#IrYv4dsOQkMnoO} zoO4U~>Y*p>FpB}eRKPRvtP%O(p+N6!@zJdHe1A?UOg*{&JoZqD-8<y~VE}f=Kr`cb zFPF?Sb+y1$&bjrqHX37(Y*z67xJw=Tg+$MGz&yesD3r!A7lC`T6^9>cg5P^Z$pQlh zpa<i)p$668$*CF^Br6O+p}SVga@$560hSH-f}lcRz<X$%U|g%5bHDIA;kryvp)hb} zAOM}XYIxKN6$1kv=-z19%F^yc-yo=181O(hZ4Fd!hBmFTLZ!d}Tw^=LZ47NX<(zvI z5%`)Wrg|R|V8C8E-5A?-s?Ad*!azbPI7KZ`bp^qI9Vq)o)BqI>13h_YuNJ5%7_b9b zB4LyoprT=*XAkYA0C&J$3JmzLZP6%Y5{q(`iVOUQ*Dj56Om+zs*dkcaCyhQ;;16M) z(rW79Rp6_n7FiF0z3Tr1(i*|m(Dqh~9)s3C4_Oay=88{W+5=U__EW7v3|0kvCN;~l zgM?DlC3L*?u^KuVatJ>Ls__5SWKpHX{lV!INK3SpvEMBNU3yL5hpb+jib$E&nhg32 hNWB#D%l{r4)E^ZALx+KpJIw$9002ovPDHLkV1nfyo;Uyi literal 0 HcmV?d00001