graph_starter 0.11.1 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/graph_starter/asset.rb +8 -8
- data/app/presenters/graph_starter/asset_presenter.rb +18 -2
- data/app/views/graph_starter/assets/_associations.html.slim +21 -0
- data/app/views/graph_starter/assets/_card.html.slim +30 -0
- data/app/views/graph_starter/assets/_cards.html.slim +1 -29
- data/app/views/graph_starter/assets/_form.html.slim +2 -1
- data/app/views/graph_starter/assets/_recommendations.html.slim +11 -0
- data/app/views/graph_starter/assets/show.html.slim +8 -2
- data/lib/graph_starter/version.rb +1 -1
- metadata +4 -2
- data/app/views/graph_starter/assets/_dynamic_items.html.slim +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e93b2fd5ab114bce65b7cd36d10356fcceb10d8
|
4
|
+
data.tar.gz: 6d1cb374a9e762c72dd1936fbee87713e73ae465
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6a8a9430df7817c48146f63821a7dac8453f726205e53e34cc3dc64855eecc8c1281a250fa64ed06bb560f28b1dc5f9f75b08a4c10d91fddd172c8f0106ac14
|
7
|
+
data.tar.gz: 2fd86d7a0b3ad29214d240f0396f997f41da9a5058543e494931a67cedadeef0e2bde7b53d80f23c365ca8cca30516c8c80b757828b109406452e740ae8c5bda
|
@@ -156,8 +156,6 @@ module GraphStarter
|
|
156
156
|
|
157
157
|
def self.body_property(property_name = nil)
|
158
158
|
if property_name.nil?
|
159
|
-
body_property(default_name_property) if @body_property.nil?
|
160
|
-
|
161
159
|
@body_property
|
162
160
|
else
|
163
161
|
fail "Cannot declare body_property twice" if @body_property.present?
|
@@ -176,7 +174,7 @@ module GraphStarter
|
|
176
174
|
fail "No body_property defined for #{self.name}!"
|
177
175
|
end
|
178
176
|
|
179
|
-
body_property
|
177
|
+
@body_property
|
180
178
|
end
|
181
179
|
|
182
180
|
|
@@ -210,11 +208,13 @@ module GraphStarter
|
|
210
208
|
|
211
209
|
send(method_name)
|
212
210
|
elsif method_name.to_sym == :body
|
213
|
-
self.class.
|
214
|
-
|
215
|
-
|
211
|
+
if self.class.body_property
|
212
|
+
self.class.send(:define_method, method_name) do
|
213
|
+
read_attribute(self.class.body_property)
|
214
|
+
end
|
216
215
|
|
217
|
-
|
216
|
+
send(method_name)
|
217
|
+
end
|
218
218
|
else
|
219
219
|
super
|
220
220
|
end
|
@@ -363,7 +363,7 @@ module GraphStarter
|
|
363
363
|
end
|
364
364
|
|
365
365
|
def self.authorized_associations
|
366
|
-
associations.except(*Asset.associations.keys + [:images, :image])
|
366
|
+
@authorized_associations ||= associations.except(*Asset.associations.keys + [:images, :image])
|
367
367
|
end
|
368
368
|
|
369
369
|
def self.icon_class
|
@@ -13,11 +13,27 @@ module GraphStarter
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def left_sidebar_exists?
|
16
|
-
@left_sidebar_exists ||=
|
16
|
+
@left_sidebar_exists ||= authorized_associations.size > 4
|
17
17
|
end
|
18
18
|
|
19
19
|
def main_column_exists?
|
20
|
-
@main_column_exists ||=
|
20
|
+
@main_column_exists ||= images_present? || body_present? || associations_in_body?
|
21
|
+
end
|
22
|
+
|
23
|
+
def images_present?
|
24
|
+
@images_present ||= ((asset.class.has_images? || asset.class.has_image?) && asset.image_array.present?)
|
25
|
+
end
|
26
|
+
|
27
|
+
def body_present?
|
28
|
+
@body_present ||= asset.body.present?
|
29
|
+
end
|
30
|
+
|
31
|
+
def associations_in_body?
|
32
|
+
@associations_in_body ||= !images_present? && !body_present? && authorized_associations.size > 0
|
33
|
+
end
|
34
|
+
|
35
|
+
def authorized_associations
|
36
|
+
@authorized_associations ||= asset.class.authorized_associations
|
21
37
|
end
|
22
38
|
end
|
23
39
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
- as_cards = false if !defined?(as_cards)
|
2
|
+
|
3
|
+
- asset.class.authorized_associations.each do |name, association|
|
4
|
+
- result = asset.send(name)
|
5
|
+
- if result.present?
|
6
|
+
.item
|
7
|
+
.content
|
8
|
+
.ui.horizontal.divider = name.to_s.humanize
|
9
|
+
.description
|
10
|
+
- if as_cards
|
11
|
+
.ui.link.cards
|
12
|
+
- Array(result).each do |object|
|
13
|
+
= render partial: 'card', locals: {asset: object}
|
14
|
+
- else
|
15
|
+
.ui.middle.aligned.big.divided.list
|
16
|
+
- Array(result).each do |object|
|
17
|
+
.item
|
18
|
+
i class="#{association.target_class.icon_class} icon"
|
19
|
+
.content
|
20
|
+
= link_to object.title, asset_path(object)
|
21
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
.card
|
2
|
+
.content
|
3
|
+
- if asset.private?
|
4
|
+
.right.floated.meta
|
5
|
+
i.hide.large.red.icon
|
6
|
+
.header = link_to asset.safe_title, asset_path(asset)
|
7
|
+
- if asset.class.has_images? || asset.class.has_image?
|
8
|
+
.image
|
9
|
+
- if asset.first_image_source_url.present?
|
10
|
+
= image_tag asset.first_image_source_url
|
11
|
+
- else
|
12
|
+
= image_tag 'missing'
|
13
|
+
- categories = Array(asset.categories).sort_by(&:name)
|
14
|
+
- if categories.present?
|
15
|
+
.content
|
16
|
+
.ui.relaxed.divided.list
|
17
|
+
- categories[0,2].each do |category|
|
18
|
+
.item
|
19
|
+
- if (category.class.has_images? || category.class.has_image?) && category.first_image_source_url.present?
|
20
|
+
= image_tag category.first_image_source_url, class: 'ui avatar image'
|
21
|
+
- else
|
22
|
+
i class="#{category.class.icon_class || 'folder'} large icon"
|
23
|
+
.content
|
24
|
+
= link_to category.name, asset_path(category)
|
25
|
+
- if categories.size > 2
|
26
|
+
.item
|
27
|
+
i.ellipsis.horizontal.large.icon
|
28
|
+
.content more categories
|
29
|
+
|
30
|
+
|
@@ -8,32 +8,4 @@
|
|
8
8
|
|
9
9
|
.ui.link.cards
|
10
10
|
- asset_group.each do |asset|
|
11
|
-
|
12
|
-
.content
|
13
|
-
- if asset.private?
|
14
|
-
.right.floated.meta
|
15
|
-
i.hide.large.red.icon
|
16
|
-
.header = link_to asset.safe_title, asset_path(asset)
|
17
|
-
- if asset.class.has_images? || asset.class.has_image?
|
18
|
-
.image
|
19
|
-
- if asset.first_image_source_url.present?
|
20
|
-
= image_tag asset.first_image_source_url
|
21
|
-
- else
|
22
|
-
= image_tag 'missing'
|
23
|
-
- categories = Array(asset.categories).sort_by(&:name)
|
24
|
-
- if categories.present?
|
25
|
-
.content
|
26
|
-
.ui.relaxed.divided.list
|
27
|
-
- categories[0,2].each do |category|
|
28
|
-
.item
|
29
|
-
- if (category.class.has_images? || category.class.has_image?) && category.first_image_source_url.present?
|
30
|
-
= image_tag category.first_image_source_url, class: 'ui avatar image'
|
31
|
-
- else
|
32
|
-
i class="#{category.class.icon_class || 'folder'} large icon"
|
33
|
-
.content
|
34
|
-
= link_to category.name, asset_path(category)
|
35
|
-
- if categories.size > 2
|
36
|
-
.item
|
37
|
-
i.ellipsis.horizontal.large.icon
|
38
|
-
.content more categories
|
39
|
-
|
11
|
+
= render partial: 'card', locals: {asset: asset}
|
@@ -18,6 +18,8 @@
|
|
18
18
|
= render partial: 'graph_starter/properties/property', locals: {property: property, asset: @asset, form: f, can_write: can_write}
|
19
19
|
|
20
20
|
- @asset.class.authorized_associations.each do |name, association|
|
21
|
+
- target_class = association.target_class
|
22
|
+
- next if !target_class.is_a?(GraphStarter::Asset)
|
21
23
|
javascript:
|
22
24
|
var current_#{name} = [];
|
23
25
|
|
@@ -25,7 +27,6 @@
|
|
25
27
|
label = name.to_s.humanize
|
26
28
|
|
27
29
|
- field_name = (association.type == :has_many ? "#{name.to_s.singularize}_ids" : "#{name}_id")
|
28
|
-
- target_class = association.target_class
|
29
30
|
- options = target_class.as(:n).pluck(target_class.name_property, target_class.id_property_name)
|
30
31
|
|
31
32
|
- html_options = {class: 'ui fluid search dropdown'}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
- recommendations = asset.secret_sauce_recommendations
|
2
|
+
- if recommendations.present?
|
3
|
+
.item
|
4
|
+
.content
|
5
|
+
.ui.horizontal.divider Recommended
|
6
|
+
.description
|
7
|
+
.ui.middle.aligned.big.divided.list
|
8
|
+
- recommendations.each do |recommendation|
|
9
|
+
.item data-score="#{recommendation.score}"
|
10
|
+
.content = link_to recommendation.asset.title, asset_path(recommendation.asset)
|
11
|
+
|
@@ -18,14 +18,20 @@ javascript:
|
|
18
18
|
|
19
19
|
- if asset_presenter.main_column_exists?
|
20
20
|
div class="#{center_width} wide column"
|
21
|
-
|
21
|
+
- if asset_presenter.associations_in_body?
|
22
|
+
= render partial: 'associations', locals: {asset: @asset, as_cards: true}
|
23
|
+
- else
|
24
|
+
= render_body(@asset, @model_slug)
|
22
25
|
|
23
26
|
div class="#{right_width} wide column" id="right-column"
|
24
27
|
- if app_user_is_admin?
|
25
28
|
= render partial: 'admin_buttons', locals: {asset: @asset}
|
26
29
|
|
27
30
|
- if !asset_presenter.left_sidebar_exists?
|
28
|
-
|
31
|
+
.ui.items
|
32
|
+
- if !asset_presenter.associations_in_body?
|
33
|
+
= render partial: 'associations', locals: {asset: @asset}
|
34
|
+
= render partial: 'recommendations', locals: {asset: @asset}
|
29
35
|
|
30
36
|
= render partial: 'property_items', locals: {asset: @asset}
|
31
37
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graph_starter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Underwood
|
@@ -135,12 +135,14 @@ files:
|
|
135
135
|
- app/presenters/graph_starter/asset_presenter.rb
|
136
136
|
- app/views/graph_starter/assets/TODO.md
|
137
137
|
- app/views/graph_starter/assets/_admin_buttons.html.slim
|
138
|
+
- app/views/graph_starter/assets/_associations.html.slim
|
138
139
|
- app/views/graph_starter/assets/_body.html.slim
|
140
|
+
- app/views/graph_starter/assets/_card.html.slim
|
139
141
|
- app/views/graph_starter/assets/_cards.html.slim
|
140
|
-
- app/views/graph_starter/assets/_dynamic_items.html.slim
|
141
142
|
- app/views/graph_starter/assets/_form.html.slim
|
142
143
|
- app/views/graph_starter/assets/_images.html.slim
|
143
144
|
- app/views/graph_starter/assets/_property_items.html.slim
|
145
|
+
- app/views/graph_starter/assets/_recommendations.html.slim
|
144
146
|
- app/views/graph_starter/assets/_search.html.slim
|
145
147
|
- app/views/graph_starter/assets/edit.html.slim
|
146
148
|
- app/views/graph_starter/assets/home.html.slim
|
@@ -1,48 +0,0 @@
|
|
1
|
-
.ui.items
|
2
|
-
.item
|
3
|
-
.ui.statistic
|
4
|
-
.label
|
5
|
-
| Total Views
|
6
|
-
.value
|
7
|
-
= asset.total_view_count || 0
|
8
|
-
|
9
|
-
.ui.statistic
|
10
|
-
.label
|
11
|
-
| Unique Views
|
12
|
-
.value
|
13
|
-
= asset.unique_view_count || 0
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
- asset.class.authorized_associations.each do |name, association|
|
18
|
-
- result = asset.send(name)
|
19
|
-
- if result.present?
|
20
|
-
.item
|
21
|
-
.content
|
22
|
-
.ui.horizontal.divider = name.to_s.humanize
|
23
|
-
.description
|
24
|
-
- case association.type
|
25
|
-
- when :has_one
|
26
|
-
- object = result
|
27
|
-
i class="#{association.target_class.icon_class} icon"
|
28
|
-
= link_to object.title, asset_path(object)
|
29
|
-
- when :has_many
|
30
|
-
.ui.middle.aligned.big.divided.list
|
31
|
-
- result.each do |object|
|
32
|
-
.item
|
33
|
-
i class="#{association.target_class.icon_class} icon"
|
34
|
-
.content
|
35
|
-
= link_to object.title, asset_path(object)
|
36
|
-
|
37
|
-
- recommendations = asset.secret_sauce_recommendations
|
38
|
-
- if recommendations.present?
|
39
|
-
.item
|
40
|
-
.content
|
41
|
-
.ui.horizontal.divider Recommended
|
42
|
-
.description
|
43
|
-
.ui.middle.aligned.big.divided.list
|
44
|
-
- recommendations.each do |recommendation|
|
45
|
-
.item data-score="#{recommendation.score}"
|
46
|
-
.content = link_to recommendation.asset.title, asset_path(recommendation.asset)
|
47
|
-
|
48
|
-
|