c80_push 0.1.0.2 → 0.1.0.3
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/README.md +87 -11
- data/app/admin/c80_push/dealers.rb +24 -5
- data/app/assets/javascripts/c80_push/frontend/c80_push_page_dealers/_map_set_objects.js +4 -2
- data/app/assets/stylesheets/c80_push/backend/dealer_preset_span.scss +5 -0
- data/app/assets/stylesheets/c80_push_backend.scss +1 -1
- data/app/helpers/c80_push/admin_helper.rb +15 -1
- data/app/helpers/c80_push/application_helper.rb +26 -5
- data/app/models/c80_push/dealer.rb +1 -0
- data/app/models/c80_push/office.rb +2 -1
- data/app/models/c80_push/preset.rb +5 -0
- data/app/views/c80_push/shared/_page_dealers.html.erb +1 -1
- data/config/locales/dealer/ru.yml +13 -3
- data/config/locales/office/ru.yml +19 -3
- data/db/migrate/20170630061313_create_c80_push_presets.rb +9 -0
- data/db/migrate/20170630061515_create_c80_push_join_table_dealers_presets.rb +12 -0
- data/lib/c80_push/version.rb +1 -1
- data/lib/generators/c80_push/install_generator.rb +20 -0
- data/lib/generators/c80_push/templates/seeds/c80_push_02_fill_presets.rb +21 -0
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2bc7b9516f5f7edb8dffce344f1c2465c7dca6d
|
4
|
+
data.tar.gz: 5684422a46e41045c3de9a5ba094c8a8b9c2ab3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bbd6b017f98a1d3c469f237d1aef3d936749e7a757db8c07f318e9375f6ada96b699a3d441f8566cc2674787bdca379187d9b5e5fe27a119afbe025116a8f9a
|
7
|
+
data.tar.gz: 1b5bcdc9f2b603a910bf9209ba040d0853dd91a5c7a9639a994b8f0e2aeae26f124dabd3154b0b0c25e0de116d0fdb43c9158f16234b60e56f21f881e6fd99a8
|
data/README.md
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
|
3
3
|
Добавляет функционал дилеров и офисов продаж.
|
4
4
|
Это *ActiveAdmin* plugin.
|
5
|
-
Использует *Bootstrap* и *Bootstrap Select
|
5
|
+
Использует *Bootstrap* и *Bootstrap Select*: как во *frontend*,
|
6
|
+
так и в *backend*.
|
6
7
|
|
7
8
|
Содержит модели:
|
8
9
|
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
10
|
+
* *Регион* (habtm Dealers)
|
11
|
+
* *Дилер* (has_many Offices)
|
12
|
+
* *Офис* (belongs_to Dealer)
|
12
13
|
|
13
14
|
Добавляет пункт меню:
|
14
15
|
|
@@ -21,7 +22,7 @@
|
|
21
22
|
Available helpers:
|
22
23
|
|
23
24
|
* `c80_push_render_page_dealers`: отрисует js-компонент с yandex картой
|
24
|
-
и
|
25
|
+
и фильтруемым, кликабельным списком офисов слева.
|
25
26
|
|
26
27
|
## Installation
|
27
28
|
|
@@ -36,6 +37,8 @@ And then execute:
|
|
36
37
|
```bash
|
37
38
|
$ bundle
|
38
39
|
$ rake db:migrate
|
40
|
+
$ rails generate c80_push:install
|
41
|
+
$ rake db:seed:c80_push_02_fill_presets
|
39
42
|
```
|
40
43
|
|
41
44
|
Add this line to host app's `application_controller.rb`:
|
@@ -49,7 +52,6 @@ Add these lines to host app's `active_admin.js.coffee`:
|
|
49
52
|
```js
|
50
53
|
#= require bootstrap
|
51
54
|
#= require bootstrap-select
|
52
|
-
#= require c80_yax
|
53
55
|
#= require c80_push_backend
|
54
56
|
```
|
55
57
|
|
@@ -67,10 +69,61 @@ Add these lines to host app's 'application.scss':
|
|
67
69
|
@import "bootstrap-sprockets";
|
68
70
|
@import "bootstrap";
|
69
71
|
@import "bootstrap-select";
|
70
|
-
@
|
72
|
+
@import "c80_push";
|
71
73
|
```
|
72
74
|
|
73
|
-
##
|
75
|
+
## Customization
|
76
|
+
|
77
|
+
Т.к. исходя из ТЗ было не ясно, есть ли у *Офисов* такие поля, как
|
78
|
+
сайт, email и регион, они были добавлены (на всякий случай), и поля
|
79
|
+
сделаны необязательными. И их можно "отключить", добавив в host app
|
80
|
+
такой файл `app/assets/stylesheets/custom/backend/c80_push/dealers.scss`:
|
81
|
+
|
82
|
+
```scss
|
83
|
+
/* у Офисов скроем неиспользуемые поля */
|
84
|
+
body.admin_dealers {
|
85
|
+
&.edit, &.new {
|
86
|
+
|
87
|
+
li[id*='dealer_offices_attributes_'] {
|
88
|
+
&[id*='site_input'] {
|
89
|
+
display: none;
|
90
|
+
}
|
91
|
+
&[id*='email_input'] {
|
92
|
+
display: none;
|
93
|
+
}
|
94
|
+
&[id*='regions_input'] {
|
95
|
+
display: none;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
```
|
101
|
+
|
102
|
+
А сам файл подключить в `active_admin.scss`:
|
103
|
+
|
104
|
+
```scss
|
105
|
+
@import "custom/backend/**/*";
|
106
|
+
```
|
107
|
+
|
108
|
+
# TODO
|
109
|
+
|
110
|
+
* [X] Добавить валидацию поля `gps` модели *Office*.
|
111
|
+
|
112
|
+
- [ ] Попробовать подключить к `backend` *client side validation*.
|
113
|
+
|
114
|
+
* [X] Реализовать функционал цветных маркеров.
|
115
|
+
|
116
|
+
- [ ] Внутри `bootstrap selectpicker` должны рисоваться цветные прямоугольники:
|
117
|
+
[/formtastic/inputs/select_input.rb](https://github.com/justinfrench/formtastic/blob/master/lib/formtastic/inputs/select_input.rb),
|
118
|
+
[bootstrap selectpicker: option with data-content](https://stackoverflow.com/questions/26069286/bootstrap-with-select-list-that-contains-only-images)
|
119
|
+
|
120
|
+
* [ ] Вынести `*.rb` файлы, подлежащие кастомизации в `templates` (предварительно
|
121
|
+
определив, что может еще быть кастомизировано), наваять инсталлятор,
|
122
|
+
отметить это в `README`.
|
123
|
+
|
124
|
+
- [X] seeds
|
125
|
+
|
126
|
+
# Процесс разработки JS функционала
|
74
127
|
|
75
128
|
Теперь пора заняться js.
|
76
129
|
|
@@ -92,13 +145,36 @@ Add these lines to host app's 'application.scss':
|
|
92
145
|
* [X] При наведении/клике на `.li_office` - должна подсвечиваться соответствующая
|
93
146
|
точка на карте.
|
94
147
|
|
95
|
-
* [
|
148
|
+
* [X] Реализовать функционал цветных маркеров.
|
96
149
|
|
97
150
|
* [X] Когда меняется регион:
|
98
151
|
|
99
152
|
* [X] Должны отобразиться релевантные `.li_office`
|
100
153
|
* [X] Должны отобразиться релевантные точки на карте.
|
101
154
|
|
155
|
+
## Процесс добавления функционала "Цвет маркеров дилеров"
|
156
|
+
|
157
|
+
* [X] добавляем таблицу `Presets` с полями `preset_name`
|
158
|
+
и `color`, причём `color` я должен забить руками с помощью color picker
|
159
|
+
со страницы докуметации Яндекс.карты (`color` используется только в админке
|
160
|
+
для иллюстрации "что такое preset").
|
161
|
+
|
162
|
+
* [X] Таблица `Presets` должна быть habtm-связана с таблицей `:dealers`
|
163
|
+
|
164
|
+
* [X] Таблицу заполнить содержимым с помощью seed файла, пункт в админке не делать.
|
165
|
+
|
166
|
+
* [X] при сборке хеша для Яндекс.карт - собираем в него свойства меток
|
167
|
+
|
168
|
+
- [X] Если цвет не задан - по-умолчанию добавляем голубой
|
169
|
+
|
170
|
+
* в админке:
|
171
|
+
|
172
|
+
- [ ] в форме редактирования/создания: у каждого дилера должен быть селект, в котором видно как
|
173
|
+
и название `preset-а`, так и его цвет
|
174
|
+
|
175
|
+
* [X] на индексной странице: должен быть столбец, в котором выводится название
|
176
|
+
`preset-a` и его цвет
|
177
|
+
|
102
178
|
## Цитата из ТЗ
|
103
179
|
|
104
180
|
> Данный раздел представляет собой список компаний, у которых указаны
|
@@ -114,11 +190,11 @@ Add these lines to host app's 'application.scss':
|
|
114
190
|
> Выбрав тот или иной регион, пользователь видит слева от
|
115
191
|
> интерактивной карты список компаний, а также адреса их офисов продаж.
|
116
192
|
>
|
117
|
-
> Офисы продаж
|
193
|
+
> Офисы продаж компании и копании-дилеры (и адреса их офисов продаж)
|
118
194
|
> разграничены на интерактивной карте маркерами разного цвета.
|
119
195
|
>
|
120
196
|
> В списке слева от интерактивной карты сначала отображаются офисы
|
121
|
-
> продаж
|
197
|
+
> продаж компании, а затем список компаний-дилеров
|
122
198
|
> (и адресов их офисов продаж).
|
123
199
|
>
|
124
200
|
> С помощью инструментов панели управления сайтом можно создавать
|
@@ -8,6 +8,7 @@ ActiveAdmin.register C80Push::Dealer, as: 'Dealer' do
|
|
8
8
|
:ord,
|
9
9
|
:site,
|
10
10
|
:email,
|
11
|
+
:preset_ids => [],
|
11
12
|
:region_ids => [],
|
12
13
|
:offices_attributes => [
|
13
14
|
:id,
|
@@ -49,8 +50,8 @@ ActiveAdmin.register C80Push::Dealer, as: 'Dealer' do
|
|
49
50
|
f.inputs 'Свойства' do
|
50
51
|
f.input :title
|
51
52
|
f.input :ord
|
52
|
-
f.input :site, hint: I18n.t('c80_push.active_admin.hints.site')
|
53
|
-
f.input :email, hint: I18n.t('c80_push.active_admin.hints.email')
|
53
|
+
f.input :site, hint: I18n.t('c80_push.active_admin.hints.dealer.site')
|
54
|
+
f.input :email, hint: I18n.t('c80_push.active_admin.hints.dealer.email')
|
54
55
|
f.input :regions,
|
55
56
|
:as => :select,
|
56
57
|
:input_html => {
|
@@ -63,6 +64,24 @@ ActiveAdmin.register C80Push::Dealer, as: 'Dealer' do
|
|
63
64
|
:multiple => false
|
64
65
|
},
|
65
66
|
:include_blank => true
|
67
|
+
f.input :presets,
|
68
|
+
:as => :select,
|
69
|
+
:collection => C80Push::Preset.all.map {|p| [p.title, p.id]},
|
70
|
+
# :collection => C80Push::Preset.all.map { |p|
|
71
|
+
# "<option value='#{p.id}'>#{p.title}</option>".html_safe
|
72
|
+
# },
|
73
|
+
# :collection => "<option></option>",
|
74
|
+
:input_html => {
|
75
|
+
:title => '',
|
76
|
+
:class => 'selectpicker',
|
77
|
+
:data => {
|
78
|
+
:size => 10,
|
79
|
+
:width => '600px'
|
80
|
+
},
|
81
|
+
:multiple => false
|
82
|
+
},
|
83
|
+
:include_blank => true,
|
84
|
+
:hint => "<a href='https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage-docpage/' target='_blank'>Справка по цветам</a>".html_safe
|
66
85
|
|
67
86
|
f.has_many :offices,
|
68
87
|
:allow_destroy => true,
|
@@ -71,9 +90,9 @@ ActiveAdmin.register C80Push::Dealer, as: 'Dealer' do
|
|
71
90
|
office.input :ord
|
72
91
|
office.input :addr
|
73
92
|
office.input :gps
|
74
|
-
office.input :tel, hint: I18n.t('c80_push.active_admin.hints.tel')
|
75
|
-
office.input :site, hint: I18n.t('c80_push.active_admin.hints.site')
|
76
|
-
office.input :email, hint: I18n.t('c80_push.active_admin.hints.email')
|
93
|
+
office.input :tel, hint: I18n.t('c80_push.active_admin.hints.office.tel')
|
94
|
+
office.input :site, hint: I18n.t('c80_push.active_admin.hints.office.site')
|
95
|
+
office.input :email, hint: I18n.t('c80_push.active_admin.hints.office.email')
|
77
96
|
office.input :regions,
|
78
97
|
:as => :select,
|
79
98
|
:input_html => {
|
@@ -9,11 +9,13 @@ function map_set_objects(region_id) {
|
|
9
9
|
|
10
10
|
// соберём коллекцию точек
|
11
11
|
var c = new ymaps.GeoObjectCollection();
|
12
|
-
var icoords, iprops; // loop vars
|
12
|
+
var icoords, iprops, isetts; // loop vars
|
13
13
|
for (var i = 0; i < n; i++) {
|
14
14
|
icoords = arr['coords'][i];
|
15
15
|
iprops = arr['props'][i];
|
16
|
-
|
16
|
+
isetts = arr['setts'][i];
|
17
|
+
console.log(isetts);
|
18
|
+
c.add(new ymaps.Placemark(icoords, iprops, isetts));
|
17
19
|
}
|
18
20
|
|
19
21
|
// сначала уберём все точки
|
@@ -42,10 +42,11 @@ module C80Push
|
|
42
42
|
res = "#{dealer.title}"
|
43
43
|
res += "<br><sub>email: #{format_val(dealer.email)}</sub>"
|
44
44
|
res += "<br><sub>site: #{format_val(dealer.site)}</sub>"
|
45
|
+
res += "<br><sub>цвет: #{format_dealer_preset_val(dealer)}</sub>"
|
45
46
|
res.html_safe
|
46
47
|
end
|
47
48
|
|
48
|
-
private
|
49
|
+
# private
|
49
50
|
|
50
51
|
def format_val(val)
|
51
52
|
res = '-'
|
@@ -55,6 +56,19 @@ module C80Push
|
|
55
56
|
"<span class='c80_md_link_color'>#{res}</span>".html_safe
|
56
57
|
end
|
57
58
|
|
59
|
+
def format_dealer_preset_val(dealer)
|
60
|
+
res = '-'
|
61
|
+
if dealer.presets.count > 0
|
62
|
+
p = dealer.presets.first
|
63
|
+
res = format_preset_val(p)
|
64
|
+
end
|
65
|
+
res.html_safe
|
66
|
+
end
|
67
|
+
|
68
|
+
def format_preset_val(preset)
|
69
|
+
"<span class='dealer_preset_span' style='background-color:#{preset.color}'></span>"
|
70
|
+
end
|
71
|
+
|
58
72
|
end
|
59
73
|
|
60
74
|
end
|
@@ -32,12 +32,14 @@ module C80Push
|
|
32
32
|
#
|
33
33
|
# {
|
34
34
|
# all: { - здесь собираем все офисы всех регионов (для лаконичности js)
|
35
|
-
# coords: [],
|
36
|
-
# props: []
|
35
|
+
# coords: [], - массив двух координат, например: [12.345, 12.345]
|
36
|
+
# props: [], - свойства объекта (офиса): тот текст, который выводится в balloon-e
|
37
|
+
# setts: [] - свойства метки (цвет)
|
37
38
|
# }
|
38
39
|
# <region_id>: [ - данные офисов разложены по регионам
|
39
40
|
# coords: [],
|
40
|
-
# props: []
|
41
|
+
# props: [],
|
42
|
+
# setts: []
|
41
43
|
# ]
|
42
44
|
# }
|
43
45
|
#
|
@@ -46,14 +48,15 @@ module C80Push
|
|
46
48
|
res = {
|
47
49
|
all: {
|
48
50
|
coords: [],
|
49
|
-
props: []
|
51
|
+
props: [],
|
52
|
+
setts: []
|
50
53
|
}
|
51
54
|
}
|
52
55
|
|
53
56
|
rdo.each do |region|
|
54
57
|
region.dealers.each do |dealer|
|
55
58
|
dealer.offices.each do |office|
|
56
|
-
res[region.id] = { coords:[], props:[] } if res[region.id].nil?
|
59
|
+
res[region.id] = { coords:[], props:[], setts:[] } if res[region.id].nil?
|
57
60
|
|
58
61
|
# координаты точки (это массив двух точек)
|
59
62
|
gps = office.gps_arr
|
@@ -66,13 +69,20 @@ module C80Push
|
|
66
69
|
id: office.id
|
67
70
|
}
|
68
71
|
|
72
|
+
# свойства метки - цвет
|
73
|
+
setts = {
|
74
|
+
preset: "islands##{prepare_dealer_preset(dealer)}"
|
75
|
+
}
|
76
|
+
|
69
77
|
# фиксируем в хэше региона
|
70
78
|
res[region.id][:coords] << gps
|
71
79
|
res[region.id][:props] << props
|
80
|
+
res[region.id][:setts] << setts
|
72
81
|
|
73
82
|
# фиксируем в all-хэше
|
74
83
|
res[:all][:coords] << gps
|
75
84
|
res[:all][:props] << props
|
85
|
+
res[:all][:setts] << setts
|
76
86
|
|
77
87
|
end
|
78
88
|
# для удобства в js: зафиксируем кол-во офисов региона
|
@@ -104,5 +114,16 @@ module C80Push
|
|
104
114
|
res
|
105
115
|
end
|
106
116
|
|
117
|
+
# сформировать название preset-а Дилера
|
118
|
+
# для цветного маркера.
|
119
|
+
# По умолчанию вернёт `blueDotIcon`
|
120
|
+
def prepare_dealer_preset(dealer)
|
121
|
+
res = 'blueDotIcon'
|
122
|
+
unless dealer.presets.count.zero?
|
123
|
+
res = dealer.presets.first.title
|
124
|
+
end
|
125
|
+
res
|
126
|
+
end
|
127
|
+
|
107
128
|
end
|
108
129
|
end
|
@@ -24,4 +24,4 @@
|
|
24
24
|
var offices = <%= ymap_hash.to_json.html_safe %>;
|
25
25
|
</script>
|
26
26
|
|
27
|
-
<script src="https://api-maps.yandex.ru/2.1/?lang=
|
27
|
+
<script src="https://api-maps.yandex.ru/2.1/?load=package.standard&lang=ru-RU" type="text/javascript"></script>
|
@@ -2,8 +2,9 @@ ru:
|
|
2
2
|
c80_push:
|
3
3
|
active_admin:
|
4
4
|
hints:
|
5
|
-
|
6
|
-
|
5
|
+
dealer:
|
6
|
+
site: 'Если сайтов несколько, перечислите их через запятую'
|
7
|
+
email: 'Если адресов несколько, перечислите их через запятую'
|
7
8
|
menu:
|
8
9
|
dealer: 'Список дилеров'
|
9
10
|
activerecord:
|
@@ -19,4 +20,13 @@ ru:
|
|
19
20
|
site: 'Сайт(ы)'
|
20
21
|
email: 'Email адрес(а)'
|
21
22
|
regions: 'Регион'
|
22
|
-
|
23
|
+
presets: 'Цвет маркера на карте'
|
24
|
+
offices: 'Офисы'
|
25
|
+
errors:
|
26
|
+
models:
|
27
|
+
c80_push/dealer:
|
28
|
+
attributes:
|
29
|
+
ord:
|
30
|
+
blank: 'Не может быть пустым'
|
31
|
+
title:
|
32
|
+
blank: 'Не может быть пустым'
|
@@ -2,9 +2,10 @@ ru:
|
|
2
2
|
c80_push:
|
3
3
|
active_admin:
|
4
4
|
hints:
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
office:
|
6
|
+
tel: 'Если номеров несколько, перечислите их через запятую'
|
7
|
+
site: 'Если сайтов несколько, перечислите их через запятую'
|
8
|
+
email: 'Если адресов несколько, перечислите их через запятую'
|
8
9
|
activerecord:
|
9
10
|
models:
|
10
11
|
office:
|
@@ -20,3 +21,18 @@ ru:
|
|
20
21
|
site: 'Сайт(ы)'
|
21
22
|
email: 'Email адрес(а)'
|
22
23
|
regions: 'Регион'
|
24
|
+
errors:
|
25
|
+
models:
|
26
|
+
c80_push/office:
|
27
|
+
attributes:
|
28
|
+
ord:
|
29
|
+
blank: 'Не может быть пустым'
|
30
|
+
title:
|
31
|
+
blank: 'Не может быть пустым'
|
32
|
+
addr:
|
33
|
+
blank: 'Не может быть пустым'
|
34
|
+
gps:
|
35
|
+
blank: 'Не может быть пустым'
|
36
|
+
invalid: 'Неверный формат. Пример правильного значения: 12.1234,12.1234'
|
37
|
+
tel:
|
38
|
+
blank: 'Не может быть пустым'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class CreateC80PushJoinTableDealersPresets < ActiveRecord::Migration[5.0]
|
2
|
+
def change
|
3
|
+
create_table :c80_push_dealers_presets, :id => false do |t|
|
4
|
+
t.integer :dealer_id, :null => false
|
5
|
+
t.integer :preset_id, :null => false
|
6
|
+
end
|
7
|
+
|
8
|
+
add_index :c80_push_dealers_presets, [:dealer_id, :preset_id], name: 'too_long_push11'
|
9
|
+
add_index :c80_push_dealers_presets, [:preset_id, :dealer_id], name: 'too_long_push12'
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
data/lib/c80_push/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
require 'rails/generators/resource_helpers'
|
3
|
+
|
4
|
+
module C80Push
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
|
9
|
+
def create_root_folder
|
10
|
+
# empty_directory 'app/helpers/c80_yax'
|
11
|
+
end
|
12
|
+
|
13
|
+
def copy_template_file
|
14
|
+
template 'seeds/c80_push_02_fill_presets.rb',
|
15
|
+
File.join('db/seeds', 'c80_push_02_fill_presets.rb')
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# rake db:seed:c80_push_02_fill_presets
|
2
|
+
|
3
|
+
C80Push::Preset.delete_all
|
4
|
+
C80Push::Preset.create!([
|
5
|
+
{title:'blueDotIcon', color:'#1E98FF'},
|
6
|
+
{title:'redDotIcon', color:'#ED4543'},
|
7
|
+
{title:'darkOrangeDotIcon', color:'#E6761B'},
|
8
|
+
{title:'nightDotIcon', color:'#0E4779'},
|
9
|
+
{title:'darkBlueDotIcon', color:'#177BC9'},
|
10
|
+
{title:'pinkDotIcon', color:'#F371D1'},
|
11
|
+
{title:'grayDotIcon', color:'#B3B3B3'},
|
12
|
+
{title:'brownDotIcon', color:'#793D0E'},
|
13
|
+
{title:'darkGreenDotIcon', color:'#1BAD03'},
|
14
|
+
{title:'violetDotIcon', color:'#B51EFF'},
|
15
|
+
{title:'blackDotIcon', color:'#595959'},
|
16
|
+
{title:'yellowDotIcon', color:'#FFD21E'},
|
17
|
+
{title:'greenDotIcon', color:'#56DB40'},
|
18
|
+
{title:'orangeDotIcon', color:'#FF931E'},
|
19
|
+
{title:'lightBlueDotIcon', color:'#82CDFF'},
|
20
|
+
{title:'oliveDotIcon', color:'#97A100'}
|
21
|
+
])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: c80_push
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C80609A
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activeadmin
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
description: Добавляет функционал дилеров и офисов продаж
|
28
42
|
email:
|
29
43
|
- c080609a@gmail.com
|
@@ -49,6 +63,7 @@ files:
|
|
49
63
|
- app/assets/javascripts/c80_push/lib_backend/init_select_picker.js
|
50
64
|
- app/assets/javascripts/c80_push_backend.js.coffee
|
51
65
|
- app/assets/stylesheets/c80_push.scss
|
66
|
+
- app/assets/stylesheets/c80_push/backend/dealer_preset_span.scss
|
52
67
|
- app/assets/stylesheets/c80_push/c80_push_page_dealers/_layout.scss
|
53
68
|
- app/assets/stylesheets/c80_push/c80_push_page_dealers/_style.scss
|
54
69
|
- app/assets/stylesheets/c80_push/c80_push_page_dealers/map_dealers_list.scss
|
@@ -59,6 +74,7 @@ files:
|
|
59
74
|
- app/models/c80_push/application_record.rb
|
60
75
|
- app/models/c80_push/dealer.rb
|
61
76
|
- app/models/c80_push/office.rb
|
77
|
+
- app/models/c80_push/preset.rb
|
62
78
|
- app/models/c80_push/region.rb
|
63
79
|
- app/views/c80_push/shared/_page_dealers.html.erb
|
64
80
|
- app/views/c80_push/shared/_select_region.html.erb
|
@@ -72,9 +88,13 @@ files:
|
|
72
88
|
- db/migrate/20170626125858_create_c80_push_regions.rb
|
73
89
|
- db/migrate/20170626130000_create_c80_push_join_table_dealers_regions.rb
|
74
90
|
- db/migrate/20170626130303_create_c80_push_join_table_offices_regions.rb
|
91
|
+
- db/migrate/20170630061313_create_c80_push_presets.rb
|
92
|
+
- db/migrate/20170630061515_create_c80_push_join_table_dealers_presets.rb
|
75
93
|
- lib/c80_push.rb
|
76
94
|
- lib/c80_push/engine.rb
|
77
95
|
- lib/c80_push/version.rb
|
96
|
+
- lib/generators/c80_push/install_generator.rb
|
97
|
+
- lib/generators/c80_push/templates/seeds/c80_push_02_fill_presets.rb
|
78
98
|
- lib/tasks/c80_push_tasks.rake
|
79
99
|
homepage: https://github.com/c80609a/c80_push
|
80
100
|
licenses:
|