separate projects, builds, build console blocks at the client

This commit is contained in:
oleg 2015-05-04 12:14:37 +03:00
parent 4c6f55b445
commit 5cfebe1aa1
4 changed files with 54 additions and 25 deletions

View File

@ -7,8 +7,10 @@
}, },
"steps": [ "steps": [
{"type": "shell", "cmd": "echo \"hello, cur dir is `pwd`\""}, {"type": "shell", "cmd": "echo \"hello, cur dir is `pwd`\""},
{"type": "shell", "cmd": "sleep 3"}, {"type": "shell", "cmd": "sleep 4"},
{"type": "shell", "cmd": "echo 1 > 1.txt"}, {"type": "shell", "cmd": "echo 1 > 1.txt"},
{"type": "shell", "cmd": "echo 2 > 2.txt"} {"type": "shell", "cmd": "sleep 4"},
{"type": "shell", "cmd": "echo 2 > 2.txt"},
{"type": "shell", "cmd": "cat 1.txt 2.txt"}
] ]
} }

View File

@ -7,6 +7,8 @@
}, },
"steps": [ "steps": [
{"type": "shell", "cmd": "echo 11 > 11.txt"}, {"type": "shell", "cmd": "echo 11 > 11.txt"},
{"type": "shell", "cmd": "echo 22 > 22.txt"} {"type": "shell", "cmd": "sleep 4"},
{"type": "shell", "cmd": "echo 22 > 22.txt"},
{"type": "shell", "cmd": "cat 11.txt 22.txt"}
] ]
} }

View File

@ -7,37 +7,44 @@ define([
) { ) {
var connect = dataio(socketio.connect()); var connect = dataio(socketio.connect());
var projects = connect.resource('projects'); var projects = connect.resource('projects'),
var builds = connect.resource('builds'); projectsTemplate = _($('#projects-template').html()).template();
var projectsTemplate = _($('#projects-template').html()).template(); $('#projects').on('click', '.js-projects .js-run', function() {
$('#content').on('click', '.js-projects .js-run', function() {
var projectName = $(this).parent('.js-project').data('name'); var projectName = $(this).parent('.js-project').data('name');
projects.sync('run', {projectName: projectName}, function(err, result) { projects.sync('run', {projectName: projectName}, function(err, result) {
$('#content').append( $('#content').append(err && err.message);
(err && err.message)
);
}); });
}); });
projects.sync('read', function(err, projects) { projects.sync('read', function(err, projects) {
$('#content').html( $('#projects').html(
(err && err.message) || (err && err.message) ||
projectsTemplate({projects: projects}) projectsTemplate({projects: projects})
); );
}); });
builds.subscribe(function(data, action) {
$('#content').append( var builds = connect.resource('builds'),
action.action + ': ' + JSON.stringify(data) + '<br>' buildsTemplate = _($('#builds-template').html()).template(),
); buildsHash = {};
if (action.action === 'create') {
var name = 'build' + data.id; $('#builds').on('click', '.js-builds .js-show-console', function() {
connect.resource(name).subscribe(function(data, action) { var buildId = $(this).parent('.js-build').data('id'),
$('#content').append( resourceName = 'build' + buildId;;
'<br>' + name + ': ' + data + '<br>'
); $('#build-console').prev('h2').html('Build #' + buildId + ' console');
}); $('#build-console').html('');
}
connect.resource(resourceName).subscribe(function(data) {
$('#build-console').append('<div>' + data + '</div>');
});
});
builds.subscribe(function(build, action) {
buildsHash[build.id] = build;
$('#builds').html(buildsTemplate({
builds: _(buildsHash).values().reverse()
}));
}); });
}); });

View File

@ -7,8 +7,6 @@ html
require(['app/app']); require(['app/app']);
body body
h1 hello world
script#projects-template(type="text/template") script#projects-template(type="text/template")
| <div class="js-projects"> | <div class="js-projects">
@ -20,5 +18,25 @@ html
| <% }); %> | <% }); %>
| </div> | </div>
script#builds-template(type="text/template")
| <div class="js-builds">
| <% _(builds).each(function(build) { %>
| <div class="js-build" data-id="<%= build.id %>">
| <span>#<%= build.id %></span>
| <span><%= build.project.name %></span>
| <span><%= build.status %></span>
| <span class="js-show-console">&rarr;</span>
| </div>
| <% }); %>
| </div>
h2 Projects
#projects
h2 Builds
#builds
h2 Build console
#build-console
#content #content