oversee 0.1.0 → 0.1.1
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 +4 -4
- data/app/components/oversee/field_component.rb +4 -1
- data/app/components/oversee/fields/display_row_component.rb +1 -1
- data/app/components/oversee/fields/input/boolean_component.rb +26 -0
- data/app/components/oversee/fields/input/string_component.rb +1 -1
- data/app/controllers/oversee/resources_controller.rb +25 -6
- data/app/oversee/resource.rb +10 -0
- data/app/views/layouts/oversee/application.html.erb +1 -1
- data/app/views/oversee/resources/edit.html.erb +0 -1
- data/app/views/oversee/resources/index.html.erb +1 -1
- data/app/views/oversee/resources/new.html.erb +28 -0
- data/app/views/oversee/resources/show.html.erb +11 -11
- data/config/routes.rb +10 -4
- data/lib/oversee/version.rb +1 -1
- data/lib/oversee.rb +5 -0
- metadata +6 -4
- data/app/views/oversee/resources/input_field.turbo_stream.erb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eda2b577791e666d84d3b2af260c06604489d84936c8ff907f51573f5441e7e7
|
4
|
+
data.tar.gz: 83ca5ac7da8e9b5f66bc19523e2b78875634e669b0acd7e34bad2b2dcb76887d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a7fc59d7b8f317e15927ec883017b374f5216aeaa5208bdb29d67f3cbf03dd944e57b7a90e5eac161cde60257276def41ebfa5e34399f3f41db43e47c3e63d8
|
7
|
+
data.tar.gz: a441505a216cf3df44dc9a58be3e135a5741564b3b8a51e1e486de08a53dfdfe0f640dcc2126813c1dd3d32d21deb806480f52a03b8deab54a6713af3e33b6ad
|
@@ -13,8 +13,11 @@ module Oversee
|
|
13
13
|
# A map for components to use when rendering a form input field
|
14
14
|
INPUT_MAP ={
|
15
15
|
string: Oversee::Fields::Input::StringComponent,
|
16
|
+
boolean: Oversee::Fields::Input::StringComponent,
|
16
17
|
integer: Oversee::Fields::Input::IntegerComponent,
|
17
18
|
datetime: Oversee::Fields::Input::DatetimeComponent,
|
19
|
+
text: Oversee::Fields::Input::StringComponent,
|
20
|
+
enum: Oversee::Fields::Input::StringComponent,
|
18
21
|
}
|
19
22
|
|
20
23
|
MAP = {
|
@@ -26,7 +29,7 @@ module Oversee
|
|
26
29
|
@kind = kind
|
27
30
|
@datatype = VALUE_MAP.key?(datatype) ? datatype : :text
|
28
31
|
@key = key
|
29
|
-
@value = value
|
32
|
+
@value = value || nil
|
30
33
|
end
|
31
34
|
|
32
35
|
def view_template
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Oversee
|
2
|
+
module Fields
|
3
|
+
module Input
|
4
|
+
class BooleanComponent < Phlex::HTML
|
5
|
+
def initialize(key:, value:)
|
6
|
+
@key = key
|
7
|
+
@value = value
|
8
|
+
end
|
9
|
+
|
10
|
+
def view_template
|
11
|
+
input type: "text", id: field_id, name: field_name, value: @value, class: "border rounded-md px-4 py-2 text-sm"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def field_id
|
17
|
+
"resource_#{@key.to_s}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def field_name
|
21
|
+
"resource[#{@key.to_s}]"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -8,7 +8,7 @@ module Oversee
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def view_template
|
11
|
-
input type: "text", id: field_id, name: field_name, value: @value, class: "border rounded-md px-4 py-2 text-sm"
|
11
|
+
input type: "text", id: field_id, name: field_name, value: @value, class: "border rounded-md px-4 py-2 text-sm w-full"
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
@@ -2,7 +2,7 @@ module Oversee
|
|
2
2
|
class ResourcesController < BaseController
|
3
3
|
include ActionView::RecordIdentifier
|
4
4
|
|
5
|
-
before_action :set_resource_class, except: [:update]
|
5
|
+
before_action :set_resource_class, except: [:create, :update]
|
6
6
|
before_action :set_resource, only: %i[show edit destroy]
|
7
7
|
|
8
8
|
def index
|
@@ -12,6 +12,23 @@ module Oversee
|
|
12
12
|
@pagy, @resources = pagy(@resources)
|
13
13
|
end
|
14
14
|
|
15
|
+
def new
|
16
|
+
@resource = @resource_class.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def create
|
20
|
+
@resource_class = params[:resource_class].constantize
|
21
|
+
@resource = @resource_class.new(resource_params)
|
22
|
+
|
23
|
+
respond_to do |format|
|
24
|
+
if @resource.update(resource_params)
|
25
|
+
format.html { redirect_to resource_path(@resource.id, resource: @resource_class) }
|
26
|
+
format.turbo_stream
|
27
|
+
else
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
15
32
|
def show
|
16
33
|
resource_associations
|
17
34
|
end
|
@@ -48,11 +65,13 @@ module Oversee
|
|
48
65
|
@value = @resource.send(@key)
|
49
66
|
@datatype = @resource.class.columns_hash[@key.to_s].type
|
50
67
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
68
|
+
respond_to do |format|
|
69
|
+
format.turbo_stream do
|
70
|
+
render turbo_stream: [
|
71
|
+
turbo_stream.replace(dom_id(@resource, @key), partial: "oversee/resources/input_field", locals: { datatype: @datatype, key: @key, value: @value })
|
72
|
+
]
|
73
|
+
end
|
74
|
+
end
|
56
75
|
end
|
57
76
|
|
58
77
|
private
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5
5
|
<meta name="ROBOTS" content="NOODP">
|
6
6
|
|
7
|
-
<title>Oversee | <%=
|
7
|
+
<title>Oversee | <%= Oversee.application_name %></title>
|
8
8
|
<%= csrf_meta_tags %>
|
9
9
|
<%= csp_meta_tag %>
|
10
10
|
|
@@ -4,7 +4,6 @@
|
|
4
4
|
<p class="text-xs uppercase font-medium text-gray-400">Resource</p>
|
5
5
|
<h1 class="text-xl"><%= params[:resource] %></h1>
|
6
6
|
</div>
|
7
|
-
|
8
7
|
<%= link_to 'Edit', edit_resource_path(@resource, resource: params[:resource]), class: "inline-flex items-center justify-center py-2 px-6 rounded bg-blue-500 text-white text-sm font-medium" %>
|
9
8
|
</div>
|
10
9
|
</div>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<p class="text-xs font-medium text-gray-500">Index</p>
|
5
5
|
<h1 class="text-2xl"><%= params[:resource] %></h1>
|
6
6
|
</div>
|
7
|
-
<%= link_to 'Add new',
|
7
|
+
<%= link_to 'Add new', new_resource_path(params[:resource]), class: "inline-flex items-center justify-center py-2 px-6 rounded bg-blue-500 text-white text-sm font-medium" %>
|
8
8
|
</div>
|
9
9
|
</div>
|
10
10
|
<div class="">
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<div class="p-8">
|
2
|
+
<div class="flex items-center justify-between">
|
3
|
+
<div>
|
4
|
+
<p class="text-xs uppercase font-medium text-gray-400">New</p>
|
5
|
+
<h1 class="text-xl"><%= params[:resource] %></h1>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="pb-8 px-8">
|
11
|
+
<%= form_with model: @resource, scope: :resource, url: create_resource_path(resource_class: @resource.class), scope: :resource do |f| %>
|
12
|
+
<div class="border-y -mx-8 py-8">
|
13
|
+
<% @resource_class.columns_hash.each do |key, metadata| %>
|
14
|
+
<% next if [@resource_class.primary_key, "created_at", "updated_at"].include?(key) %>
|
15
|
+
<div class="px-8 py-2">
|
16
|
+
<%= render Oversee::FieldLabelComponent.new(key: key, datatype: metadata.sql_type_metadata.type) %>
|
17
|
+
<div class="mt-2 w-2/3">
|
18
|
+
<%= render Oversee::FieldComponent.new(kind: :input, datatype: metadata.sql_type_metadata.type, key: key)%>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<%#= render Oversee::Fields::DisplayRowComponent.new(key: key, resource: @resource, datatype: metadata.sql_type_metadata.type, value: @resource.send(key)) %>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
<div class="flex justify-end mt-8">
|
25
|
+
<%= f.submit "Save", class: "bg-blue-500 px-4 py-2 rounded-md text-white text-sm hover:bg-blue-600 hover:cursor-pointer" %>
|
26
|
+
</div>
|
27
|
+
<% end %>
|
28
|
+
</div>
|
@@ -11,6 +11,17 @@
|
|
11
11
|
</div>
|
12
12
|
</div>
|
13
13
|
|
14
|
+
<div class="pb-8">
|
15
|
+
<div class="px-8">
|
16
|
+
<h3 class="text-xl mb-8">Attributes</h3>
|
17
|
+
<div class="border-y divide-y -mx-8">
|
18
|
+
<% @resource_class.columns_hash.each do |key, metadata| %>
|
19
|
+
<%= render Oversee::Fields::DisplayRowComponent.new(key: key, resource: @resource, datatype: metadata.sql_type_metadata.type, value: @resource.send(key)) %>
|
20
|
+
<% end %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
|
14
25
|
<div class="pb-8">
|
15
26
|
<div class="px-8">
|
16
27
|
<h3 class="text-xl mb-8">Associations</h3>
|
@@ -38,14 +49,3 @@
|
|
38
49
|
</div>
|
39
50
|
</div>
|
40
51
|
</div>
|
41
|
-
|
42
|
-
<div class="pb-8">
|
43
|
-
<div class="px-8">
|
44
|
-
<h3 class="text-xl mb-8">Attributes</h3>
|
45
|
-
<div class="border-y divide-y -mx-8">
|
46
|
-
<% @resource_class.columns_hash.each do |key, metadata| %>
|
47
|
-
<%= render Oversee::Fields::DisplayRowComponent.new(key: key, resource: @resource, datatype: metadata.sql_type_metadata.type, value: @resource.send(key)) %>
|
48
|
-
<% end %>
|
49
|
-
</div>
|
50
|
-
</div>
|
51
|
-
</div>
|
data/config/routes.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
Oversee::Engine.routes.draw do
|
2
2
|
|
3
3
|
# Resources
|
4
|
-
resources :resources do
|
5
|
-
|
6
|
-
get :
|
4
|
+
scope :resources, controller: "resources" do
|
5
|
+
get ":resource/", action: :index, as: :resources
|
6
|
+
get ":resource/new", action: :new, as: :new_resource
|
7
|
+
post ":resource_class/", action: :create, as: :create_resource
|
8
|
+
get ":resource/:id", action: :show, as: :resource
|
9
|
+
get ":resource/:id/edit", action: :edit, as: :edit_resource
|
10
|
+
patch ":resource/:id", action: :update, as: :update_resource
|
11
|
+
delete ":resource/:id", action: :destroy, as: :destroy_resource
|
12
|
+
get ":resource/:id/input_field", action: :input_field, as: :input_field
|
7
13
|
end
|
8
|
-
|
14
|
+
|
9
15
|
root to: "dashboard#show"
|
10
16
|
end
|
data/lib/oversee/version.rb
CHANGED
data/lib/oversee.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oversee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elvinas Predkelis
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-10-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- app/components/oversee/field_component.rb
|
100
100
|
- app/components/oversee/field_label_component.rb
|
101
101
|
- app/components/oversee/fields/display_row_component.rb
|
102
|
+
- app/components/oversee/fields/input/boolean_component.rb
|
102
103
|
- app/components/oversee/fields/input/datetime_component.rb
|
103
104
|
- app/components/oversee/fields/input/integer_component.rb
|
104
105
|
- app/components/oversee/fields/input/string_component.rb
|
@@ -118,6 +119,7 @@ files:
|
|
118
119
|
- app/mailers/oversee/application_mailer.rb
|
119
120
|
- app/models/oversee/application_record.rb
|
120
121
|
- app/oversee/cards.rb
|
122
|
+
- app/oversee/resource.rb
|
121
123
|
- app/views/layouts/oversee/application.html.erb
|
122
124
|
- app/views/oversee/application/_javascript.html.erb
|
123
125
|
- app/views/oversee/dashboard/show.html.erb
|
@@ -126,7 +128,7 @@ files:
|
|
126
128
|
- app/views/oversee/resources/edit.html.erb
|
127
129
|
- app/views/oversee/resources/index.html.erb
|
128
130
|
- app/views/oversee/resources/input_field.html.erb
|
129
|
-
- app/views/oversee/resources/
|
131
|
+
- app/views/oversee/resources/new.html.erb
|
130
132
|
- app/views/oversee/resources/show.html.erb
|
131
133
|
- app/views/oversee/resources/update.turbo_stream.erb
|
132
134
|
- app/views/shared/_sidebar.html.erb
|
@@ -157,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
159
|
- !ruby/object:Gem::Version
|
158
160
|
version: '0'
|
159
161
|
requirements: []
|
160
|
-
rubygems_version: 3.5.
|
162
|
+
rubygems_version: 3.5.9
|
161
163
|
signing_key:
|
162
164
|
specification_version: 4
|
163
165
|
summary: Lightweight admin dashboard for Rails
|