More front end work, stages and log entries
This commit is contained in:
parent
5f26454adf
commit
e0bc90e954
@ -69,6 +69,28 @@
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
|
||||
.pull-left {
|
||||
float: left;
|
||||
}
|
||||
.pull-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.timestamp {
|
||||
font-size: .75em;
|
||||
color: #777;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.log {
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.log > pre {
|
||||
margin-left: 15px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@ -102,12 +124,12 @@
|
||||
<a href="/project/{{project.id}}/{{version}}" class="pure-menu-link">{{version}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#if project && version && stage}}
|
||||
{{#if project && version && currentStage}}
|
||||
<li class="pure-menu-item">
|
||||
<span class="breadcrumb-separator">/</span>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a href="/project/{{project.id}}/{{version}}/{{stage}}" class="pure-menu-link">{{stage}}</a>
|
||||
<a href="/project/{{project.id}}/{{version}}/{{currentStage}}" class="pure-menu-link">{{currentStage}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
@ -116,10 +138,8 @@
|
||||
{{>projects}}
|
||||
{{elseif !version}}
|
||||
{{>project}}
|
||||
{{elseif !stage}}
|
||||
{{>version}}
|
||||
{{else}}
|
||||
{{>stage}}
|
||||
{{>version}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@ -141,7 +161,7 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#projects:i}}
|
||||
<tr>
|
||||
<tr title="{{formatDate(.lastLog.when)}}">
|
||||
<td><a href="/project/{{.id}}/">{{.name}}</a></td>
|
||||
<td>{{.status}}</td>
|
||||
<td>{{.stage}}</td>
|
||||
@ -149,7 +169,11 @@
|
||||
<a href="/project/{{.id}}/{{.releaseVersion}}">{{.releaseVersion}}</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="/release/{{.id}}?file">Download</a>
|
||||
{{#if releases[.id]}}
|
||||
<a href="/release/{{.id}}?file">{{releases[id].fileName}}</a>
|
||||
{{else}}
|
||||
No release file available
|
||||
{{/if}}
|
||||
</td>
|
||||
<td>
|
||||
<a href="/project/{{.id}}/{{.lastLog.version}}">{{.lastLog.version}}</a>
|
||||
@ -175,15 +199,15 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#project.versions:i}}
|
||||
<tr>
|
||||
<tr title="{{formatDate(.when)}}">
|
||||
<td>
|
||||
<a href="/project/{{project.id}}/{{.version}}">{{.version}}</a>
|
||||
</td>
|
||||
<td>{{.stage}}</td>
|
||||
<td title="{{.log}}">{{#if .log}}{{.log.substring(0,100) + " ..."}}{{/if}}</td>
|
||||
<td>
|
||||
{{#if .stage == "released"}}
|
||||
<a href="/release/{{project.id}}/{{.version}}?file">Download</a>
|
||||
{{#if releases[project.id + .version]}}
|
||||
<a href="/release/{{project.id}}/{{.version}}?file">{{releases[project.id + .version].fileName}}</a>
|
||||
{{/if}}
|
||||
</td>
|
||||
</tr>
|
||||
@ -195,11 +219,39 @@
|
||||
{{/partial}}
|
||||
|
||||
{{#partial version}}
|
||||
<hr>
|
||||
{{#if releases[project.id + .version]}}
|
||||
<a href="/release/{{project.id}}/{{.version}}?file" class="pull-right pure-button pure-button-primary">Download Release</a>
|
||||
{{/if}}
|
||||
|
||||
{{/partial}}
|
||||
|
||||
{{#partial stage}}
|
||||
|
||||
<div class="pure-menu pure-menu-horizontal">
|
||||
<ul class="pure-menu-list">
|
||||
<li class="pure-menu-item {{#if !currentStage}}pure-menu-selected{{/if}}">
|
||||
<a href="/project/{{project.id}}/{{.version}}/" class="pure-menu-link">All</a>
|
||||
</li>
|
||||
{{#stages:i}}
|
||||
<li class="pure-menu-item {{#if currentStage && currentStage == .stage}}pure-menu-selected{{/if}}">
|
||||
<a href="/project/{{project.id}}/{{version}}/{{.stage}}" class="pure-menu-link">{{.stage}}</a>
|
||||
</li>
|
||||
{{/stages}}
|
||||
</ul>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="log">
|
||||
{{#if currentStage}}
|
||||
<h3>{{currentStage}}<small class="timestamp">{{formatDate(logs.when)}}</small></h3>
|
||||
<pre><samp>
|
||||
{{logs.log}}
|
||||
</samp></pre>
|
||||
{{else}}
|
||||
{{#stages:i}}
|
||||
<h3>{{.stage}}<small class="timestamp">{{formatDate(.when)}}</small></h3>
|
||||
<pre><samp>
|
||||
{{.log}}
|
||||
</samp></pre>
|
||||
{{/stages}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/partial}}
|
||||
|
||||
</script>
|
||||
|
@ -16,9 +16,12 @@ Ractive.DEBUG = false;
|
||||
project: null,
|
||||
version: null,
|
||||
stages: null,
|
||||
stage: null,
|
||||
currentStage: null,
|
||||
logs: null,
|
||||
projects: [],
|
||||
error: null,
|
||||
formatDate: formatDate,
|
||||
releases: {},
|
||||
};
|
||||
},
|
||||
});
|
||||
@ -40,13 +43,13 @@ Ractive.DEBUG = false;
|
||||
|
||||
if (paths[1] == "project") {
|
||||
if (paths[2]) {
|
||||
getProject(paths[2]);
|
||||
if (paths[3]) {
|
||||
getVersion(paths[2], paths[3]);
|
||||
if (paths[4]) {
|
||||
getStage(paths[2], paths[3], paths[4]);
|
||||
}
|
||||
getVersion(paths[2], paths[3]);
|
||||
}
|
||||
getProject(paths[2]);
|
||||
}
|
||||
getProjects();
|
||||
return;
|
||||
@ -61,8 +64,8 @@ Ractive.DEBUG = false;
|
||||
function(result) {
|
||||
for (var i = 0; i < result.data.length; i++) {
|
||||
setStatus(result.data[i]);
|
||||
hasRelease(result.data[i].id, "");
|
||||
}
|
||||
|
||||
r.set("projects", result.data);
|
||||
},
|
||||
function(result) {
|
||||
@ -74,6 +77,11 @@ Ractive.DEBUG = false;
|
||||
get("/log/" + id,
|
||||
function(result) {
|
||||
r.set("project", result.data);
|
||||
if (result.data.versions) {
|
||||
for (var i = 0; i < result.data.versions.length; i++) {
|
||||
hasRelease(result.data.id, result.data.versions[i].version);
|
||||
}
|
||||
}
|
||||
},
|
||||
function(result) {
|
||||
r.set("error", err(result).message);
|
||||
@ -81,9 +89,9 @@ Ractive.DEBUG = false;
|
||||
}
|
||||
|
||||
function getVersion(id, version) {
|
||||
r.set("version", version);
|
||||
get("/log/" + id + "/" + version,
|
||||
function(result) {
|
||||
r.set("version", version);
|
||||
r.set("stages", result.data);
|
||||
},
|
||||
function(result) {
|
||||
@ -94,13 +102,27 @@ Ractive.DEBUG = false;
|
||||
function getStage(id, version, stage) {
|
||||
get("/log/" + id + "/" + version + "/" + stage,
|
||||
function(result) {
|
||||
r.set("stage", result.data);
|
||||
r.set("logs", result.data);
|
||||
r.set("currentStage", stage);
|
||||
},
|
||||
function(result) {
|
||||
r.set("error", err(result).message);
|
||||
});
|
||||
}
|
||||
|
||||
function hasRelease(id, version) {
|
||||
/*/release/<project-id>/<version>*/
|
||||
get("/release/" + id + "/" + version,
|
||||
function(result) {
|
||||
r.set("releases." + id + version, result.data);
|
||||
},
|
||||
function(result) {
|
||||
r.set("releases." + id + version, undefined);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
function setStatus(project) {
|
||||
//statuses
|
||||
if (project.lastLog.version.trim() == project.releaseVersion.trim()) {
|
||||
@ -165,11 +187,23 @@ function get(url, success, error) {
|
||||
function err(response) {
|
||||
"use strict";
|
||||
var error = {
|
||||
message: "An error occurred and has been logged",
|
||||
message: "An error occurred",
|
||||
};
|
||||
|
||||
if (typeof response === "string") {
|
||||
error.message = response;
|
||||
} else {
|
||||
error.message = JSON.parse(response.responseText).message;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
function formatDate(strDate) {
|
||||
"use strict";
|
||||
var date = new Date(strDate);
|
||||
if (!date) {
|
||||
return "";
|
||||
}
|
||||
return date.toLocaleDateString() + " at " + date.toLocaleTimeString();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user