From 5bedcd1542ee131172f3ae1ec2eed146ff40a878 Mon Sep 17 00:00:00 2001 From: Alex Welch Date: Mon, 9 Feb 2015 11:42:35 -0700 Subject: [PATCH 1/4] Have the log open by default [#87962170] --- app/assets/stylesheets/panamax/deployments.css.scss | 2 ++ app/views/deployment_targets/index.html.haml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/panamax/deployments.css.scss b/app/assets/stylesheets/panamax/deployments.css.scss index 56b1a2ff..b9a84ac1 100644 --- a/app/assets/stylesheets/panamax/deployments.css.scss +++ b/app/assets/stylesheets/panamax/deployments.css.scss @@ -582,6 +582,8 @@ } .deployment-job-log .log-output { + height: 300px; + &.truncated { overflow: hidden; height: 0; diff --git a/app/views/deployment_targets/index.html.haml b/app/views/deployment_targets/index.html.haml index 2458d7c0..0ed9ed0c 100644 --- a/app/views/deployment_targets/index.html.haml +++ b/app/views/deployment_targets/index.html.haml @@ -15,7 +15,7 @@ .deployment-job-progress{ data: { source: job_path(job.key) } } = render 'job', presenter: presenter .deployment-job-log - %code.log-output.truncated{ data: { source: log_job_path(job.key) } } + %code.log-output{ data: { source: log_job_path(job.key) } } - job.log.each do |output| %p= output From e0def1d6349297dad54539c27036504d6ca3f584 Mon Sep 17 00:00:00 2001 From: Alex Welch Date: Mon, 9 Feb 2015 17:48:08 -0700 Subject: [PATCH 2/4] Display the template description on job creation. [#87995896] --- app/helpers/application_helper.rb | 4 ++++ app/views/jobs/new.html.haml | 1 + spec/helpers/application_helper_spec.rb | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ff1e006e..bc6a79db 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -19,4 +19,8 @@ def formatted_title(*page_titles) titles = ['Panamax'] + page_titles titles.compact.join(' > ') end + + def markdown_to_html(markdown) + markdown.present? ? Kramdown::Document.new(markdown).to_html : '' + end end diff --git a/app/views/jobs/new.html.haml b/app/views/jobs/new.html.haml index 70a961cf..79b12bde 100644 --- a/app/views/jobs/new.html.haml +++ b/app/views/jobs/new.html.haml @@ -2,6 +2,7 @@ - content_for(:title, "New #{@template.name} Remote Deployment Target") %h1 create a new job +%p= markdown_to_html(@template.description).html_safe %p.microcopy All fields required. = form_for @job do |f| = f.hidden_field :template_id diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index ad530d0b..af6b071b 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -47,4 +47,24 @@ it { should eq 'Panamax > pretty pictures > more pretty' } end end + + describe '#markdown_to_html' do + context 'when content is passed in' do + subject { helper.markdown_to_html('#bla') } + + let(:fake_kramdoc) { double(:fake_kramdoc, to_html: '

bla

') } + + before do + allow(Kramdown::Document).to receive(:new).with('#bla').and_return(fake_kramdoc) + end + + it { should eq '

bla

' } + end + + context 'when nothing is passed in' do + subject { helper.markdown_to_html('') } + + it { should eq '' } + end + end end From ad90d64908e521084695c744388406e57ff8a162 Mon Sep 17 00:00:00 2001 From: Alex Welch Date: Tue, 10 Feb 2015 08:15:42 -0700 Subject: [PATCH 3/4] Display Template's documentation in job status block. [delivers #87972598] --- .../stylesheets/panamax/deployments.css.scss | 7 +++++++ .../deployment_targets_controller.rb | 6 +++++- app/models/job.rb | 6 ++++++ app/presenters/job_presenter.rb | 4 ++++ app/views/deployment_targets/index.html.haml | 4 ++++ app/views/jobs/new.html.haml | 2 +- spec/models/job_spec.rb | 15 ++++++++++++++ spec/presenters/job_presenter_spec.rb | 20 +++++++++++++++++++ 8 files changed, 62 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/panamax/deployments.css.scss b/app/assets/stylesheets/panamax/deployments.css.scss index b9a84ac1..ec5a30f5 100644 --- a/app/assets/stylesheets/panamax/deployments.css.scss +++ b/app/assets/stylesheets/panamax/deployments.css.scss @@ -581,6 +581,13 @@ } } + .deployment-job-documentation { + background-color: $white; + padding: 15px; + padding-bottom: 0; + margin-bottom: 20px; + } + .deployment-job-log .log-output { height: 300px; diff --git a/app/controllers/deployment_targets_controller.rb b/app/controllers/deployment_targets_controller.rb index b433b6e1..a8513c5e 100644 --- a/app/controllers/deployment_targets_controller.rb +++ b/app/controllers/deployment_targets_controller.rb @@ -34,6 +34,10 @@ def destroy def hydrate_index_view @deployment_targets = DeploymentTarget.all @job_templates = JobTemplate.all - @jobs = Job.all.map(&:with_log!).map(&:with_step_status!).reverse + @jobs = Job.all + .map(&:with_template!) + .map(&:with_log!) + .map(&:with_step_status!) + .reverse end end diff --git a/app/models/job.rb b/app/models/job.rb index a6b78960..124c4000 100644 --- a/app/models/job.rb +++ b/app/models/job.rb @@ -6,6 +6,12 @@ class Job < BaseResource integer :template_id string :status string :log + string :template + end + + def with_template! + self.template = JobTemplate.find(job_template_id) + self end def with_log! diff --git a/app/presenters/job_presenter.rb b/app/presenters/job_presenter.rb index f21838c6..b7cb9942 100644 --- a/app/presenters/job_presenter.rb +++ b/app/presenters/job_presenter.rb @@ -10,6 +10,10 @@ def title @job.name end + def documentation + @view_context.markdown_to_html(@job.template.try(:documentation)) + end + def destroy_path @view_context.job_path(@job.key) end diff --git a/app/views/deployment_targets/index.html.haml b/app/views/deployment_targets/index.html.haml index 0ed9ed0c..b01f8c9c 100644 --- a/app/views/deployment_targets/index.html.haml +++ b/app/views/deployment_targets/index.html.haml @@ -14,6 +14,10 @@ .deployment-job{ class: "initially-#{presenter.status}", id: "#{presenter.dom_id}" } .deployment-job-progress{ data: { source: job_path(job.key) } } = render 'job', presenter: presenter + - if presenter.documentation.present? + .deployment-job-documentation + %h5 Documentation + != presenter.documentation .deployment-job-log %code.log-output{ data: { source: log_job_path(job.key) } } - job.log.each do |output| diff --git a/app/views/jobs/new.html.haml b/app/views/jobs/new.html.haml index 79b12bde..675e23a4 100644 --- a/app/views/jobs/new.html.haml +++ b/app/views/jobs/new.html.haml @@ -2,7 +2,7 @@ - content_for(:title, "New #{@template.name} Remote Deployment Target") %h1 create a new job -%p= markdown_to_html(@template.description).html_safe +%p!= markdown_to_html(@template.description) %p.microcopy All fields required. = form_for @job do |f| = f.hidden_field :template_id diff --git a/spec/models/job_spec.rb b/spec/models/job_spec.rb index be5d641f..ccae834a 100644 --- a/spec/models/job_spec.rb +++ b/spec/models/job_spec.rb @@ -74,6 +74,21 @@ end end + describe '#with_template!' do + let(:fake_template) { double(:fake_template) } + + before do + subject.job_template_id = 9 + allow(JobTemplate).to receive(:find).with(9).and_return(fake_template) + end + + it 'fetches and assigns the template' do + expect(subject.template).to be_nil + subject.with_template! + expect(subject.template).to eq fake_template + end + end + describe '#with_log!' do let(:fake_new_job) { double(:fake_new_job) } before do diff --git a/spec/presenters/job_presenter_spec.rb b/spec/presenters/job_presenter_spec.rb index 0fcb31de..aa0a1e77 100644 --- a/spec/presenters/job_presenter_spec.rb +++ b/spec/presenters/job_presenter_spec.rb @@ -10,6 +10,7 @@ status: 'complete', success?: nil, failure?: nil, + template: '', steps: [ double(:step1, name: 'foo', status: 'complete'), double(:step2, name: 'bar', status: 'in-progress') @@ -27,6 +28,25 @@ it { should eq 'abc123' } end + describe '#documentation' do + context 'when a template has been assigned to the job' do + before do + fake_job.stub(:template).and_return(double(:fake_template, documentation: '#bla')) + view_context.stub(:markdown_to_html).with('#bla').and_return('

bla

') + end + + its(:documentation) { should eq '

bla

' } + end + + context 'when no template has been assigned to the job' do + before do + view_context.stub(:markdown_to_html).with(nil).and_return('') + end + + its(:documentation) { should eq '' } + end + end + describe '#destroy_path' do before do view_context.stub(:job_path).with('xyz').and_return('/destroy/path') From 5ba3cc4abb94e4845eec5b94a55c9cc6a0fd02fe Mon Sep 17 00:00:00 2001 From: Alex Welch Date: Tue, 10 Feb 2015 08:59:45 -0700 Subject: [PATCH 4/4] Link to AWS image. --- ...tes_cluster_with_panamax_remote_agent_small.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename app/assets/images/providers/{logo_aws_small.png => logo_aws_kubernetes_cluster_with_panamax_remote_agent_small.png} (100%) diff --git a/app/assets/images/providers/logo_aws_small.png b/app/assets/images/providers/logo_aws_kubernetes_cluster_with_panamax_remote_agent_small.png similarity index 100% rename from app/assets/images/providers/logo_aws_small.png rename to app/assets/images/providers/logo_aws_kubernetes_cluster_with_panamax_remote_agent_small.png