diff --git a/cloudpebble/ide/api/project.py b/cloudpebble/ide/api/project.py index 6b3d59f..0cae894 100644 --- a/cloudpebble/ide/api/project.py +++ b/cloudpebble/ide/api/project.py @@ -483,13 +483,19 @@ def _serialize_build(build, project): else: download = build.package_url if project.project_type == 'package' else build.pbw_url log = build.build_log_url + commit = build.commit_sha + commit_url = None + if commit and project.github_repo: + sha = commit[:-6] if commit.endswith('-dirty') else commit + commit_url = 'https://github.com/%s/commit/%s' % (project.github_repo, sha) return { 'uuid': build.uuid, 'state': build.state, 'started': str(build.started), 'finished': str(build.finished) if build.finished else None, 'id': build.id, - 'commit': build.commit_sha, + 'commit': commit, + 'commit_url': commit_url, 'download': download, 'log': log, 'build_dir': build.get_url(), diff --git a/cloudpebble/ide/static/ide/js/compile.js b/cloudpebble/ide/static/ide/js/compile.js index 3f09689..adbeddd 100644 --- a/cloudpebble/ide/static/ide/js/compile.js +++ b/cloudpebble/ide/static/ide/js/compile.js @@ -25,7 +25,13 @@ CloudPebble.Compile = (function() { tr.append($('' + (build.id === null ? '?' : build.id) + '')); tr.append($('' + CloudPebble.Utils.FormatDatetime(build.started) + '')); tr.append($('' + COMPILE_SUCCESS_STATES[build.state].english + '')); - tr.append($('').attr('title', build.commit || '').text(format_commit(build.commit))); + var commit_td = $('').attr('title', build.commit || ''); + if (build.commit_url) { + commit_td.append($('').attr('href', build.commit_url).text(format_commit(build.commit))); + } else { + commit_td.text(format_commit(build.commit)); + } + tr.append(commit_td); var pbw_badge = $('').appendTo(tr); if (build.state == 3) { pbw_badge.append($('') @@ -342,8 +348,13 @@ CloudPebble.Compile = (function() { } else { pane.find('#last-compilation, .build-stats').removeClass('hide'); pane.find('#last-compilation-started').text(CloudPebble.Utils.FormatDatetime(build.started)); - pane.find('#last-compilation-commit').toggleClass('hide', !build.commit) - .find('span').attr('title', build.commit || '').text(format_commit(build.commit)); + var commit_link = pane.find('#last-compilation-commit').toggleClass('hide', !build.commit).find('a'); + commit_link.attr('title', build.commit || '').text(format_commit(build.commit)); + if (build.commit_url) { + commit_link.attr('href', build.commit_url); + } else { + commit_link.removeAttr('href'); + } if(build.state > 1) { pane.find('#last-compilation-time').removeClass('hide').find('span').text(CloudPebble.Utils.FormatInterval(build.started, build.finished)); pane.find('#last-compilation-log').removeClass('hide').attr('href', build.log).off('click').click(function(e) { diff --git a/cloudpebble/ide/templates/ide/project/compile.html b/cloudpebble/ide/templates/ide/project/compile.html index bd031bc..456b4dc 100644 --- a/cloudpebble/ide/templates/ide/project/compile.html +++ b/cloudpebble/ide/templates/ide/project/compile.html @@ -94,7 +94,7 @@

{% trans 'Last build' %}

April 17, 2013, 11:50 a.m.

0.98 seconds

Successful

-

+