README.md in c80_push-0.1.0.2 vs README.md in c80_push-0.1.0.3

- old
+ new

@@ -1,16 +1,17 @@ # C80Push Добавляет функционал дилеров и офисов продаж. Это *ActiveAdmin* plugin. -Использует *Bootstrap* и *Bootstrap Select*. +Использует *Bootstrap* и *Bootstrap Select*: как во *frontend*, +так и в *backend*. Содержит модели: -* Дилер -* Офис -* Регион +* *Регион* (habtm Dealers) +* *Дилер* (has_many Offices) +* *Офис* (belongs_to Dealer) Добавляет пункт меню: * Дилеры * Список дилеров @@ -19,11 +20,11 @@ ## Usage Available helpers: * `c80_push_render_page_dealers`: отрисует js-компонент с yandex картой -и фильтруемым списком дилеров слева. +и фильтруемым, кликабельным списком офисов слева. ## Installation Add this line to your application's Gemfile: @@ -34,10 +35,12 @@ And then execute: ```bash $ bundle $ rake db:migrate +$ rails generate c80_push:install +$ rake db:seed:c80_push_02_fill_presets ``` Add this line to host app's `application_controller.rb`: ```ruby @@ -47,11 +50,10 @@ Add these lines to host app's `active_admin.js.coffee`: ```js #= require bootstrap #= require bootstrap-select -#= require c80_yax #= require c80_push_backend ``` Add these lines to host app's 'application.js.coffee': @@ -65,15 +67,66 @@ ```css @import "bootstrap-sprockets"; @import "bootstrap"; @import "bootstrap-select"; -@include "c80_push"; +@import "c80_push"; ``` -## Процесс разработки JS функционала +## Customization +Т.к. исходя из ТЗ было не ясно, есть ли у *Офисов* такие поля, как +сайт, email и регион, они были добавлены (на всякий случай), и поля +сделаны необязательными. И их можно "отключить", добавив в host app +такой файл `app/assets/stylesheets/custom/backend/c80_push/dealers.scss`: + +```scss +/* у Офисов скроем неиспользуемые поля */ +body.admin_dealers { + &.edit, &.new { + + li[id*='dealer_offices_attributes_'] { + &[id*='site_input'] { + display: none; + } + &[id*='email_input'] { + display: none; + } + &[id*='regions_input'] { + display: none; + } + } + } +} +``` + +А сам файл подключить в `active_admin.scss`: + +```scss +@import "custom/backend/**/*"; +``` + +# TODO + +* [X] Добавить валидацию поля `gps` модели *Office*. + + - [ ] Попробовать подключить к `backend` *client side validation*. + +* [X] Реализовать функционал цветных маркеров. + + - [ ] Внутри `bootstrap selectpicker` должны рисоваться цветные прямоугольники: + [/formtastic/inputs/select_input.rb](https://github.com/justinfrench/formtastic/blob/master/lib/formtastic/inputs/select_input.rb), + [bootstrap selectpicker: option with data-content](https://stackoverflow.com/questions/26069286/bootstrap-with-select-list-that-contains-only-images) + +* [ ] Вынести `*.rb` файлы, подлежащие кастомизации в `templates` (предварительно +определив, что может еще быть кастомизировано), наваять инсталлятор, +отметить это в `README`. + + - [X] seeds + +# Процесс разработки JS функционала + Теперь пора заняться js. * [X] Прикрутить `selectpicker`: выводить туда только те регионы, в которых есть дилеры, у которых есть офисы. @@ -90,17 +143,40 @@ - [ ] слева должен подсвечиваться соответствующий `.li_office`. * [X] При наведении/клике на `.li_office` - должна подсвечиваться соответствующая точка на карте. -* [ ] Вставить из `psd` синий маркер. +* [X] Реализовать функционал цветных маркеров. * [X] Когда меняется регион: * [X] Должны отобразиться релевантные `.li_office` * [X] Должны отобразиться релевантные точки на карте. +## Процесс добавления функционала "Цвет маркеров дилеров" + +* [X] добавляем таблицу `Presets` с полями `preset_name` +и `color`, причём `color` я должен забить руками с помощью color picker +со страницы докуметации Яндекс.карты (`color` используется только в админке +для иллюстрации "что такое preset"). + +* [X] Таблица `Presets` должна быть habtm-связана с таблицей `:dealers` + +* [X] Таблицу заполнить содержимым с помощью seed файла, пункт в админке не делать. + +* [X] при сборке хеша для Яндекс.карт - собираем в него свойства меток + + - [X] Если цвет не задан - по-умолчанию добавляем голубой + +* в админке: + + - [ ] в форме редактирования/создания: у каждого дилера должен быть селект, в котором видно как + и название `preset-а`, так и его цвет + + * [X] на индексной странице: должен быть столбец, в котором выводится название + `preset-a` и его цвет + ## Цитата из ТЗ > Данный раздел представляет собой список компаний, у которых указаны > адреса офисов продаж и другие контактные данные. > @@ -112,14 +188,14 @@ > селект, с помощью которого можно выбрать один из регионов. > > Выбрав тот или иной регион, пользователь видит слева от > интерактивной карты список компаний, а также адреса их офисов продаж. > -> Офисы продаж ORIMA и копании-дилеры (и адреса их офисов продаж) +> Офисы продаж компании и копании-дилеры (и адреса их офисов продаж) > разграничены на интерактивной карте маркерами разного цвета. > > В списке слева от интерактивной карты сначала отображаются офисы -> продаж компании ORIMA, а затем список компаний-дилеров +> продаж компании, а затем список компаний-дилеров > (и адресов их офисов продаж). > > С помощью инструментов панели управления сайтом можно создавать > редактировать и удалять компании, задавать/изменять/удалять > адреса офисов продаж и другие характеристики характеристики: