pg_rails 7.1.1.pre.3 → 7.1.1.pre.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08c5ab91e5c32e537c33112965e6be68eb7d5992e236f27752a182af7cf584ff'
4
- data.tar.gz: 32461e729fa13575fbd61f9c02e5907e06e6b8acabd18068db0c049483a83536
3
+ metadata.gz: 8ed654c2ed0008b0a029aafcf59fbf1fb11d681b091852cdf91075eb59027b4e
4
+ data.tar.gz: 8c5030277d34251d6e214697475c1e79121a40b1c5c9b757eb9ca95d04261bfb
5
5
  SHA512:
6
- metadata.gz: 1b0caab961e097ce6a9b770fecbc02c179013987d20fdd016f44f2675084555b44ff700f94abe07f748fb4a55466614ef44c28758420881c096781936edbb9bb
7
- data.tar.gz: 6652961ad489a6a699819874c79c69356f6a9f8882f1c4ed195556b16d8836c440886db77bee3f2a60f2fda6c07e9a68f525c2c91ceba9748c01caf89449e421
6
+ metadata.gz: f2a334fbf6cf1e62e629bb231ab9ecca2300b30db6f04e1fb6360e7d9d2688a9399398d860cc0930418889b5960dfe900eb6e7bd8a7be8ff0e32d8e48513244b
7
+ data.tar.gz: f3686b6c215d38d54147e1506d7645b36ccf29ed2fde0dae04574662a649550d952deb5bce503a6ff3403dc98c77235364485e04e3dc4171f39af7ee4db672cf
@@ -64,8 +64,7 @@ input[type=datetime-local], input[type=datetime] {
64
64
  padding: 0.25rem 1rem;
65
65
  }
66
66
  }
