mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-17 00:46:21 +00:00
feat: lista de links #13096
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
29f4c7a847
commit
4eb23a787b
8 changed files with 90 additions and 4 deletions
|
@ -91,6 +91,10 @@ class ApplicationController < ActionController::Base
|
|||
breadcrumb 'stats.index', root_path, match: :exact
|
||||
end
|
||||
|
||||
def site
|
||||
@site ||= find_site
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def configure_permitted_parameters
|
||||
|
|
41
app/controllers/build_stats_controller.rb
Normal file
41
app/controllers/build_stats_controller.rb
Normal file
|
@ -0,0 +1,41 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# La lista de estados de compilación, por ahora solo mostramos el último
|
||||
# estado.
|
||||
class BuildStatsController < ApplicationController
|
||||
include ActionView::Helpers::NumberHelper
|
||||
include ActionView::Helpers::DateHelper
|
||||
|
||||
before_action :authenticate_usuarie!
|
||||
|
||||
breadcrumb -> { current_usuarie.email }, :edit_usuarie_registration_path
|
||||
breadcrumb 'sites.index', :sites_path, match: :exact
|
||||
breadcrumb -> { site.title }, -> { site_posts_path(site, locale: locale) }, match: :exact
|
||||
|
||||
def index
|
||||
authorize SiteBuildStat.new(site)
|
||||
breadcrumb I18n.t('build_stats.index.title'), ''
|
||||
|
||||
@headers = %w[type url seconds size].map do |header|
|
||||
t("deploy_mailer.deployed.th.#{header}")
|
||||
end
|
||||
|
||||
@table = site.deployment_list.map do |deploy|
|
||||
type = deploy.class.name.underscore
|
||||
urls = deploy.respond_to?(:urls) ? deploy.urls : [deploy.url].compact
|
||||
urls = [nil] if urls.empty?
|
||||
build_stat = deploy.build_stats.where(status: true).last
|
||||
seconds = build_stat&.seconds || 0
|
||||
|
||||
{
|
||||
title: t("deploy_mailer.deployed.#{type}.title"),
|
||||
urls: urls,
|
||||
seconds: {
|
||||
human: distance_of_time_in_words(seconds),
|
||||
machine: "PT#{seconds}S"
|
||||
},
|
||||
size: number_to_human_size(build_stat&.bytes || 0, precision: 2)
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
|
@ -159,10 +159,6 @@ class PostsController < ApplicationController
|
|||
end.transform_keys(&:to_sym)
|
||||
end
|
||||
|
||||
def site
|
||||
@site ||= find_site
|
||||
end
|
||||
|
||||
def post
|
||||
@post ||= site.posts(lang: locale).find(params[:post_id] || params[:id])
|
||||
end
|
||||
|
|
16
app/policies/site_build_stat_policy.rb
Normal file
16
app/policies/site_build_stat_policy.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Quiénes pueden ver estados de compilación de un sitio
|
||||
class SiteBuildStatPolicy
|
||||
attr_reader :site_build_stat, :usuarie
|
||||
|
||||
def initialize(usuarie, site_build_stat)
|
||||
@usuarie = usuarie
|
||||
@site_build_stat = site_build_stat
|
||||
end
|
||||
|
||||
# Todes les usuaries e invitades de este sitio
|
||||
def index?
|
||||
site_build_stat.site.usuarie?(usuarie) || site_build_stat.site.invitade?(usuarie)
|
||||
end
|
||||
end
|
21
app/views/build_stats/index.haml
Normal file
21
app/views/build_stats/index.haml
Normal file
|
@ -0,0 +1,21 @@
|
|||
%main.row
|
||||
%aside.menu.col-md-3
|
||||
%h1= @site.title
|
||||
%p.lead= @site.description
|
||||
.col
|
||||
%h1= t('.title')
|
||||
|
||||
%table.table
|
||||
%thead
|
||||
%tr
|
||||
- @headers.each do |header|
|
||||
%th{ scope: 'col' }= header
|
||||
%tbody
|
||||
- @table.each do |row|
|
||||
- row[:urls].each do |url|
|
||||
%tr
|
||||
%th{ scope: 'row' }= row[:title]
|
||||
%td= link_to_if url.present?, url, url
|
||||
%td
|
||||
%time{ datetime: row[:seconds][:machine] }= row[:seconds][:human]
|
||||
%td= row[:size]
|
|
@ -697,3 +697,6 @@ en:
|
|||
queries:
|
||||
show:
|
||||
empty: '(empty)'
|
||||
build_stats:
|
||||
index:
|
||||
title: "Publications"
|
||||
|
|
|
@ -705,3 +705,6 @@ es:
|
|||
queries:
|
||||
show:
|
||||
empty: '(vacío)'
|
||||
build_stats:
|
||||
index:
|
||||
title: "Publicaciones"
|
||||
|
|
|
@ -75,5 +75,7 @@ Rails.application.routes.draw do
|
|||
get :'stats/host', to: 'stats#host'
|
||||
get :'stats/uris', to: 'stats#uris'
|
||||
get :'stats/resources', to: 'stats#resources'
|
||||
|
||||
resources :build_stats, only: %i[index]
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue