added breadcrumb to detail page

pull/1/head
Brad Rydzewski 5 years ago
parent d17fc7a2e3
commit 594c7f9cab

@ -0,0 +1,6 @@
<svg viewBox="0 0 10 19" xmlns="http://www.w3.org/2000/svg">
<g fill="#73849a" fill-rule="nonzero">
<path data-v-77fa11ba="" d="M5.65 1.5a.65.65 0 1 0-1.3 0v15a.65.65 0 1 0 1.3 0v-15z"></path>
<path data-v-77fa11ba="" d="M1.46 13.04a.65.65 0 1 0-.92.92L4.4 17.818a.85.85 0 0 0 1.202 0L9.46 13.96a.65.65 0 1 0-.92-.92L5 16.58l-3.54-3.54z"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 381 B

@ -168,7 +168,6 @@ a.card {
.steps header .name {
align-items: center;
display: flex;
font-weight: 600;
}
.steps .step {
@ -191,31 +190,73 @@ a.card {
padding: 10px 0px;
}
.steps .status {
.steps .step {
position: relative;
}
.steps .step .status:before,
.steps .step .status:after {
.steps .step:before,
.steps .step:after {
border-left: 1px solid #1e375a;
content: " ";
height: 10px;
left: 50%;
left: 25px;
opacity: 0.15;
position: absolute;
top: 20px;
width: 1px;
}
.steps .step .status:before {
top: -10px;
.steps .step:after {
bottom: 0px;
}
.steps .step:before {
top: 0px;
}
.steps .step:last-of-type .status:after,
.steps .step:first-of-type .status:before {
.steps .step:last-of-type:after,
.steps .step:first-of-type:before {
display: none;
}
/**
* breadcrumb component
*/
.breadcrumb {
margin-top: 35px;
}
.breadcrumb ul {
display: flex;
}
.breadcrumb ul li {
display: flex;
align-items: center;
}
.breadcrumb ul li.separator {
margin: 0px 15px;
width: 19px;
height: 19px;
display: inline-block;
background: url(/static/icons/arrow-right.svg) no-repeat center center;
transform: rotate(270deg);
}
.breadcrumb a,
.breadcrumb a:active,
.breadcrumb a:visited {
text-decoration: none;
color: #2364d2;
display: block;
line-height: 19px;
}
.breadcrumb a:hover {
text-decoration: underline;
}
/**
* alert components
*/

@ -144,8 +144,16 @@ var files = map[string]file{
modTime: time.Unix(1563047765, 0),
},
},
"/icons/failure.svg": {
"/icons/arrow-right.svg": {
data: file1,
FileInfo: &fileInfo{
name: "arrow-right.svg",
size: 381,
modTime: time.Unix(1563076432, 0),
},
},
"/icons/failure.svg": {
data: file2,
FileInfo: &fileInfo{
name: "failure.svg",
size: 551,
@ -153,7 +161,7 @@ var files = map[string]file{
},
},
"/icons/pending.svg": {
data: file2,
data: file3,
FileInfo: &fileInfo{
name: "pending.svg",
size: 1093,
@ -161,7 +169,7 @@ var files = map[string]file{
},
},
"/icons/running.svg": {
data: file3,
data: file4,
FileInfo: &fileInfo{
name: "running.svg",
size: 690,
@ -169,7 +177,7 @@ var files = map[string]file{
},
},
"/icons/skipped.svg": {
data: file4,
data: file5,
FileInfo: &fileInfo{
name: "skipped.svg",
size: 430,
@ -177,7 +185,7 @@ var files = map[string]file{
},
},
"/icons/sleeping.svg": {
data: file5,
data: file6,
FileInfo: &fileInfo{
name: "sleeping.svg",
size: 2524,
@ -185,7 +193,7 @@ var files = map[string]file{
},
},
"/icons/success.svg": {
data: file6,
data: file7,
FileInfo: &fileInfo{
name: "success.svg",
size: 472,
@ -193,7 +201,7 @@ var files = map[string]file{
},
},
"/index.html": {
data: file7,
data: file8,
FileInfo: &fileInfo{
name: "index.html",
size: 3539,
@ -201,7 +209,7 @@ var files = map[string]file{
},
},
"/logs.html": {
data: file8,
data: file9,
FileInfo: &fileInfo{
name: "logs.html",
size: 3853,
@ -209,7 +217,7 @@ var files = map[string]file{
},
},
"/reset.css": {
data: file9,
data: file10,
FileInfo: &fileInfo{
name: "reset.css",
size: 990,
@ -217,15 +225,15 @@ var files = map[string]file{
},
},
"/style.css": {
data: file10,
data: file11,
FileInfo: &fileInfo{
name: "style.css",
size: 7701,
modTime: time.Unix(1563073228, 0),
size: 8275,
modTime: time.Unix(1563076316, 0),
},
},
"/timeago.js": {
data: file11,
data: file12,
FileInfo: &fileInfo{
name: "timeago.js",
size: 3258,
@ -393,8 +401,44 @@ var file0 = []byte{
0xae, 0x42, 0x60, 0x82,
}
// /icons/failure.svg
// /icons/arrow-right.svg
var file1 = []byte{
0x3c, 0x73, 0x76, 0x67, 0x20, 0x76, 0x69, 0x65, 0x77, 0x42, 0x6f, 0x78,
0x3d, 0x22, 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x20, 0x31, 0x39, 0x22,
0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x32, 0x30, 0x30, 0x30, 0x2f, 0x73, 0x76, 0x67, 0x22, 0x3e,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x67, 0x20, 0x66, 0x69, 0x6c, 0x6c,
0x3d, 0x22, 0x23, 0x37, 0x33, 0x38, 0x34, 0x39, 0x61, 0x22, 0x20, 0x66,
0x69, 0x6c, 0x6c, 0x2d, 0x72, 0x75, 0x6c, 0x65, 0x3d, 0x22, 0x6e, 0x6f,
0x6e, 0x7a, 0x65, 0x72, 0x6f, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x64, 0x61,
0x74, 0x61, 0x2d, 0x76, 0x2d, 0x37, 0x37, 0x66, 0x61, 0x31, 0x31, 0x62,
0x61, 0x3d, 0x22, 0x22, 0x20, 0x64, 0x3d, 0x22, 0x4d, 0x35, 0x2e, 0x36,
0x35, 0x20, 0x31, 0x2e, 0x35, 0x61, 0x2e, 0x36, 0x35, 0x2e, 0x36, 0x35,
0x20, 0x30, 0x20, 0x31, 0x20, 0x30, 0x2d, 0x31, 0x2e, 0x33, 0x20, 0x30,
0x76, 0x31, 0x35, 0x61, 0x2e, 0x36, 0x35, 0x2e, 0x36, 0x35, 0x20, 0x30,
0x20, 0x31, 0x20, 0x30, 0x20, 0x31, 0x2e, 0x33, 0x20, 0x30, 0x76, 0x2d,
0x31, 0x35, 0x7a, 0x22, 0x3e, 0x3c, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x3e,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x61,
0x74, 0x68, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x76, 0x2d, 0x37, 0x37,
0x66, 0x61, 0x31, 0x31, 0x62, 0x61, 0x3d, 0x22, 0x22, 0x20, 0x64, 0x3d,
0x22, 0x4d, 0x31, 0x2e, 0x34, 0x36, 0x20, 0x31, 0x33, 0x2e, 0x30, 0x34,
0x61, 0x2e, 0x36, 0x35, 0x2e, 0x36, 0x35, 0x20, 0x30, 0x20, 0x31, 0x20,
0x30, 0x2d, 0x2e, 0x39, 0x32, 0x2e, 0x39, 0x32, 0x4c, 0x34, 0x2e, 0x34,
0x20, 0x31, 0x37, 0x2e, 0x38, 0x31, 0x38, 0x61, 0x2e, 0x38, 0x35, 0x2e,
0x38, 0x35, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x2e, 0x32,
0x30, 0x32, 0x20, 0x30, 0x4c, 0x39, 0x2e, 0x34, 0x36, 0x20, 0x31, 0x33,
0x2e, 0x39, 0x36, 0x61, 0x2e, 0x36, 0x35, 0x2e, 0x36, 0x35, 0x20, 0x30,
0x20, 0x31, 0x20, 0x30, 0x2d, 0x2e, 0x39, 0x32, 0x2d, 0x2e, 0x39, 0x32,
0x4c, 0x35, 0x20, 0x31, 0x36, 0x2e, 0x35, 0x38, 0x6c, 0x2d, 0x33, 0x2e,
0x35, 0x34, 0x2d, 0x33, 0x2e, 0x35, 0x34, 0x7a, 0x22, 0x3e, 0x3c, 0x2f,
0x70, 0x61, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
0x67, 0x3e, 0x0a, 0x3c, 0x2f, 0x73, 0x76, 0x67, 0x3e,
}
// /icons/failure.svg
var file2 = []byte{
0x20, 0x20, 0x3c, 0x73, 0x76, 0x67, 0x20, 0x76, 0x69, 0x65, 0x77, 0x42,
0x6f, 0x78, 0x3d, 0x22, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x20, 0x32,
0x30, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74,
@ -444,7 +488,7 @@ var file1 = []byte{
}
// /icons/pending.svg
var file2 = []byte{
var file3 = []byte{
0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x76, 0x67, 0x20, 0x76, 0x69, 0x65,
0x77, 0x42, 0x6f, 0x78, 0x3d, 0x22, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30,
0x20, 0x32, 0x30, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22,
@ -540,7 +584,7 @@ var file2 = []byte{
}
// /icons/running.svg
var file3 = []byte{
var file4 = []byte{
0x20, 0x20, 0x3c, 0x73, 0x76, 0x67, 0x20, 0x76, 0x69, 0x65, 0x77, 0x42,
0x6f, 0x78, 0x3d, 0x22, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x20, 0x32,
0x30, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74,
@ -602,7 +646,7 @@ var file3 = []byte{
}
// /icons/skipped.svg
var file4 = []byte{
var file5 = []byte{
0x20, 0x20, 0x3c, 0x73, 0x76, 0x67, 0x20, 0x76, 0x69, 0x65, 0x77, 0x42,
0x6f, 0x78, 0x3d, 0x22, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x20, 0x32,
0x30, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74,
@ -642,7 +686,7 @@ var file4 = []byte{
}
// /icons/sleeping.svg
var file5 = []byte{
var file6 = []byte{
0x20, 0x20, 0x3c, 0x73, 0x76, 0x67, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73,
0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x32, 0x30, 0x30, 0x30,
@ -857,7 +901,7 @@ var file5 = []byte{
}
// /icons/success.svg
var file6 = []byte{
var file7 = []byte{
0x20, 0x20, 0x3c, 0x73, 0x76, 0x67, 0x20, 0x76, 0x69, 0x65, 0x77, 0x42,
0x6f, 0x78, 0x3d, 0x22, 0x30, 0x20, 0x30, 0x20, 0x32, 0x30, 0x20, 0x32,
0x30, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74,
@ -901,7 +945,7 @@ var file6 = []byte{
}
// /index.html
var file7 = []byte(`<!DOCTYPE html>
var file8 = []byte(`<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
@ -978,7 +1022,7 @@ timeago.render(document.querySelectorAll('.time'));
</html>`)
// /logs.html
var file8 = []byte(`<!DOCTYPE html>
var file9 = []byte(`<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
@ -1073,7 +1117,7 @@ timeago.render(document.querySelectorAll('.time'));
</html>`)
// /reset.css
var file9 = []byte(`html, body, div, span, applet, object, iframe,
var file10 = []byte(`html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
@ -1118,7 +1162,7 @@ table {
}`)
// /style.css
var file10 = []byte(`:root {
var file11 = []byte(`:root {
--font-sans: -apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;
--font-mono: Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace;
}
@ -1288,7 +1332,6 @@ a.card {
.steps header .name {
align-items: center;
display: flex;
font-weight: 600;
}
.steps .step {
@ -1311,31 +1354,73 @@ a.card {
padding: 10px 0px;
}
.steps .status {
.steps .step {
position: relative;
}
.steps .step .status:before,
.steps .step .status:after {
.steps .step:before,
.steps .step:after {
border-left: 1px solid #1e375a;
content: " ";
height: 10px;
left: 50%;
left: 25px;
opacity: 0.15;
position: absolute;
top: 20px;
width: 1px;
}
.steps .step .status:before {
top: -10px;
.steps .step:after {
bottom: 0px;
}
.steps .step:last-of-type .status:after,
.steps .step:first-of-type .status:before {
.steps .step:before {
top: 0px;
}
.steps .step:last-of-type:after,
.steps .step:first-of-type:before {
display: none;
}
/**
* breadcrumb component
*/
.breadcrumb {
margin-top: 35px;
}
.breadcrumb ul {
display: flex;
}
.breadcrumb ul li {
display: flex;
align-items: center;
}
.breadcrumb ul li.separator {
margin: 0px 15px;
width: 19px;
height: 19px;
display: inline-block;
background: url(/static/icons/arrow-right.svg) no-repeat center center;
transform: rotate(270deg);
}
.breadcrumb a,
.breadcrumb a:active,
.breadcrumb a:visited {
text-decoration: none;
color: #2364d2;
display: block;
line-height: 19px;
}
.breadcrumb a:hover {
text-decoration: underline;
}
/**
* alert components
*/
@ -1537,7 +1622,7 @@ a.card {
}`)
// /timeago.js
var file11 = []byte(`!function(t, e) {
var file12 = []byte(`!function(t, e) {
"object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(t.timeago = {})
}(this, function(t) {
"use strict";

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="10">
<meta http-equiv="x-refresh" content="10">
<title>Dashboard</title>
<link rel="stylesheet" type="text/css" href="/static/reset.css">
<link rel="stylesheet" type="text/css" href="/static/style.css">
@ -25,8 +25,17 @@
<main>
<section>
<nav class="breadcrumb">
<ul>
<li><a href="/">Dashboard</a></li>
<li class="separator"></li>
<li>{{ .Repo.Slug }}</li>
<li class="separator"></li>
<li>#{{ .Build.Number }}</li>
</ul>
</nav>
<header>
<h1>{{ .Repo.Slug }}</h1>
<h1>{{ .Repo.Name }}</h1>
</header>
<div class="card stage">

@ -164,7 +164,7 @@ var stage = `<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="10">
<meta http-equiv="x-refresh" content="10">
<title>Dashboard</title>
<link rel="stylesheet" type="text/css" href="/static/reset.css">
<link rel="stylesheet" type="text/css" href="/static/style.css">
@ -187,8 +187,17 @@ var stage = `<!DOCTYPE html>
<main>
<section>
<nav class="breadcrumb">
<ul>
<li><a href="/">Dashboard</a></li>
<li class="separator"></li>
<li>{{ .Repo.Slug }}</li>
<li class="separator"></li>
<li>#{{ .Build.Number }}</li>
</ul>
</nav>
<header>
<h1>{{ .Repo.Slug }}</h1>
<h1>{{ .Repo.Name }}</h1>
</header>
<div class="card stage">

@ -1,6 +1,7 @@
{
"Repo": {
"Slug": "octocat/hello-world"
"Slug": "octocat/hello-world",
"Name": "hello-world"
},
"Build": {
"After": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d",
@ -19,7 +20,7 @@
"Created": 1563059000,
"Steps": [
{ "Name": "clone", "Status": "success" },
{ "Name": "build", "Status": "success" },
{ "Name": "build", "Status": "running" },
{ "Name": "test", "Status": "success" },
{ "Name": "deploy", "Status": "success" }
]

@ -1,38 +1,7 @@
{
"Logs": [
{
"Level": "trace",
"Message": "this is a test trace message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058875
},
{
"Level": "debug",
"Message": "this is a test debug message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058875
},
{
"Level": "info",
"Message": "this is an info trace message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058975
},
{
"Level": "warn",
"Message": "this is a test warning message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058977
},
{
"Level": "error",
"Message": "this is a test error message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563059000
}
],
"Repo": {
"Slug": "octocat/hello-world"
"Slug": "octocat/hello-world",
"Name": "hello-world"
},
"Build": {
"After": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d",

@ -1,6 +1,7 @@
{
"Repo": {
"Slug": "octocat/hello-world"
"Slug": "octocat/hello-world",
"Name": "hello-world"
},
"Build": {
"Ref": "refs/pull/42/head",

@ -1,38 +1,7 @@
{
"Logs": [
{
"Level": "trace",
"Message": "this is a test trace message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058875
},
{
"Level": "debug",
"Message": "this is a test debug message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058875
},
{
"Level": "info",
"Message": "this is an info trace message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058975
},
{
"Level": "warn",
"Message": "this is a test warning message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563058977
},
{
"Level": "error",
"Message": "this is a test error message",
"Data": { "foo": "bar", "baz": "boo" },
"Unix": 1563059000
}
],
"Repo": {
"Slug": "octocat/hello-world"
"Slug": "octocat/hello-world",
"Name": "hello-world"
},
"Build": {
"After": "7fd1a60b01f91b314f59955a4e4d4e80d8edf11d",

Loading…
Cancel
Save