Github Importer: AJAX update status
This commit is contained in:
parent
f9fb76670f
commit
6da0ab7d60
5 changed files with 34 additions and 9 deletions
|
@ -22,6 +22,11 @@ class GithubImportsController < ApplicationController
|
|||
@repos.reject!{|repo| already_added_projects_names.include? repo.full_name}
|
||||
end
|
||||
|
||||
def jobs
|
||||
jobs = current_user.created_projects.where(import_type: "github").to_json(:only => [:id, :import_status])
|
||||
render json: jobs
|
||||
end
|
||||
|
||||
def create
|
||||
@repo_id = params[:repo_id].to_i
|
||||
repo = octo_client.repo(@repo_id)
|
||||
|
@ -42,7 +47,7 @@ class GithubImportsController < ApplicationController
|
|||
namespace.add_owner(current_user)
|
||||
end
|
||||
|
||||
Gitlab::Github::ProjectCreator.new(repo, namespace, current_user).execute
|
||||
@project = Gitlab::Github::ProjectCreator.new(repo, namespace, current_user).execute
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -12,5 +12,7 @@
|
|||
target_field.find('input').prop("value", origin_namespace)
|
||||
- else
|
||||
:plain
|
||||
$("table.import-jobs tbody").prepend($("tr#repo_#{@repo_id}"))
|
||||
$("tr#repo_#{@repo_id}").addClass("active").find(".import-actions").html("<i class='fa fa-spinner fa-spin'></i> started")
|
||||
job = $("tr#repo_#{@repo_id}")
|
||||
job.attr("id", "project_#{@project.id}")
|
||||
$("table.import-jobs tbody").prepend(job)
|
||||
job.addClass("active").find(".import-actions").html("<i class='fa fa-spinner fa-spin'></i> started")
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
Import repositories from GitHub.com
|
||||
|
||||
%p.light
|
||||
Select projects you want to import.
|
||||
%span.pull-right
|
||||
Reload to see the progress.
|
||||
Select projects you want to import.
|
||||
|
||||
%hr
|
||||
%table.table.import-jobs
|
||||
|
@ -16,11 +14,11 @@
|
|||
%th Status
|
||||
%tbody
|
||||
- @already_added_projects.each do |project|
|
||||
%tr{id: "repo_#{project.id}", class: "#{project_status_css_class(project.import_status)}"}
|
||||
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"}
|
||||
%td= project.import_source
|
||||
%td
|
||||
%strong= link_to project.name_with_namespace, project
|
||||
%td
|
||||
%td.job-status
|
||||
- if project.import_status == 'finished'
|
||||
%span.cgreen
|
||||
%i.fa.fa-check
|
||||
|
@ -33,7 +31,7 @@
|
|||
%td= repo.full_name
|
||||
%td.import-target
|
||||
= repo.full_name
|
||||
%td.import-actions
|
||||
%td.import-actions.job-status
|
||||
= button_tag "Add", class: "btn btn-add-to-import"
|
||||
|
||||
|
||||
|
@ -46,3 +44,20 @@
|
|||
new_namespace = tr.find(".import-target input").prop("value")
|
||||
tr.find(".import-target").empty().append(new_namespace + "/" + tr.find(".import-target").data("project_name"))
|
||||
$.post "#{github_import_url}", {repo_id: id, new_namespace: new_namespace}, dataType: 'script'
|
||||
|
||||
|
||||
setInterval (->
|
||||
$.get "#{jobs_github_import_path}", (data)->
|
||||
$.each data, (i, job) ->
|
||||
job_item = $("#project_" + job.id)
|
||||
status_field = job_item.find(".job-status")
|
||||
|
||||
if job.import_status == 'finished'
|
||||
job_item.removeClass("active").addClass("success")
|
||||
status_field.html('<span class="cgreen"><i class="fa fa-check"></i> done</span>')
|
||||
else if job.import_status == 'started'
|
||||
status_field.html("<i class='fa fa-spinner fa-spin'></i> started")
|
||||
else
|
||||
status_field.html(job.import_status)
|
||||
|
||||
), 4000
|
||||
|
|
|
@ -57,6 +57,7 @@ Gitlab::Application.routes.draw do
|
|||
resource :github_import, only: [:create, :new] do
|
||||
get :status
|
||||
get :callback
|
||||
get :jobs
|
||||
end
|
||||
|
||||
#
|
||||
|
|
|
@ -31,6 +31,8 @@ module Gitlab
|
|||
@project.import_start
|
||||
end
|
||||
end
|
||||
|
||||
@project
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue