Skip to content

Структура репозитория

Andrey Geonya edited this page Jun 30, 2013 · 26 revisions
  • /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
Clone this wiki locally