67
- .listado td:has(.btn) {
68
- // FIXME: rompe porque es una tabla y tiene que tener su propio display
67
+ .listado .actions-wrapper {
69
68
  display: flex;
70
69
  justify-content: flex-end;
71
70
  gap: 4px;
@@ -24,7 +24,7 @@ module PgEngine
24
24
  end
25
25
 
26
26
  def show
27
- add_breadcrumb instancia_modelo, instancia_modelo.target_object
27
+ add_breadcrumb instancia_modelo.to_s_short, instancia_modelo.target_object
28
28
 
29
29
  pg_respond_show
30
30
  end
@@ -34,7 +34,7 @@ module PgEngine
34
34
  end
35
35
 
36
36
  def edit
37
- add_breadcrumb instancia_modelo, instancia_modelo.target_object
37
+ add_breadcrumb instancia_modelo.to_s_short, instancia_modelo.target_object
38
38
  add_breadcrumb 'Editando'
39
39
  end
40
40
 
@@ -160,7 +160,9 @@ module PgEngine
160
160
  end
161
161
  else
162
162
  format.turbo_stream do
163
- render turbo_stream: turbo_stream.remove(model)
163
+ # Esto no es totalmente limpio pero funciona tanto en los listados como en los
164
+ # modal show
165
+ render turbo_stream: turbo_stream.remove(model) + turbo_stream.remove_all('.modal')
164
166
  end
165
167
  format.html do
166
168
  redirect_back(fallback_location: root_path, notice: msg, status: 303)
@@ -113,6 +113,12 @@ module PgEngine
113
113
  protected
114
114
 
115
115
  def render_my_component(component, status)
116
+ # Esto es para que saltee los turbo frames y genere
117
+ # un full reload. El turbo_no_cache no es estrictamente necesario
118
+ # pero lo dejo por las dudas
119
+ @turbo_page_requires_reload = true
120
+ @turbo_no_cache = true
121
+
116
122
  respond_to do |format|
117
123
  format.html do
118
124
  render component.alert_wrapped(view_context),
@@ -128,6 +134,11 @@ module PgEngine
128
134
  status:
129
135
  end
130
136
 
137
+ format.json do
138
+ html = component.render_in(view_context)
139
+ render json: { html: }, status:
140
+ end
141
+
131
142
  format.any do
132
143
  head status
133
144
  end
@@ -1,7 +1,7 @@
1
1
  module Users
2
2
  class ConfirmationsController < Devise::ConfirmationsController
3
3
  # GET /resource/confirmation?confirmation_token=abcdef
4
- def show # rubocop:disable Metrics/AbcSize
4
+ def show
5
5
  self.resource = resource_class.confirm_by_token(params[:confirmation_token])
6
6
  yield resource if block_given?
7
7
 
@@ -22,6 +22,10 @@ module PgEngine
22
22
  object.as_json(options).tap { |o| o[:to_s] = to_s }
23
23
  end
24
24
 
25
+ def to_s_short
26
+ truncate(object.to_s)
27
+ end
28
+
25
29
  # rubocop:disable Style/MissingRespondToMissing
26
30
  def method_missing(method_name, *args, &)
27
31
  valor = object.attributes[method_name.to_s]
@@ -6,7 +6,7 @@
6
6
  = f.input :message, as: :text
7
7
  - else
8
8
  = f.rich_text_area :message
9
- = f.input :message_text, as: :text
9
+ = f.input :message_text, as: :text, hint: 'Solo para emails, para la plain/text part'
10
10
  = f.input :tooltip
11
11
  = f.input :subject
12
12
  = f.input :record_type
@@ -53,10 +53,11 @@ div
53
53
  - atributos_para_listar.each do |att|
54
54
  td.text-nowrap = object.send(att)
55
55
  td.text-nowrap.text-end.ps-5
56
- = object.extra_actions(size: :sm) if object.respond_to? :extra_actions
57
- = object.show_link
58
- = object.edit_link(text: '', klass: 'btn-light')
59
- = object.destroy_link
56
+ .actions-wrapper
57
+ = object.extra_actions(size: :sm) if object.respond_to? :extra_actions
58
+ = object.show_link
59
+ = object.edit_link(text: '', klass: 'btn-light')
60
+ = object.destroy_link
60
61
 
61
62
  .ps-3.justify-content-center
62
63
  = paginate(@collection)
@@ -1,8 +1,6 @@
1
1
  DatabaseCleaner.clean_with(:truncation, except: %w(ar_internal_metadata))
2
2
 
3
- MAIL = 'mrosso10@gmail.com'
3
+ FactoryBot.create :user, email: 'mrosso10@gmail.com', nombre: 'Martín', apellido: 'Rosso', password: 'admin123',
4
+ confirmed_at: Time.now, developer: true
4
5
 
5
- unless User.where(email: MAIL).exists?
6
- FactoryBot.create :user, email: MAIL, nombre: 'Martín', apellido: 'Rosso', password: 'admin123',
7
- confirmed_at: Time.now, developer: true
8
- end
6
+ Account.first.users << FactoryBot.create(:user, orphan: true)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module PgEngine
4
4
  class EmailObserver
5
- def self.delivered_email(message) # rubocop:disable Metrics/AbcSize
5
+ def self.delivered_email(message)
6
6
  message_id = message.message_id
7
7
  mailer = message.delivery_handler.to_s
8
8
  status = get_status(message)
@@ -37,8 +37,8 @@
37
37
 
38
38
  FactoryBot.define do
39
39
  factory :user, class: 'User' do
40
- nombre { Faker::Name.name }
41
- apellido { Faker::Name.name }
40
+ nombre { Faker::Name.first_name }
41
+ apellido { Faker::Name.last_name }
42
42
  email { Faker::Internet.email }
43
43
  password { "password#{rand(99_999)}" }
44
44
  confirmed_at { Faker::Date.backward }
@@ -1,5 +1,7 @@
1
+ // TODO: borrar deprecated file
1
2
  export default class {
2
3
  setCookie (cname, cvalue, exdays) {
4
+ console.log('DEPRECATED setCookie')
3
5
  const d = new Date()
4
6
  d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000))
5
7
  const expires = 'expires=' + d.toUTCString()
@@ -7,6 +9,7 @@ export default class {
7
9
  }
8
10
 
9
11
  getCookie (cname) {
12
+ console.log('DEPRECATED getCookie')
10
13
  const name = cname + '='
11
14
  const ca = document.cookie.split(';')
12
15
  for (let i = 0; i < ca.length; i++) {
@@ -1,3 +1,25 @@
1
+ export function setCookie (cname, cvalue, exdays) {
2
+ const d = new Date()
3
+ d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000))
4
+ const expires = 'expires=' + d.toUTCString()
5
+ document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'
6
+ }
7
+
8
+ export function getCookie (cname) {
9
+ const name = cname + '='
10
+ const ca = document.cookie.split(';')
11
+ for (let i = 0; i < ca.length; i++) {
12
+ let c = ca[i]
13
+ while (c.charAt(0) === ' ') {
14
+ c = c.substring(1)
15
+ }
16
+ if (c.indexOf(name) === 0) {
17
+ return c.substring(name.length, c.length)
18
+ }
19
+ }
20
+ return ''
21
+ }
22
+
1
23
  export function round (value) {
2
24
  return Math.round(value * 100) / 100
3
25
  }
@@ -5,6 +5,9 @@ html
5
5
  meta charset="UTF-8"
6
6
  meta http-equiv="X-UA-Compatible" content="IE=edge"
7
7
  meta name="viewport" content="width=device-width,initial-scale=1"
8
+ - if @turbo_page_requires_reload
9
+ meta name="turbo-visit-control" content="reload"
10
+
8
11
  - cache :title_icon
9
12
  title = t('app_name')
10
13
  - begin
@@ -1,9 +1,14 @@
1
- .modal.modal-lg.modal-asociable[tabindex="-1" data-controller="modal" data-remove-on-hide="true"]
1
+ .modal.modal-lg.modal-asociable[tabindex="-1" data-controller="modal"
2
+ data-remove-on-hide="true" data-turbo-temporary="true"]
2
3
  .modal-dialog
3
4
  .modal-content
4
5
  .modal-header
5
- .modal-title
6
- h3 Item
6
+ = link_to object.target_object do
7
+ | Ir al #{object.class.nombre_singular.downcase}
7
8
  a.btn-close[type="button" data-bs-dismiss="modal" aria-label="Close"]
8
9
  .modal-body
9
- = render object
10
+ = turbo_frame_tag :modal_generic, target: :_top do
11
+ .float-end
12
+ = object.edit_link
13
+ = object.destroy_link
14
+ = render object
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgRails
4
- VERSION = '7.1.1-3'
4
+ VERSION = '7.1.1-5'
5
5
  end
@@ -41,9 +41,10 @@ div
41
41
  - atributos_para_listar.each do |att|
42
42
  th = object.send(att)
43
43
  td.text-nowrap.text-end.ps-5
44
- = object.show_link
45
- = object.edit_link(text: '', klass: 'btn-light')
46
- = object.destroy_link
44
+ .actions-wrapper
45
+ = object.show_link
46
+ = object.edit_link(text: '', klass: 'btn-light')
47
+ = object.destroy_link
47
48
 
48
49
  .ps-3.justify-content-center
49
50
  = paginate(@collection)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.1.pre.3
4
+ version: 7.1.1.pre.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martín Rosso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-18 00:00:00.000000000 Z
11
+ date: 2024-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails