-
Notifications
You must be signed in to change notification settings - Fork 34
Структура репозитория
- /build – cкрипт и конфигурационные файлы сборщика
- /docbuilder – утилита генерации документации (из Markdown в HTML)
- /public – публичная папка API, в ней же хранится загрузчик карты
- /src – исходный код API
- /test – тесты
- /vendors – сторонние библиотеки
- app.js – веб-сервис раздачи API
- config.main.json – конфигурационный файл
- Gruntfile.js – список и описание команд Grunt
- LICENSE.md – лицензия
В /src/DGCore/skin находится папка с темами ядра (маркера, балуны и прочее):
-
/skin
- /basic — общий стиль для всех тем (в первую очередь, reset для leaflet, чтобы не повторяться в каждом скине)
- /default — симлинк на одну из существующих тем, подхватывается по умолчанию, если не выбрана другая
- /classic — папка с темой
- /online4 — ещё одна папка с темой
Структура каталога темы выглядит следующим образом (пример):
- /css — тут файлы стилей, по одному для каждого элемента
- /images — тут картинки, сгруппированы по папкам для каждого элемента
- theme.config.js — конфиг темы (json) с параметрами темы (картинки, размер и положение для маркеров, флаг и позиция для контролов)
Чтобы подключить скин, нужно передать его имя параметром при подключении loader.js, например:
<script src="http://maps.api.2gis.ru/2.0/loader.js?skin=nice"></script>
При сборке js и css система проверит есть ли скин с именем nice в модуле, если есть - подтянет ресурсы из этой директории, если нет - возьмет ресурсы в дефолтной теме - директория default.
Важно помнить о соглашениях в именовании картинок скинов, в название изображения добавляется имя скина, например:
dg-fullscreen-nice.png
Все исходники сторонних плагинов добавляются в директорию /vendors/plugin_name/. Структура папки плагина (пример) может быть такой:
-
DGTraffic/
- src/ — исходный код
- test/ — автотесты
- doc/ — документация *.md
- demo/ — демонстрация базовой функциональности плагина
- lang/ — (oпциональная) если плагин поддерживает мультиязычность, в это папке будут лежать файлы словарей (lang/it.js, lang/ru.js)
- skin/ — (oпциональная) если плагин привносит новые элементы ui, исходники добавляются сюда, структура папки /skin аналогична такой же папке ядра
- patch/ — (oпциональная) если требуется внести изменения в плагин (переопределить стили css, изменить функционал методов)
- templates/ — (oпциональная) здесь хранятся шаблоны (в формате *.tmpl) для отображения данных.
Включить плагин в сборку и описать его зависимости можно в файле build/deps.js. Например так:
DGFullScreen: {
desc: 'DGFullScreen module.',
src: ['DGFullScreen/src/DGFullScreen.js',
'DGFullScreen/lang/ru.js',
'DGFullScreen/lang/it.js',
'DGFullScreen/skin/{skin}/theme.config.js',
],
css: {
all: ['DGFullScreen/skin/{skin}/css/DGFullScreen.css']
},
deps: ['DGLocale']
}
Важно ипользовать переменную {skin}
при подключении ресурсов зависимых от тем, чтобы не потерять возможность подключать темы параметром из loader.js url.
Добавляем нужные шаблоны в каталог templates:
-
DGTraffic/
- ...
-
templates/
- balloon.tmpl
- firmCart.tmpl
Чтобы получить доступ к шаблонам модуля нужно объявить переменную __ModuleName_TMPL__
(например __DGTraffic_TMPL__
). Эта переменная при сборке будет заменена на объект со всеми шаблонами модуля и их содержимым (обращение по имени файла шаблона, то есть: содержимое шаблона balloon.tmpl будет доступно через templates.balloon, а содержимое шаблона firmCard.tmpl через templates.firmCard):
var templates = __DGTraffic_TMPL__; // объект templates содержит все шаблоны модуля DGTraffic
templates.balloon // вернет контент шаблона balloon.tmpl