blacklight-spotlight 4.0.3 → 4.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/assets/stylesheets/spotlight/_catalog.scss +0 -12
- data/app/assets/stylesheets/spotlight/_header.scss +9 -0
- data/app/assets/stylesheets/spotlight/browse_group_categories_block.scss +4 -4
- data/app/components/blacklight/icons/arrow_alt_circle_left_component.rb +15 -0
- data/app/components/blacklight/icons/arrow_alt_circle_right_component.rb +15 -0
- data/app/components/blacklight/icons/arrow_back_ios_component.rb +15 -0
- data/app/components/blacklight/icons/arrow_forward_ios_component.rb +15 -0
- data/app/components/blacklight/icons/check_circle_component.rb +15 -0
- data/app/components/blacklight/icons/check_component.rb +15 -0
- data/app/components/blacklight/icons/chevron_right_component.rb +15 -0
- data/app/components/blacklight/icons/close_component.rb +15 -0
- data/app/components/blacklight/icons/edit_component.rb +15 -0
- data/app/components/blacklight/icons/error_component.rb +14 -0
- data/app/components/blacklight/icons/highlight_off_component.rb +15 -0
- data/app/components/blacklight/icons/info_component.rb +15 -0
- data/app/components/blacklight/icons/warning_component.rb +14 -0
- data/app/components/blacklight/icons/zoom_in_component.rb +15 -0
- data/app/components/blacklight/icons/zoom_out_component.rb +15 -0
- data/app/components/spotlight/analytics/aggregation_component.html.erb +14 -0
- data/app/components/spotlight/analytics/aggregation_component.rb +37 -0
- data/app/components/spotlight/analytics/dashboard_component.html.erb +50 -0
- data/app/components/spotlight/analytics/dashboard_component.rb +32 -0
- data/app/components/spotlight/document_admin_table_component.html.erb +36 -0
- data/app/components/spotlight/document_admin_table_component.rb +23 -0
- data/app/components/spotlight/header_component.html.erb +1 -0
- data/app/components/spotlight/header_component.rb +6 -0
- data/app/components/spotlight/icon_component.rb +13 -0
- data/app/components/spotlight/solr_document_legacy_embed_component.html.erb +11 -0
- data/app/components/spotlight/solr_document_legacy_embed_component.rb +7 -0
- data/app/controllers/concerns/spotlight/controller.rb +1 -1
- data/app/controllers/spotlight/browse_controller.rb +2 -0
- data/app/controllers/spotlight/catalog_controller.rb +6 -2
- data/app/controllers/spotlight/dashboards_controller.rb +4 -3
- data/app/models/concerns/spotlight/exhibit_analytics.rb +6 -4
- data/app/models/spotlight/analytics/ga.rb +90 -43
- data/app/models/spotlight/blacklight_configuration.rb +8 -1
- data/app/views/layouts/spotlight/base.html.erb +2 -2
- data/app/views/shared/_header_navbar.html.erb +6 -12
- data/app/views/spotlight/catalog/_admin_index_header_default.html.erb +1 -0
- data/app/views/spotlight/catalog/_admin_thumbnail_default.html.erb +1 -0
- data/app/views/spotlight/catalog/_document_admin_table.html.erb +8 -1
- data/app/views/spotlight/catalog/_document_row.html.erb +2 -5
- data/app/views/spotlight/catalog/_index_compact_default.html.erb +1 -0
- data/app/views/spotlight/catalog/edit.html.erb +15 -2
- data/app/views/spotlight/dashboards/analytics.html.erb +2 -2
- data/app/views/spotlight/pages/_view_type_group.html.erb +2 -5
- data/app/views/spotlight/sir_trevor/blocks/_browse_group_categories_block.html.erb +2 -2
- data/app/views/spotlight/sir_trevor/blocks/_embedded_document.html.erb +8 -0
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_embed_block.html.erb +3 -3
- data/app/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb +1 -1
- data/config/locales/spotlight.en.yml +16 -4
- data/lib/generators/spotlight/templates/catalog_controller.rb +3 -0
- data/lib/generators/spotlight/templates/config/initializers/spotlight_initializer.rb +16 -12
- data/lib/spotlight/engine.rb +11 -9
- data/lib/spotlight/version.rb +1 -1
- data/lib/spotlight.rb +3 -0
- data/spec/support/features/test_features_helpers.rb +1 -1
- metadata +61 -31
- data/app/assets/images/blacklight/arrow-alt-circle-left.svg +0 -1
- data/app/assets/images/blacklight/arrow-alt-circle-right.svg +0 -1
- data/app/assets/images/blacklight/arrow_back_ios.svg +0 -1
- data/app/assets/images/blacklight/arrow_forward_ios.svg +0 -1
- data/app/assets/images/blacklight/check.svg +0 -1
- data/app/assets/images/blacklight/check_circle.svg +0 -1
- data/app/assets/images/blacklight/chevron_right.svg +0 -1
- data/app/assets/images/blacklight/close.svg +0 -1
- data/app/assets/images/blacklight/edit.svg +0 -1
- data/app/assets/images/blacklight/error.svg +0 -1
- data/app/assets/images/blacklight/highlight_off.svg +0 -1
- data/app/assets/images/blacklight/info.svg +0 -1
- data/app/assets/images/blacklight/warning.svg +0 -1
- data/app/assets/images/blacklight/zoom_in.svg +0 -1
- data/app/assets/images/blacklight/zoom_out.svg +0 -1
- data/app/models/spotlight/analytics/ga_model.rb +0 -29
- data/app/views/spotlight/dashboards/_analytics.html.erb +0 -35
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0eb6356397553e1c11cf63f0ffea8c801d87985c9ac0cfdb953e349f85f7df86
|
|
4
|
+
data.tar.gz: 11c1f79ab20f53abc3616c5bb3281748fcaf6c43eedc4366021e2120ff8689f0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 607ba81110242c6cc63bcf6215ccea19ca51d886e3ae7d62a5a720a546c222b599a2057ae5542686a3d39eb3e08212883da12cc59924a820e4030b7d990ea9b5
|
|
7
|
+
data.tar.gz: 37cf56a48274beae41af42e2f13ecac08644924732eeb492c8e7aa9168559605063348c8bad53e30ba5d7bf7790b02d42702210f0a9391a1c1f59156a8ac6cbf
|
|
@@ -97,14 +97,6 @@ form.edit_solr_document {
|
|
|
97
97
|
@extend .col-md-6;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
.edit_solr_document {
|
|
101
|
-
float: right;
|
|
102
|
-
@extend .col-md-6;
|
|
103
|
-
border-bottom: 1px solid #ccc;
|
|
104
|
-
margin-bottom: 1em;
|
|
105
|
-
padding-bottom: 1em;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
100
|
.tags, .dl-horizontal {
|
|
109
101
|
@extend .col-md-6;
|
|
110
102
|
}
|
|
@@ -114,10 +106,6 @@ form.edit_solr_document {
|
|
|
114
106
|
}
|
|
115
107
|
}
|
|
116
108
|
|
|
117
|
-
.edit_solr_document {
|
|
118
|
-
@extend .clearfix;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
109
|
#sortAndPerPage {
|
|
122
110
|
align-items: flex-end;
|
|
123
111
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
cursor: pointer;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
.blacklight-
|
|
36
|
+
.blacklight-icons-arrow-alt-circle-left, .blacklight-icons-arrow-alt-circle-right {
|
|
37
37
|
display: inline-block;
|
|
38
38
|
fill: $gray-600;
|
|
39
39
|
height: 44px;
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
[aria-disabled="true"] {
|
|
52
|
-
.blacklight-
|
|
52
|
+
.blacklight-icons-arrow-alt-circle-left, .blacklight-icons-arrow-alt-circle-right {
|
|
53
53
|
fill: $gray-400;
|
|
54
54
|
|
|
55
55
|
&:hover,&:focus {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
|
|
67
67
|
@media screen and (min-width: breakpoint-min("md")) {
|
|
68
68
|
.browse-group-categories-controls {
|
|
69
|
-
.blacklight-
|
|
69
|
+
.blacklight-icons-arrow-alt-circle-left, .blacklight-icons-arrow-alt-circle-right {
|
|
70
70
|
height: 32px;
|
|
71
71
|
width: 32px;
|
|
72
72
|
}
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
[dir="rtl"] {
|
|
84
|
-
.browse-group-categories-block .blacklight-
|
|
84
|
+
.browse-group-categories-block .blacklight-icons-arrow-alt-circle-left, .blacklight-icons-arrow-alt-circle-right{
|
|
85
85
|
transform: rotate(180deg);
|
|
86
86
|
}
|
|
87
87
|
// Hack to override overflow issue not fixed in RTL upstream in tiny-slider
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ArrowAltCircleLeft
|
|
6
|
+
class ArrowAltCircleLeftComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
9
|
+
<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->
|
|
10
|
+
<path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ArrowAltCircleRight
|
|
6
|
+
class ArrowAltCircleRightComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
9
|
+
<!-- Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->
|
|
10
|
+
<path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ArrowBackIos
|
|
6
|
+
class ArrowBackIosComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path opacity=".87" fill="none" d="M0 0h24v24H0V0z"/>
|
|
10
|
+
<path d="M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ArrowForwardIos
|
|
6
|
+
class ArrowForwardIosComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path opacity=".87" fill="none" d="M24 24H0V0h24v24z"/>
|
|
10
|
+
<path d="M6.49 20.13l1.77 1.77 9.9-9.9-9.9-9.9-1.77 1.77L14.62 12l-8.13 8.13z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for CheckCircle
|
|
6
|
+
class CheckCircleComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path fill="none" d="M0 0h24v24H0V0z"/>
|
|
10
|
+
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for Check
|
|
6
|
+
class CheckComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path fill="none" d="M0 0h24v24H0V0z"/>
|
|
10
|
+
<path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ChevronRight
|
|
6
|
+
class ChevronRightComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path fill="none" d="M0 0h24v24H0V0z"/>
|
|
10
|
+
<path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for Close
|
|
6
|
+
class CloseComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
|
|
9
|
+
<path d="M0 0h24v24H0V0z" fill="none"/>
|
|
10
|
+
<path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for Edit
|
|
6
|
+
class EditComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path fill="none" d="M0 0h24v24H0V0z"/>
|
|
10
|
+
<path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM21.41 6.34l-3.75-3.75-2.53 2.54 3.75 3.75 2.53-2.54z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for Error
|
|
6
|
+
class ErrorComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>
|
|
10
|
+
</svg>
|
|
11
|
+
SVG
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for HighlightOff
|
|
6
|
+
class HighlightOffComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
|
|
9
|
+
<path d="M0 0h24v24H0V0z" fill="none"/>
|
|
10
|
+
<path d="M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for Info
|
|
6
|
+
class InfoComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path fill="none" d="M0 0h24v24H0V0z"/>
|
|
10
|
+
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for Warning
|
|
6
|
+
class WarningComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
|
9
|
+
<path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/>
|
|
10
|
+
</svg>
|
|
11
|
+
SVG
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ZoomIn
|
|
6
|
+
class ZoomInComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
|
|
9
|
+
<path d="M0 0h24v24H0V0z" fill="none"/>
|
|
10
|
+
<path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Blacklight
|
|
4
|
+
module Icons
|
|
5
|
+
# Icon for ZoomOut
|
|
6
|
+
class ZoomOutComponent < Spotlight::IconComponent
|
|
7
|
+
self.svg = <<~SVG
|
|
8
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
|
|
9
|
+
<path d="M0 0h24v24H0V0z" fill="none"/>
|
|
10
|
+
<path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z"/>
|
|
11
|
+
</svg>
|
|
12
|
+
SVG
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<table class="table analytics">
|
|
2
|
+
<tr>
|
|
3
|
+
<% display_fields.each_pair do |key, value| %>
|
|
4
|
+
<td class="value <%= key %>"><%= format_field(key, value) %></td>
|
|
5
|
+
<% end %>
|
|
6
|
+
</tr>
|
|
7
|
+
<tfoot>
|
|
8
|
+
<tr>
|
|
9
|
+
<% display_fields.each_pair do |key, value| %>
|
|
10
|
+
<th><%= I18n.t("spotlight.dashboards.analytics.#{key}") %></th>
|
|
11
|
+
<% end %>
|
|
12
|
+
</tr>
|
|
13
|
+
</tfoot>
|
|
14
|
+
</table>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spotlight
|
|
4
|
+
module Analytics
|
|
5
|
+
# Display Analytics aggregations as table
|
|
6
|
+
class AggregationComponent < ViewComponent::Base
|
|
7
|
+
def initialize(data:, exclude_fields: nil)
|
|
8
|
+
super
|
|
9
|
+
@exclude_fields = exclude_fields
|
|
10
|
+
@data = data
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def render?
|
|
14
|
+
display_fields.to_h.present?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def display_fields
|
|
18
|
+
return @data unless @exclude_fields
|
|
19
|
+
|
|
20
|
+
filtered_data = @data.to_h.except(*@exclude_fields)
|
|
21
|
+
OpenStruct.new(filtered_data)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def format_field(key, value)
|
|
25
|
+
if value.is_a?(Float)
|
|
26
|
+
if key.to_s.downcase.include?('rate')
|
|
27
|
+
"#{(value * 100).to_i}%"
|
|
28
|
+
else
|
|
29
|
+
Kernel.format('%.2f', value)
|
|
30
|
+
end
|
|
31
|
+
else
|
|
32
|
+
value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<% if results? %>
|
|
2
|
+
<%= cache current_exhibit, expires_in: 1.hour do %>
|
|
3
|
+
<h2><%= I18n.t("spotlight.dashboards.analytics.reporting_period_heading") %></h2>
|
|
4
|
+
<h3 class="h5 mt-4"><%= I18n.t("spotlight.dashboards.analytics.visitor_header") %></h3>
|
|
5
|
+
<%= render Spotlight::Analytics::AggregationComponent.new(data: page_analytics.totals) %>
|
|
6
|
+
|
|
7
|
+
<h3 class="h5 mt-4"><%= I18n.t("spotlight.dashboards.analytics.session_header") %></h3>
|
|
8
|
+
<%= render Spotlight::Analytics::AggregationComponent.new(data: search_analytics.totals, exclude_fields: [:eventCount] ) %>
|
|
9
|
+
|
|
10
|
+
<% unless page_analytics.rows.empty? %>
|
|
11
|
+
<h3 class="h5 mt-4"><%= I18n.t("spotlight.dashboards.analytics.pages.header") %></h4>
|
|
12
|
+
<table class="table table-striped popular-pages">
|
|
13
|
+
<thead>
|
|
14
|
+
<tr>
|
|
15
|
+
<th><%= I18n.t("spotlight.dashboards.analytics.pagetitle") %></th>
|
|
16
|
+
<th class="text-right text-end"><%= I18n.t("spotlight.dashboards.analytics.pageviews") %></th>
|
|
17
|
+
</tr>
|
|
18
|
+
</thead>
|
|
19
|
+
<% page_analytics.rows.each do |p| %>
|
|
20
|
+
<tr>
|
|
21
|
+
<td><%= link_to p.pageTitle, p.pagePath %></td>
|
|
22
|
+
<td class="text-right text-end"><%= p.screenPageViews %></td>
|
|
23
|
+
</tr>
|
|
24
|
+
<% end %>
|
|
25
|
+
</table>
|
|
26
|
+
<% end %>
|
|
27
|
+
|
|
28
|
+
<% unless search_analytics.rows.empty? %>
|
|
29
|
+
<h3 class="h5 mt-4"><%= I18n.t("spotlight.dashboards.analytics.searches.header") %></h4>
|
|
30
|
+
<table class="table table-striped popular-pages">
|
|
31
|
+
<thead>
|
|
32
|
+
<tr>
|
|
33
|
+
<th><%= I18n.t("spotlight.dashboards.analytics.searches.term") %></th>
|
|
34
|
+
<th class="text-right text-end"><%= I18n.t("spotlight.dashboards.analytics.searches.views") %></th>
|
|
35
|
+
</tr>
|
|
36
|
+
</thead>
|
|
37
|
+
<% search_analytics.rows.each do |p| %>
|
|
38
|
+
<% if p.searchTerm.present? %>
|
|
39
|
+
<tr>
|
|
40
|
+
<td><%= p.searchTerm %></td>
|
|
41
|
+
<td class="text-right text-end"><%= p.eventCount %></td>
|
|
42
|
+
</tr>
|
|
43
|
+
<% end %>
|
|
44
|
+
<% end %>
|
|
45
|
+
</table>
|
|
46
|
+
<% end %>
|
|
47
|
+
<% end %>
|
|
48
|
+
<% else %>
|
|
49
|
+
<%= I18n.t("spotlight.dashboards.analytics.no_results", pageurl: page_url) %>
|
|
50
|
+
<% end %>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spotlight
|
|
4
|
+
module Analytics
|
|
5
|
+
# Display Analytics
|
|
6
|
+
class DashboardComponent < ViewComponent::Base
|
|
7
|
+
attr_reader :current_exhibit, :dates
|
|
8
|
+
|
|
9
|
+
def initialize(current_exhibit:)
|
|
10
|
+
super
|
|
11
|
+
@current_exhibit = current_exhibit
|
|
12
|
+
@dates = { 'start_date' => '365daysAgo', 'end_date' => 'today' }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def results?
|
|
16
|
+
page_analytics.totals.to_h.present? || search_analytics.totals.to_h.present?
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def page_url
|
|
20
|
+
@page_url ||= helpers.exhibit_root_path(current_exhibit)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def page_analytics
|
|
24
|
+
@page_analytics ||= current_exhibit.page_analytics(dates, page_url)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def search_analytics
|
|
28
|
+
@search_analytics ||= current_exhibit.analytics(dates, page_url)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<%= content_tag @component,
|
|
2
|
+
id: @id,
|
|
3
|
+
data: {
|
|
4
|
+
'document-id': @document.id.to_s.parameterize,
|
|
5
|
+
'document-counter': @counter,
|
|
6
|
+
'label-toggle': @document.id
|
|
7
|
+
},
|
|
8
|
+
itemscope: true,
|
|
9
|
+
itemtype: @document.itemtype,
|
|
10
|
+
class: classes.flatten.join(' ') do %>
|
|
11
|
+
<% # header bar for doc items in index view -%>
|
|
12
|
+
<td class="spotlight-admin-thumbnail">
|
|
13
|
+
<%= thumbnail %>
|
|
14
|
+
</td>
|
|
15
|
+
<td>
|
|
16
|
+
<%# header bar for doc items in index view -%>
|
|
17
|
+
<div class="documentHeader row" data-label-toggle="<%= @document.id %>">
|
|
18
|
+
<h5 class="index_title col-md-12">
|
|
19
|
+
<%= helpers.link_to_document(presenter.document, itemprop: 'name') %>
|
|
20
|
+
</h5>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="page-links">
|
|
24
|
+
<%= helpers.view_link presenter.document, helpers.link_to_document(presenter.document) %> ·
|
|
25
|
+
<%= helpers.exhibit_edit_link presenter.document, [:edit, helpers.current_exhibit, presenter.document] %>
|
|
26
|
+
</div>
|
|
27
|
+
</td>
|
|
28
|
+
|
|
29
|
+
<td class="text-nowrap">
|
|
30
|
+
<%= timestamp %>
|
|
31
|
+
</td>
|
|
32
|
+
|
|
33
|
+
<td class="checkbox-toggle">
|
|
34
|
+
<%= render partial: 'document_visibility_control', locals: { document: presenter.document} %>
|
|
35
|
+
</td>
|
|
36
|
+
<% end %>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spotlight
|
|
4
|
+
# Displays the document
|
|
5
|
+
# This overrides the title method to provide an edit link.
|
|
6
|
+
class DocumentAdminTableComponent < Blacklight::DocumentComponent
|
|
7
|
+
def initialize(component: 'tr', **kwargs)
|
|
8
|
+
super
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def classes
|
|
12
|
+
super + ['doc-row']
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def timestamp
|
|
16
|
+
return unless presenter.document[presenter.configuration.index.timestamp_field]
|
|
17
|
+
|
|
18
|
+
l Date.parse(presenter.document[presenter.configuration.index.timestamp_field])
|
|
19
|
+
rescue StandardError
|
|
20
|
+
nil
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= top_bar %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spotlight
|
|
4
|
+
# Displays the document
|
|
5
|
+
class IconComponent < Blacklight::Icons::IconComponent
|
|
6
|
+
if Blacklight.version < '8.0'
|
|
7
|
+
# Work around https://github.com/projectblacklight/blacklight/issues/3232 (fixed in Blacklight 8.0)
|
|
8
|
+
def classes
|
|
9
|
+
(@classes - ['blacklight-icons-'] + ["blacklight-icons-#{name}"]).uniq
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -36,6 +36,8 @@ module Spotlight
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def show
|
|
39
|
+
# For Blacklight 8, @document_list will be nil but
|
|
40
|
+
# will be required for Blacklight 7 to work correctly.
|
|
39
41
|
@response, @document_list = search_service.search_results do |builder|
|
|
40
42
|
builder.with(params.merge(browse_category_id: @search.id))
|
|
41
43
|
end
|
|
@@ -37,7 +37,11 @@ module Spotlight
|
|
|
37
37
|
|
|
38
38
|
before_action only: :admin do
|
|
39
39
|
blacklight_config.view.select! { |k, _v| k == :admin_table }
|
|
40
|
-
|
|
40
|
+
unless blacklight_config.view.key? :admin_table
|
|
41
|
+
blacklight_config.view.admin_table(document_component: Spotlight::DocumentAdminTableComponent,
|
|
42
|
+
partials: [:index_compact],
|
|
43
|
+
document_actions: [])
|
|
44
|
+
end
|
|
41
45
|
if Blacklight::VERSION > '8'
|
|
42
46
|
blacklight_config.track_search_session.storage = false
|
|
43
47
|
else
|
|
@@ -51,7 +55,7 @@ module Spotlight
|
|
|
51
55
|
end
|
|
52
56
|
|
|
53
57
|
before_action only: :edit do
|
|
54
|
-
blacklight_config.
|
|
58
|
+
blacklight_config.action_mapping.edit.top_level_config = :show
|
|
55
59
|
end
|
|
56
60
|
|
|
57
61
|
def show
|
|
@@ -12,14 +12,15 @@ module Spotlight
|
|
|
12
12
|
|
|
13
13
|
before_action only: [:show] do
|
|
14
14
|
blacklight_config.action_mapping&.delete(:show)
|
|
15
|
-
blacklight_config.
|
|
16
|
-
|
|
15
|
+
blacklight_config.action_mapping.show.top_level_config = :index if blacklight_config.key?(:action_mapping)
|
|
16
|
+
|
|
17
|
+
blacklight_config.index.document_component = Spotlight::DocumentAdminTableComponent
|
|
18
|
+
blacklight_config.index.document_actions = []
|
|
17
19
|
if Blacklight::VERSION > '8'
|
|
18
20
|
blacklight_config.track_search_session.storage = false
|
|
19
21
|
else
|
|
20
22
|
blacklight_config.track_search_session = false
|
|
21
23
|
end
|
|
22
|
-
blacklight_config.action_mapping.show.top_level_config = :index if blacklight_config.key?(:action_mapping)
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
def show
|