1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dabeng-OrgChart

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 49 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.06.2025 12:50 3cbcd1d

OrgChart

Русский документ, Традиционный китайский документ

Версия ES6

Версия Web Components

Версия Vue.js

Версия Angular

Версия React

Введение

Сначала большое спасибо wesnolte за его замечательную работу:blush: -- jOrgChart. Идея использования вложенных таблиц для построения дерева организационной структуры просто великолепна. Эта идея более проста и прямолинейна, чем аналоги на основе SVG. К сожалению, обновления jOrgChart не поступали уже давно. С другой стороны, у меня появилось несколько интересных идей для добавления, поэтому я решил создать новый репозиторий.

  • С версии 3.0 мы используем вложенные ul для построения дерева организационной структуры вместо вложенных таблиц.
  • С версии 4.0 пользователи сами строят ajax-источник данных.## Возможности
  • Поддерживает как локальные, так и удалённые данные (JSON).
  • Гладкие эффекты раскрытия/скрытия на основе CSS3 transitions.
  • Выравнивание диаграммы в четырёх ориентациях.
  • Позволяет пользователю изменять структуру организационной диаграммы путём перетаскивания узлов.
  • Позволяет пользователю динамически редактировать организационную диаграмму и сохранять итоговую иерархию в виде объекта JSON.
  • Поддерживает экспорт диаграммы в виде изображения или документа PDF.
  • Поддерживает панорамирование и масштабирование.
  • Позволяет пользователю настраивать внутреннюю структуру для каждого узла.
  • Пользователи могут использовать несколько решений для построения большой организационной диаграммы (пожалуйста, обратитесь к разделам гибридного макета).
  • Плагин для мобильных устройств, поддерживающий сенсорные экраны.## CDN Пользователи могут найти поддержку CDN для CSS и JavaScript OrgChart.

cdnjs https://cdnjs.com/libraries/orgchart

Установка

Конечно, вы можете использовать standalone сборку, включив dist/js/jquery.orgchart.js и dist/css/jquery.orgchart.css в ваши веб-приложения.

Установка с помощью Bower

# С версии 1.0.2 пользователи могут установить orgchart и добавить его в зависимости bower.json
$ bower install orgchart

Установка с помощью npm

# С версии 1.0.4 пользователи могут установить orgchart с помощью npm
$ npm install orgchart

require('orgchart') загрузит плагин orgchart на объект jQuery. Сам модуль orgchart ничего не экспортирует.

Демо на github pages

Демо на основе вложенных ul

Демо на основе вложенных таблиц (устарело)

Онлайн-демо

загрузка-данных-по-требованию

Примечание: пользователи должны самостоятельно установить свойство отношения источника данных. Все эти настройки используются для генерации правильных стрелок для расширения/сворачивания узлов.

Для этого нам нужна помощь от html2canvas.

Примечание:

(1) если вы хотите экспортировать что-то в IE или Edge, пожалуйста, введите es6-promise.auto.js в первую очередь. (2) Если ваша ОС Windows, пожалуйста, проверьте настройки масштабирования экрана. Для идеально экспортированного изображения лучше всего установить "Изменить размер текста, приложений и других элементов" на 100% (спасибо sayamkrai за исследование).(3) Кроме того, если вы хотите экспортировать формат PDF или ваш оргчарт включает изображения, вам нужно включить jspdf и установить опцию "exportFileextension" на "pdf".

Вам нужно установить crossorigin на "anonymous" для ваших img тегов.

export-chart-with-pictures

Здесь мы используем OpenLayers. Это самая впечатляющая открытая библиотека JavaScript для Web GIS, которую вы не должны пропустить.

С помощью выведенных методов ядра (addParent(), addSiblings(), addChildren(), removeNodes()) плагина orgchart, мы можем легко выполнить эту задачу.

Пользователи могут перетаскивать и перемещать узлы оргчарта, когда опция "draggable" установлена в true (Примечание: эта функция не работает в IE из-за его слабой поддержки HTML5 API drag & drop).

