thecore_ui_rails_admin 2.1.9 → 2.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/rails_admin/ra.widgets.coffee +233 -0
- data/app/assets/javascripts/thecore_ui_rails_admin/thecore_rails_admin.js +3 -2
- data/app/assets/stylesheets/thecore_ui_rails_admin/apexcharts.scss +7 -0
- data/app/assets/stylesheets/thecore_ui_rails_admin/common.scss +5 -1
- data/app/assets/stylesheets/thecore_ui_rails_admin/thecore.scss +1 -4
- data/app/assets/stylesheets/thecore_ui_rails_admin/thecore_rails_admin.scss +6 -1
- data/app/views/layouts/rails_admin/application.html.haml +0 -2
- data/app/views/rails_admin/main/dashboard.html.haml +18 -0
- data/config/initializers/rails_admin.rb +3 -3
- data/lib/thecore_ui_rails_admin/version.rb +1 -1
- metadata +4 -3
- data/app/assets/javascripts/thecore_ui_rails_admin/thecore.js +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cf64ac29415ff7be2ae88370d4bd3e533aeb86816a5f0b1966226b9982388e6
|
4
|
+
data.tar.gz: a496d1564532b858780c3bd388227398f4beebf46a596ec8ea5f27f980d673ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 851c587fbdc7872d7cfe4cca5489792abb744643946e0f0e3bf4f497bafe291e6b39fb458fc5c9856c2d4cc19f0417134545504c77ec4b8f8d820280da5ea3b2
|
7
|
+
data.tar.gz: dd5d457e9827e2667551879ab4da61a3d05554d2b68fab7ccc10e53b765f0b320cd96a8cc69e563faadc7b09515e34d49527e31dcb49e4a21f39ada8369e62c4
|
@@ -0,0 +1,233 @@
|
|
1
|
+
$(document).on 'rails_admin.dom_ready', (e, content) ->
|
2
|
+
content = if content then content else $('form')
|
3
|
+
|
4
|
+
if content.length # don't waste time otherwise
|
5
|
+
|
6
|
+
# colorpicker
|
7
|
+
|
8
|
+
content.find('[data-color]').each ->
|
9
|
+
that = this
|
10
|
+
$(this).ColorPicker
|
11
|
+
color: $(that).val()
|
12
|
+
onShow: (el) ->
|
13
|
+
$(el).fadeIn(500)
|
14
|
+
false
|
15
|
+
onHide: (el) ->
|
16
|
+
$(el).fadeOut(500)
|
17
|
+
false
|
18
|
+
onChange: (hsb, hex, rgb) ->
|
19
|
+
$(that).val(hex)
|
20
|
+
$(that).css('backgroundColor', '#' + hex)
|
21
|
+
|
22
|
+
# datetime picker
|
23
|
+
$.fn.datetimepicker.defaults.icons =
|
24
|
+
time: 'fa fa-clock'
|
25
|
+
date: 'fa fa-calendar'
|
26
|
+
up: 'fa fa-chevron-up'
|
27
|
+
down: 'fa fa-chevron-down'
|
28
|
+
previous: 'fa fa-angle-double-left'
|
29
|
+
next: 'fa fa-angle-double-right'
|
30
|
+
today: 'fa fa-dot-circle'
|
31
|
+
clear: 'fa fa-trash'
|
32
|
+
close: 'fa fa-times'
|
33
|
+
|
34
|
+
content.find('[data-datetimepicker]').each ->
|
35
|
+
options = $(this).data('options')
|
36
|
+
$.extend(options, {locale: RailsAdmin.I18n.locale})
|
37
|
+
$(this).datetimepicker options
|
38
|
+
|
39
|
+
# enumeration
|
40
|
+
|
41
|
+
content.find('[data-enumeration]').each ->
|
42
|
+
if $(this).is('[multiple]')
|
43
|
+
$(this).filteringMultiselect $(this).data('options')
|
44
|
+
else
|
45
|
+
$(this).filteringSelect $(this).data('options')
|
46
|
+
|
47
|
+
# fileupload
|
48
|
+
|
49
|
+
content.find('[data-fileupload]').each ->
|
50
|
+
input = this
|
51
|
+
$(this).on 'click', ".delete input[type='checkbox']", ->
|
52
|
+
$(input).children('.toggle').toggle('slow')
|
53
|
+
|
54
|
+
# fileupload-preview
|
55
|
+
|
56
|
+
content.find('[data-fileupload]').change ->
|
57
|
+
input = this
|
58
|
+
image_container = $("#" + input.id).parent().children(".preview")
|
59
|
+
unless image_container.length
|
60
|
+
image_container = $("#" + input.id).parent().prepend($('<img />').addClass('preview').addClass('img-thumbnail')).find('img.preview')
|
61
|
+
image_container.parent().find('img:not(.preview)').hide()
|
62
|
+
ext = $("#" + input.id).val().split('.').pop().toLowerCase()
|
63
|
+
if input.files and input.files[0] and $.inArray(ext, ['gif', 'png', 'jpg', 'jpeg', 'bmp']) != -1
|
64
|
+
reader = new FileReader()
|
65
|
+
reader.onload = (e) ->
|
66
|
+
image_container.attr "src", e.target.result
|
67
|
+
reader.readAsDataURL input.files[0]
|
68
|
+
image_container.show()
|
69
|
+
else
|
70
|
+
image_container.hide()
|
71
|
+
|
72
|
+
# filtering-multiselect
|
73
|
+
|
74
|
+
content.find('[data-filteringmultiselect]').each ->
|
75
|
+
$(this).filteringMultiselect $(this).data('options')
|
76
|
+
if $(this).parents("#modal").length # hide link if we already are inside a dialog (endless issues on nested dialogs with JS)
|
77
|
+
$(this).siblings('.btn').remove()
|
78
|
+
else
|
79
|
+
$(this).parents('.control-group').first().remoteForm()
|
80
|
+
|
81
|
+
# filtering-select
|
82
|
+
|
83
|
+
content.find('[data-filteringselect]').each ->
|
84
|
+
$(this).filteringSelect $(this).data('options')
|
85
|
+
if $(this).parents("#modal").length # hide link if we already are inside a dialog (endless issues on nested dialogs with JS)
|
86
|
+
$(this).siblings('.btn').remove()
|
87
|
+
else
|
88
|
+
$(this).parents('.control-group').first().remoteForm()
|
89
|
+
|
90
|
+
# nested-many
|
91
|
+
|
92
|
+
content.find('[data-nestedmany]').each ->
|
93
|
+
field = $(this).parents('.control-group').first()
|
94
|
+
nav = field.find('> .controls > .nav')
|
95
|
+
tab_content = field.find('> .tab-content')
|
96
|
+
toggler = field.find('> .controls > .btn-group > .toggler')
|
97
|
+
# add each nested field to a tab-pane and reference it in the nav
|
98
|
+
tab_content.children('.fields:not(.tab-pane)').addClass('tab-pane').each ->
|
99
|
+
$(this).attr('id', 'unique-id-' + (new Date().getTime()) + Math.floor(Math.random() * 100000)) # some elements are created on the same ms
|
100
|
+
nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>')
|
101
|
+
# only if no tab is set to active
|
102
|
+
if nav.find("> li.active").length == 0
|
103
|
+
# init first tab, toggler and tab_content/tabs visibility
|
104
|
+
nav.find("> li > a[data-toggle='tab']:first").tab('show')
|
105
|
+
if nav.children().length == 0
|
106
|
+
nav.hide()
|
107
|
+
tab_content.hide()
|
108
|
+
toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right')
|
109
|
+
else
|
110
|
+
if toggler.hasClass('active')
|
111
|
+
nav.show()
|
112
|
+
tab_content.show()
|
113
|
+
toggler.children('i').addClass('icon-chevron-down')
|
114
|
+
else
|
115
|
+
nav.hide()
|
116
|
+
tab_content.hide()
|
117
|
+
toggler.children('i').addClass('icon-chevron-right')
|
118
|
+
|
119
|
+
# nested-one
|
120
|
+
|
121
|
+
content.find('[data-nestedone]').each ->
|
122
|
+
field = $(this).parents('.control-group').first()
|
123
|
+
nav = field.find("> .controls > .nav")
|
124
|
+
tab_content = field.find("> .tab-content")
|
125
|
+
toggler = field.find('> .controls > .btn-group > .toggler')
|
126
|
+
tab_content.children(".fields:not(.tab-pane)").addClass('tab-pane active').each ->
|
127
|
+
# Convert the "add nested field" button to just showing the title of the new model
|
128
|
+
field.find('> .controls .add_nested_fields').removeClass('add_nested_fields').html($(this).children('.object-infos').data('object-label'))
|
129
|
+
nav.append('<li><a data-toggle="tab" href="#' + this.id + '">' + $(this).children('.object-infos').data('object-label') + '</a></li>')
|
130
|
+
first_tab = nav.find("> li > a[data-toggle='tab']:first")
|
131
|
+
first_tab.tab('show')
|
132
|
+
field.find("> .controls > [data-target]:first").html('<i class="icon-white"></i> ' + first_tab.html())
|
133
|
+
nav.hide()
|
134
|
+
if nav.children().length == 0
|
135
|
+
nav.hide()
|
136
|
+
tab_content.hide()
|
137
|
+
toggler.addClass('disabled').removeClass('active').children('i').addClass('icon-chevron-right')
|
138
|
+
else
|
139
|
+
if toggler.hasClass('active')
|
140
|
+
toggler.children('i').addClass('icon-chevron-down')
|
141
|
+
tab_content.show()
|
142
|
+
else
|
143
|
+
toggler.children('i').addClass('icon-chevron-right')
|
144
|
+
tab_content.hide()
|
145
|
+
|
146
|
+
# polymorphic-association
|
147
|
+
|
148
|
+
content.find('[data-polymorphic]').each ->
|
149
|
+
type_select = $(this)
|
150
|
+
field = type_select.parents('.control-group').first()
|
151
|
+
object_select = field.find('select').last()
|
152
|
+
urls = type_select.data('urls')
|
153
|
+
type_select.on 'change', (e) ->
|
154
|
+
if $(this).val() is ''
|
155
|
+
object_select.html('<option value=""></option>')
|
156
|
+
else
|
157
|
+
$.ajax
|
158
|
+
url: urls[type_select.val()]
|
159
|
+
data:
|
160
|
+
compact: true
|
161
|
+
all: true
|
162
|
+
beforeSend: (xhr) ->
|
163
|
+
xhr.setRequestHeader("Accept", "application/json")
|
164
|
+
success: (data, status, xhr) ->
|
165
|
+
html = $('<option></option>')
|
166
|
+
$(data).each (i, el) ->
|
167
|
+
option = $('<option></option>')
|
168
|
+
option.attr('value', el.id)
|
169
|
+
option.text(el.label)
|
170
|
+
html = html.add(option)
|
171
|
+
object_select.html(html)
|
172
|
+
|
173
|
+
# ckeditor
|
174
|
+
|
175
|
+
goCkeditors = ->
|
176
|
+
content.find('[data-richtext=ckeditor]').not('.ckeditored').each (index, domEle) ->
|
177
|
+
try
|
178
|
+
if instance = window.CKEDITOR.instances[this.id]
|
179
|
+
instance.destroy(true)
|
180
|
+
window.CKEDITOR.replace(this, $(this).data('options'))
|
181
|
+
$(this).addClass('ckeditored')
|
182
|
+
|
183
|
+
$editors = content.find('[data-richtext=ckeditor]').not('.ckeditored')
|
184
|
+
if $editors.length
|
185
|
+
if not window.CKEDITOR
|
186
|
+
options = $editors.first().data('options')
|
187
|
+
window.CKEDITOR_BASEPATH = options['base_location']
|
188
|
+
$.getScript options['jspath'], (script, textStatus, jqXHR) =>
|
189
|
+
goCkeditors()
|
190
|
+
else
|
191
|
+
goCkeditors()
|
192
|
+
|
193
|
+
#codemirror
|
194
|
+
|
195
|
+
goCodeMirrors = (array) =>
|
196
|
+
array.each (index, domEle) ->
|
197
|
+
options = $(this).data('options')
|
198
|
+
textarea = this
|
199
|
+
$.getScript options['locations']['mode'], (script, textStatus, jqXHR) ->
|
200
|
+
$('head').append('<link href="' + options['locations']['theme'] + '" rel="stylesheet" media="all" type="text\/css">')
|
201
|
+
CodeMirror.fromTextArea(textarea, options['options'])
|
202
|
+
$(textarea).addClass('codemirrored')
|
203
|
+
|
204
|
+
array = content.find('[data-richtext=codemirror]').not('.codemirrored')
|
205
|
+
if array.length
|
206
|
+
@array = array
|
207
|
+
if not window.CodeMirror
|
208
|
+
options = $(array[0]).data('options')
|
209
|
+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
|
210
|
+
$.getScript options['jspath'], (script, textStatus, jqXHR) =>
|
211
|
+
goCodeMirrors(@array)
|
212
|
+
else
|
213
|
+
goCodeMirrors(@array)
|
214
|
+
|
215
|
+
# bootstrap_wysihtml5
|
216
|
+
|
217
|
+
goBootstrapWysihtml5s = (array, config_options) =>
|
218
|
+
array.each ->
|
219
|
+
$(@).addClass('bootstrap-wysihtml5ed')
|
220
|
+
$(@).closest('.controls').addClass('well')
|
221
|
+
$(@).wysihtml5(config_options)
|
222
|
+
|
223
|
+
array = content.find('[data-richtext=bootstrap-wysihtml5]').not('.bootstrap-wysihtml5ed')
|
224
|
+
if array.length
|
225
|
+
@array = array
|
226
|
+
options = $(array[0]).data('options')
|
227
|
+
config_options = $.parseJSON(options['config_options'])
|
228
|
+
if not window.wysihtml5
|
229
|
+
$('head').append('<link href="' + options['csspath'] + '" rel="stylesheet" media="all" type="text\/css">')
|
230
|
+
$.getScript options['jspath'], (script, textStatus, jqXHR) =>
|
231
|
+
goBootstrapWysihtml5s(@array, config_options)
|
232
|
+
else
|
233
|
+
goBootstrapWysihtml5s(@array, config_options)
|
@@ -11,7 +11,9 @@
|
|
11
11
|
* file per style scope.
|
12
12
|
*
|
13
13
|
*= required _colors
|
14
|
-
|
14
|
+
*= require thecore_ui_commons/thecore
|
15
|
+
*= require rails_admin/rails_admin
|
16
|
+
*= require rails_admin_selectize/index
|
15
17
|
*= require_self
|
16
18
|
*/
|
17
19
|
@import 'thecore';
|
@@ -133,6 +135,9 @@ a.delete {
|
|
133
135
|
&.bg-danger {
|
134
136
|
background-color: $RAred;
|
135
137
|
}
|
138
|
+
&.bg-clear {
|
139
|
+
background-color: rgb(204, 255, 204);
|
140
|
+
}
|
136
141
|
}
|
137
142
|
|
138
143
|
/* User sign in and sign forms. */
|
@@ -11,8 +11,6 @@
|
|
11
11
|
div.sub-menu-container li.sub-menu a.pjax { padding-left: 0px }
|
12
12
|
div#wrapper div#sidebar-wrapper { overflow: hidden }
|
13
13
|
|
14
|
-
= stylesheet_link_tag "rails_admin/rails_admin.css", media: :all
|
15
|
-
= javascript_include_tag "rails_admin/rails_admin.js"
|
16
14
|
-# Getting all the assets needed by thecore_rails_admin from all the gems
|
17
15
|
= get_asset_tags_for("thecore_rails_admin")
|
18
16
|
|
@@ -1,4 +1,22 @@
|
|
1
1
|
= breadcrumb
|
2
|
+
- charts_high = []
|
3
|
+
- charts_medium = []
|
4
|
+
- self.methods.each do |m|
|
5
|
+
- charts_high << m if m.start_with? "charts_high_"
|
6
|
+
- charts_medium << m if m.start_with? "charts_medium_"
|
7
|
+
|
8
|
+
- charts_high.in_groups_of(2, false).each_with_index do |group, i|
|
9
|
+
.row
|
10
|
+
- group.each do |item|
|
11
|
+
.col-sm-6
|
12
|
+
.box.bg.bg-clear= self.send(item)
|
13
|
+
|
14
|
+
- charts_medium.in_groups_of(3, false).each_with_index do |group, i|
|
15
|
+
.row
|
16
|
+
- group.each do |item|
|
17
|
+
.col-sm-4
|
18
|
+
.box.bg.bg-clear= self.send(item)
|
19
|
+
|
2
20
|
- @list_bg = ['info', 'success', 'danger', 'success', 'info', 'warning', 'danger', 'info', 'success']
|
3
21
|
- if @abstract_models
|
4
22
|
.row
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'rails_admin'
|
2
2
|
|
3
3
|
RailsAdmin.config do |config|
|
4
|
-
#
|
5
|
-
|
6
|
-
|
4
|
+
# Link for background Job
|
5
|
+
(config.navigation_static_links ||= {}).merge! "Background Monitor" => "#{ENV['RAILS_RELATIVE_URL_ROOT']}/app/sidekiq"
|
6
|
+
|
7
7
|
### Popular gems integration
|
8
8
|
config.model "RoleUser" do
|
9
9
|
visible false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thecore_ui_rails_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriele Tassoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thecore_ui_commons
|
@@ -190,9 +190,10 @@ files:
|
|
190
190
|
- README.md
|
191
191
|
- Rakefile
|
192
192
|
- app/assets/config/thecore_ui_rails_admin_manifest.js
|
193
|
-
- app/assets/javascripts/
|
193
|
+
- app/assets/javascripts/rails_admin/ra.widgets.coffee
|
194
194
|
- app/assets/javascripts/thecore_ui_rails_admin/thecore_rails_admin.js
|
195
195
|
- app/assets/stylesheets/thecore_ui_rails_admin/animate.css
|
196
|
+
- app/assets/stylesheets/thecore_ui_rails_admin/apexcharts.scss
|
196
197
|
- app/assets/stylesheets/thecore_ui_rails_admin/common.scss
|
197
198
|
- app/assets/stylesheets/thecore_ui_rails_admin/devise.scss
|
198
199
|
- app/assets/stylesheets/thecore_ui_rails_admin/flashing.scss
|
File without changes
|