+ helper_method :running_pipelines
+ def running_pipelines
+ pi = PipelineInstance.order(["started_at asc", "created_at asc"]).filter([["state", "in", ["RunningOnServer", "RunningOnClient"]]])
+ jobs = {}
+ pi.each do |pl|
+ pl.components.each do |k,v|
+ if v.is_a? Hash and v[:job]
+ jobs[v[:job][:uuid]] = {}
+ end
+ end
+ end
+
+ if jobs.keys.any?
+ Job.filter([["uuid", "in", jobs.keys]]).each do |j|
+ jobs[j[:uuid]] = j
+ end
+
+ pi.each do |pl|
+ pl.components.each do |k,v|
+ if v.is_a? Hash and v[:job]
+ v[:job] = jobs[v[:job][:uuid]]
+ end
+ end
+ end
+ end
+
+ pi
+ end
+
+ helper_method :finished_pipelines
+ def finished_pipelines lim
+ PipelineInstance.limit(lim).order(["finished_at desc"]).filter([["state", "in", ["Complete", "Failed", "Paused"]], ["finished_at", "!=", nil]])
+ end
+
+ helper_method :recent_collections
+ def recent_collections lim
+ c = Collection.limit(lim).order(["modified_at desc"]).filter([["owner_uuid", "is_a", "arvados#group"]])
+ own = {}
+ Group.filter([["uuid", "in", c.map(&:owner_uuid)]]).each do |g|
+ own[g[:uuid]] = g
+ end
+ {collections: c, owners: own}
+ end
+