Кроме того, пользователи могут использовать опцию "dropCriteria" для внедрения своих собственных ограничений на перетаскивание и перемещение. Как показано ниже, мы не хотим, чтобы менеджер-сотрудник оказался под инженером ни при каких обстоятельствах.- Я хочу метод, который может описать иерархию оргчарта

Вот где приходит getHierarchy().

Это такая простая задача, нам просто нужно добавить свойство id или className к данным узла.

Примечание: в настоящее время эта опция несовместима с многими другими опциями или методами, такими как направление, перетаскивание и отпускание (drag&drop), добавление дочерних узлов (addChildren()), удаление узлов (removeNodes()), получение иерархии (getHierarchy()) и так далее. Эти конфликты будут решены по одному в последующих версиях.- Я хочу, чтобы некоторые узлы были свернуты по умолчанию

Нет проблем. Вам просто нужно будет немного скорректировать структуру источника данных с помощью опции "collapse" и класса "slide-up".

Это не большая проблема. Вам просто нужно использовать метод init().

Нет проблем. С помощью ES6 шаблонных литералов мы можем кастомизировать любую сложную структуру узлов, а не только стандартные заголовок и содержимое.

level-offset

Вам потребуется решение, основанное на новой структуре источника данных с использованием data prop levelOffset + callback createNode() + CSS custom properties(variables)

nodes-of-different-widths

гибридный data prop создан специально для вашего случая. Как только данные узла включают prop "hybrid" с истинным значением, его потомки будут выстроены вертикально.

data-prop-compact

свойство данных compact предназначено для вашего случая. Как только данные узла включают свойство "compact" с истинным значением, сам узел и его потомки будут расположены в компактном режиме.

Как запустить демки локально

  • вам нужно установить node.js v6+ потому что наши юнит-тесты основаны на jsdom v11
  • вам нужно установить современные браузеры, так как многие поведения плагина orgchart основаны на HTML5 и CSS3
  • выполните npm install для установки необходимых зависимостей
  • выполните npm test для запуска всех тестов, включая юнит-тесты, интеграционные тесты и e2e тесты
  • выполните npm run build для генерации файлов js&css плагина для продакшена
  • выполните npm start для запуска локального веб-сервера для размещения всех демок

Использование### Инстанцирующее выражение

var oc = $('#chartContainerId').orgchart(options);

Структура источника данных

{
  'id': 'rootNode', // Необязательное свойство, которое будет использоваться в качестве атрибута id узла
  // и атрибута data-parent, который содержит id родительского узла
  'collapsed': true, // По умолчанию, дочерние узлы текущего узла скрыты.
  'className': 'top-level', // Необязательное свойство
  // которое будет использоваться в качестве атрибута className узла.
  'nodeTitle': 'name', // Это свойство используется для получения значения "title" в источнике данных
  'nodeContent': 'title', // Это свойство используется для получения значения "content" в источнике данных
  'relationship': relationshipValue, // Примечание: когда вы активируете функцию загрузки узлов по требованию,
  // вы должны использовать json источник данных (локальный или удаленный) и установить это свойство.
  // Это свойство указывает, имеет ли этот узел родителя, братьев или сестёр, детей.
  // relationshipValue представляет собой строку, состоящую из трёх "0/1" идентификаторов.
  // Первый символ указывает, имеет ли текущий узел родительский узел;
  // Второй символ указывает, имеет ли текущий узел братьев или сестёр;
  // Третий символ указывает, имеет ли текущий узел дочерние узлы.
  'children': [ // Это свойство представляет собой вложенные узлы.
    { 'name': 'Bo Miao', 'title': 'директор отдела', 'relationship': '110' },
    { 'name': 'Su Miao', 'title': 'директор отдела', 'relationship': '111',
      'children': [
```        { 'name': 'Tie Hua', 'title': 'старший инженер', 'relationship': '110' },
         { 'name': 'Hei Hei', 'title': 'старший инженер', 'relationship': '110' }
       ]
     },
     { 'name': 'Yu Jie', 'title': 'директор отдела', 'relationship': '110' }
   ],
   'otherPro': anyValue // добавьте любые полезные свойства
 };
 ```### Свойства данных
 <table>
   <thead>
     <tr>
       <th>Имя</th>
       <th>Тип</th>
       <th>Описание</th>
     </tr>
   </thead>
   <tbody>
     <tr>
       <td>hybrid</td>
       <td>truthy value</td>
       <td>узлы будут располагаться вертикально, если это свойство установлено в true</td>
     </tr>
     <tr>
       <td>compact</td>
       <td>truthy value</td>
       <td>узел будет отображаться в компактном режиме, если это свойство установлено в true</td>
     </tr>
   </tbody>
 </table>### Параметры
  <table>
    <thead>
      <tr>
        <th>Имя</th>
        <th>Тип</th>
        <th>Обязательный</th>
        <th>Значение по умолчанию</th>
        <th>Описание</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>data</td>
        <td>json или объект jquery</td>
        <td>да</td>
        <td></td>
        <td>Источник данных, используемый для построения структуры оргчарта. Это может быть объект JSON или объект jQuery (элемент ul).</td>
      </tr>
      <tr>
        <td>pan</td>
        <td>логическое значение</td>
        <td>нет</td>
        <td>false</td>
        <td>Пользователи могут перетаскивать оргчарт мышью, если включат эту опцию.</td>
      </tr>
      <tr>
        <td>zoom</td>
        <td>логическое значение</td>
        <td>нет</td>
        <td>false</td>
        <td>Пользователи могут масштабировать оргчарт с помощью колесика мыши, если включат эту опцию.</td>
      </tr>
      <tr>
        <td>zoominLimit</td>
        <td>число</td>
        <td>нет</td>
        <td>7</td>
      </tr>
    </tbody>
  </table>       <td>Пользователи могут установить предел масштабирования вперед.</td>
      </tr>
      <tr>
        <td>zoomoutLimit</td>
        <td>число</td>
        <td>нет</td>
        <td>0.5</td>
        <td>Пользователи могут установить предел масштабирования назад.</td>
      </tr>
      <tr>
        <td>direction</td>
        <td>строка</td>
        <td>нет</td>
        <td>"t2b"</td>
        <td>Доступные значения: t2b (означает "сверху вниз", это значение по умолчанию), b2t (означает "снизу вверх"), l2r (означает "слева направо"), r2l (означает "справа налево").</td>
      </tr>
      <tr>
        <td>verticalLevel</td>
        <td>целое число (>=2)</td>
        <td>нет</td>
        <td></td>
        <td>Пользователи могут использовать эту опцию для выравнивания узлов вертикально с указанного уровня.</td>
      </tr>
      <tr>
        <td>toggleSiblingsResp</td>
        <td>логическое значение</td>
        <td>нет</td>
        <td>false</td>
        <td>Если эта опция включена, пользователи могут показывать/скрывать соседние узлы слева/справа соответственно, нажимая на левую/правую стрелку.</td>
      </tr>
      <tr>
        <td>visibleLevel</td>
        <td>положительное целое число</td>
        <td>нет</td>
        <td>999</td>
        <td>Это указывает на уровень, до которого оргчарт расширяется сразу после загрузки.</td>
      </tr>
      <tr>
        <td>nodeTitle</td>
        <td>строка</td>
        <td>нет</td>
        <td>"name"</td>
        <td>Это устанавливает одно свойство источника данных как текстовое содержимое заголовка узла оргчарта. В действительности, пользователи могут создать простой оргчарт с помощью только этой опции.</td>
      </tr>
      <tr>
        <td>parentNodeSymbol</td>
       <td>string</td>
        <td>no</td>
        <td>"oci-menu"</td>
        <td>Использование собственной иконки для указания, что у узла есть дочерние узлы.</td>
      </tr>
      <tr>
        <td>nodeContent</td>
        <td>string</td>
        <td>no</td>
        <td></td>
        <td>Устанавливает одно свойство источника данных как текстовое содержимое секции контента узла оргчарта.</td>
      </tr>
      <tr>
        <td>nodeId</td>
        <td>string</td>
        <td>no</td>
        <td>"id"</td>
        <td>Устанавливает одно свойство источника данных как уникальный идентификатор каждого узла оргчарта.</td>
      </tr>
      <tr>
        <td>nodeTemplate</td>
        <td>function</td>
        <td>no</td>
        <td></td>
        <td>Это функция генерации шаблона, используемая для кастомизации любой сложной внутренней структуры узла. Она принимает только один параметр: "data" означает JSON источник данных, который будет использован для отрисовки одного узла.</td>
      </tr>
      <tr>
        <td>createNode</td>
        <td>function</td>
        <td>no</td>
        <td></td>
        <td>Это обратный вызов функции, используемый для кастомизации каждого узла оргчарта. Он принимает два параметра: "$node" означает объект jQuery одного узла div; "data" означает источник данных одного узла.</td>
      </tr>
      <tr>
        <td>exportButton</td>
        <td>boolean</td>
        <td>no</td>
        <td>false</td>
        <td>Включает кнопку экспорта для оргчарта.</td>
      </tr>
      <tr>
        <td>exportButtonName</td>
        <td>string</td>
        <td>no</td>
        <td>"Export"</td>
        <td>Это имя кнопки экспорта.</td>
      </tr>
      <tr>
        <td>exportFilename</td>
        <td>string</td>
        <td>no</td>
        <td>"Orgchart"</td>
      </tr>       <td>Это имя файла при экспорте текущего организационного чарта в виде изображения.  </td>
      </tr>
      <tr>
        <td>exportFileextension</td>
        <td>string</td>
        <td>no</td>
        <td>"png"</td>
        <td>Доступные значения: png и pdf.  </td>
      </tr>
      <tr>
        <td>chartClass</td>
        <td>string</td>
        <td>no</td>
        <td>""</td>
        <td>Когда вы хотите инстанцировать несколько организационных чартов на одной странице, вы должны добавить разные классы к ним для их различения.  </td>
      </tr>
      <tr>
        <td>draggable</td>
        <td>boolean</td>
        <td>no</td>
        <td>false</td>
        <td>Пользователи могут перетаскивать и перемещать узлы организационного чарта, если они включат эту опцию.  **Примечание**: данная функция не работает в IE из-за его слабой поддержки HTML5 API drag & drop.  </td>
      </tr>
      <tr>
        <td>dropCriteria</td>
        <td>функция</td>
        <td>нет</td>
        <td></td>
        <td>Пользователи могут создать собственные критерии для ограничения отношений между перетаскиваемым узлом и зоной назначения. Эта функция принимает три аргумента (draggedNode, dragZone, dropZone) и возвращает только булево значение.  </td>
      </tr>
      <tr>
        <td>initCompleted</td>
        <td>функция</td>
        <td>нет</td>
        <td></td>
        <td>Часто полезно знать, когда ваша таблица полностью инициализирована, данные загружены и отображены. Эта функция принимает один параметр: "$chart" представляет собой объект jQuery инициализированного графика.  </td>
      </tr>
      <tr>
        <td>icons</td>
        <td>json</td>
        <td>нет</td>
        <td></td>
        <td>Пользователи могут использовать этот параметр для подключения значков Font Awesome.         <pre>
            <code>
  'icons': {
    'theme': 'fa-solid fa-sm',
    'parentNode': 'fa-user-tie',
    'expandToUp': 'fa-angles-up',
    'collapseToDown': 'fa-angles-down',
    'collapseToLeft': 'fa-angles-left',
    'expandToRight': 'fa-angles-right',
    'collapsed': 'fa-circle-plus',
    'expanded': 'fa-circle-minus'
  }
            </code>
          </pre>
        </td>
      </tr>
      <tr>
        <td>compact</td>
        <td>функция</td>
        <td>нет</td>
        <td></td>
        <td>Этот обратный вызов используется для определения, отображается ли текущий узел в компактном режиме. Данные узла передаются в качестве параметра. <b>Примечание:</b> Параметр "compact" имеет более высокий приоритет, чем свойство данных "compact".</td>
      </tr>
    </tbody>
  </table>### Методы
 Я уверен, что вы сможете уловить ключевые моменты методов ниже после того, как попробуете демо -- [редактирование оргструктуры](http://dabeng.github.io/OrgChart/edit-orgchart/).#### var oc = $container.orgchart(options)
Встраивает организационную структуру в заданный контейнер. Принимает объект опций, и вы можете перейти к разделу "опции", чтобы найти, какие опции требуются. Переменная oc является экземпляром класса OrgChart.

#### init(newOptions)
Это полезный способ для пользователей, которые хотят перезапустить или обновить организационную структуру на основе новых опций или загрузить новые данные.

#### addAncestors(data, parentId)
Добавляет предков для текущей организационной структуры.
<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th>Тип</th>
      <th>Обязательно</th>
      <th>Значение по умолчанию</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>data</td>
      <td>json</td>
      <td>да</td>
      <td></td>
      <td>источник данных для построения предков</td>
    </tr>
    <tr>
      <td>parentId</td>
      <td>строка</td>
      <td>да</td>
      <td></td>
      <td>идентификатор родительского узла, к которому добавляются предки</td>
    </tr>
  </tbody>
</table>

#### addDescendants(data, $parent)
Добавляет потомков для указанного родительского узла.
<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th>Тип</th>
      <th>Обязательно</th>
      <th>Значение по умолчанию</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>data</td>
      <td>массив</td>
      <td>да</td>
      <td></td>
      <td>источник данных для построения потомков</td>
    </tr>
    <tr>
      <td>$parent</td>
      <td>объект jQuery</td>
      <td>да</td>
      <td></td>
      <td>родительский узел, к которому добавляются потомки</td>
    </tr>
  </tbody>
</table>#### addParent(data)
Добавляет родительский узел (на самом деле, это всегда корневой узел) для текущей организационной структуры.
<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th>Тип</th>
      <th>Обязательно</th>
      <th>Значение по умолчанию</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>data</td>
      <td>объект JSON</td>
      <td>да</td>
      <td></td>
      <td>источник данных для построения корневого узла</td>
    </tr>
  </tbody>
</table>

#### addSiblings($node, data)
Добавляет сестринские узлы для заданного узла.
<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th>Тип</th>
      <th>Обязательно</th>
      <th>Значение по умолчанию</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>$node</td>
      <td>jQuery object</td>
      <td>да</td>
      <td></td>
      <td>на основе этого узла будут добавлены сестринские узлы</td>
    </tr>
    <tr>
      <td>data</td>
      <td>массив</td>
      <td>да</td>
      <td></td>
      <td>источник данных для построения сестринских узлов</td>
    </tr>
  </tbody>
</table>

#### addChildren($node, data)
Добавляет дочерние узлы для заданного узла.
<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th>Тип</th>
      <th>Обязательно</th>
      <th>Значение по умолчанию</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>$node</td>
      <td>jQuery object</td>
      <td>да</td>
      <td></td>
      <td>мы добавим дочерние узлы на основе этого узла</td>
    </tr>
    <tr>
      <td>data</td>
      <td>массив</td>
      <td>да</td>
      <td></td>
      <td>источник данных для построения дочерних узлов</td>
    </tr>
  </tbody>
</table>#### removeNodes($node)
Удаляет заданный узел и его потомков.
<table>
  <thead>
    <tr>
      <th>Имя</th>
      <th>Тип</th>
      <th>Обязательно</th>
      <th>Значение по умолчанию</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>$node</td>
      <td>jquery object</td>
      <td>да</td>
      <td></td>
      <td>узел, который необходимо удалить</td>
    </tr>
  </tbody>
</table>#### getHierarchy()
Этот метод предназначен для получения иерархических отношений организационной структуры для дальнейшей обработки. Например, после редактирования организационной структуры, вы можете отправить возвращаемое значение этого метода на сторону сервера и сохранить новое состояние организационной структуры.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательно</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>includeNodeData</td>
    <td>Boolean</td>
    <td>Нет</td>
    <td>false</td>
    <td>Этот необязательный параметр определяет, включать ли элементы nodeData в сгенерированный JSON-объект помимо id и children</td>
  </tr>
</table>#### hideParent($node)
Этот метод позволяет скрыть родительский узел любого конкретного узла (.node элемент) программно, если он существует.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательно</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый JQuery Object для скрытия его родительского узла. Разумеется, его сестринские узлы будут скрыты одновременно.</td>
  </tr>
</table>

#### showParent($node)
Этот метод позволяет программно показывать родительский узел любого конкретного узла (.node элемент), если он есть.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery для отображения его родительского узла.</td>
  </tr>
</table>

#### hideChildren($node)
Метод позволяет скрыть программно дочерние элементы любого конкретного узла (.node элемент), если такие имеются.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery, дочерние элементы которого нужно скрыть.</td>
  </tr>
</table>#### showChildren($node)
Метод позволяет показать программно дочерние элементы любого конкретного узла (`.node` элемент), если такие имеются.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery, дочерние элементы которого нужно показать</td>
  </tr>
</table>

#### hideSiblings($node, direction)
Метод позволяет скрыть программно братьев (соседние элементы) любого конкретного узла (`.node` элемент), если такие имеются.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
   < td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery, братья которого нужно скрыть</td>
  </tr>
  <tr>
    <td>direction</td>
    <td>string</td>
    <td>Нет</td>
    <td></td>
    <td>Возможные значения: "left", "right". Указывает, скрыть ли братьев слева или справа. Если не указано, скрывает оба.</td>
  </tr>
</table>#### showSiblings($node, direction)
Метод позволяет показать программно братьев (соседние элементы) любого конкретного узла (.node элемент), если такие имеются.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery, братья которого нужно показать</td>
  </tr>
  <tr>
    <td>direction</td>
    <td>string</td>
    <td>Нет</td>
    <td></td>
    <td>Возможные значения: "left", "right". Указывает, показать ли братьев слева или справа. Если не указано, показывает оба.</td>
  </tr>
</table>

#### Получить состояние узла($node, relation)
Этот метод возвращает вам состояние отображения связанного узла указанного узла.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery для определения состояния отображения его связанных узлов.</td>
  </tr>
  <tr>
    <td>relation</td>
    <td>Строка</td>
    <td>Да</td>
    <td></td>
    <td>Возможные значения: "parent", "children" и "siblings". Указывает желаемое отношение для возврата.</td>
  </tr>
</table>

Возвращаемый объект будет иметь следующую структуру:
```js
{
  "exist": true|false, // Указывает, существует ли родитель|дети|близнецы
  "visible": true|false, // Указывает, видимы ли узлы связи
}
```#### getRelatedNodes($node, relation)
Этот метод возвращает узлы, связанные с указанным узлом.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательно</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery для определения связанных узлов</td>
  </tr>
  <tr>
    <td>relation</td>
    <td>Строка</td>
    <td>Да</td>
    <td></td>
    <td>Возможные значения: "parent", "children" и "siblings". Указывает желаемое отношение для возврата.</td>
  </tr>
</table>

#### getParent($node)
Этот метод возвращает родительский узел указанного узла.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательно</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery для определения родительского узла</td>
  </tr>
</table>

#### getSiblings($node)
Этот метод возвращает братские узлы указанного узла.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательно</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery для определения братских узлов</td>
  </tr>
</table>#### getChildren($node)
Этот метод возвращает дочерние узлы указанного узла.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательно</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$node</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это желаемый объект JQuery для определения дочерних узлов</td>
  </tr>
</table>

#### setChartScale($chart, newScale)
Метод позволяет установить указанный график с новым масштабом.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>$chart</td>
    <td>JQuery Object</td>
    <td>Да</td>
    <td></td>
    <td>Это график в вашем контейнере для графиков</td>
  </tr>
  <tr>
    <td>newScale</td>
    <td>Float</td>
    <td>Да</td>
    <td></td>
    <td>Положительное число с плавающей запятой, используемое для увеличения/уменьшения графика</td>
  </tr>
</table>

#### export(exportFilename, exportFileextension)
Метод позволяет экспортировать текущую структуру организации в файл формата png или pdf.
<table>
  <tr>
    <th>Имя</th>
    <th>Тип</th>
    <th>Обязательный</th>
    <th>Значение по умолчанию</th>
    <th>Описание</th>
  </tr>
  <tr>
    <td>exportFilename</td>
    <td>String</td>
    <td>Нет</td>
    <td>'OrgChart'</td>
    <td>Имя экспортируемого файла</td>
  </tr>
  <tr>
    <td>exportFileextension</td>
    <td>String</td>
    <td>Нет</td>
    <td>'png'</td>
    <td>Расширение экспортируемого файла</td>
  </tr>
</table>### События
<table>
  <thead>
    <tr>
      <th>Тип события</th>
      <th>Дополнительные параметры</th>
      <th>Описание</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>nodedrop.orgchart</td>
      <td>draggedNode, dragZone, dropZone</td>
      <td>Обработчик события, где можно разместить пользовательскую функцию после перетаскивания узла. Для более подробной информации, обратитесь к <a target="_blank" href="http://dabeng.github.io/OrgChart/drag-drop/">примеру перетаскивания</a>.</td>
    </tr>
    <tr>
      <td>init.orgchart</td>
      <td>chart</td>
      <td>Событие завершения инициализации  срабатывает после полной инициализации структуры организации и загрузки данных.</td>
    </tr>
    <tr>
      <td>show-[relation].orgchart</td>
      <td></td>
      <td>Событие срабатывает, когда связанные узлы узла становятся видимыми.</td>
    </tr>
    <tr>
      <td>hide-[relation].orgchart</td>
      <td></td>
      <td>Событие срабатывает, когда связанные узлы узла сворачиваются.</td>
    </tr>
  </tbody>
</table>

### Советы
#### Как можно деактивировать функцию разворачивания/сворачивания структуры организации?
Этот сценарий вдохновлен [проблемой](https://github.com/dabeng/OrgChart/issues/25). Благодарим [der-robert](https://github.com/der-robert) и [ActiveScottShaw](https://github.com/ActiveScottShaw) за конструктивные обсуждения:blush:

Пользователи могут включать/выключать функцию разворачивания/сворачивания с помощью класса "noncollapsable", как показано ниже.
```js
$('.orgchart').addClass('noncollapsable'); // деактивировать
``````js
$('.orgchart').removeClass('noncollapsable'); // активировать

Почему исчезает корневой узел?

Когда у меня есть огромная структура управления (orgchart) с включенной опцией "pan", если я скрываю всех потомков одного из верхних родителей, то структура исчезает с экрана. Судя по всему, нам нужно добавить кнопку сброса, чтобы структура оставалась видимой. Для подробностей, пожалуйста, обратитесь к проблеме, открытой manuel-84 :blush:Пользователи могут встроить любые логики очистки в обработчик нажатия кнопки сброса, как показано ниже.

$('.orgchart').css('transform',''); // удалить настройки трансформации
```## Совместимость с браузерами
- Chrome 19+
- Firefox 4+
- Safari 6+
- Opera 15+
- IE 10+

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dabeng-OrgChart.git
git@api.gitlife.ru:oschina-mirror/dabeng-OrgChart.git
oschina-mirror
dabeng-OrgChart
dabeng-OrgChart
master