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

OSCHINA-MIRROR/yi-ge-js-tree-list

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 22:05 d77bcad

Методы

  • constructor(list, options)

    • параметры:
      • list — массив элементов. Например, { id: 5: parent: 1 }.
      • options — необязательный параметр. Объект для описания флагов и имён полей для дерева.
  • .GetTree() Этот метод возвращает дерево в формате JSON.

    • Пример:
tree.GetTree()
  • .sort(callback) Метод пользовательской сортировки.
    • callback(a, b) — a и b имеют тип Node и имеют методы: add, remove, get, set, sort, traversal и т. д.
    • пример:
function compareById(vector) {
  return (a, b) => {
    const aid = Number(a.get("id"))
    const bid = Number(b.get("id"))
    if (aid > bid) {
      return vector ? 1 : -1
    } else if (aid < bid) {
      return vector ? -1 : 1
    } else {
      return 0
    }
  }
}
ltt.sort(compareById(false))

Использование Tree и Node Base

// создаём дерево
import JsTreeList from "js-tree-list"
const object = { id: 1, title: "Root" }
const tree = new JsTreeList.Tree(object)

// добавляем узлы
const regularObject = { id: 2, title: "Node 2" }
tree.add(parentNode => {
  return parentNode.get("id") === 1
}, regularObject)

// содержит узел
const targetNode = tree.contains(currentNode => {
  return currentNode.get("id") === 2
})

// удаляем узел
const result = tree.remove(currentNode => {
  return currentNode.get("id") === 2
})

// обход
const criteria = currentNode => currentNode.get("id") === 1
tree.traversal(criteria, currentNode => {
  currentNode.set("some", true)
})
function compareById(vector) {
  return (a, b) => {
    const aid = Number(a.get("id"))
    const bid = Number(b.get("id"))
    if (aid > bid) {
      return vector ? 1 : -1
    } else if (aid < bid) {
      return vector ? -1 : 1
    } else {
      return 0
    }
  }
}
tree.sort(compareById(false)) // desc

Доступны и другие методы.


Tree

Это класс управления деревом.

Свойства

  • rootNode Корневой узел дерева
    • тип: Node

Методы

  • contstructor(object)

    • Параметры:
      • object — json-объект. Необязательный.
    • Возвращает: Three
    • Пример:
    const object = { id: 1, title: "Root" }
    const tree = new JsTreeList.Tree(object)
  • .add(criteria, object) Добавляет узел в дерево, если критерий истинен.

    • Параметры:
      • criteria(Node) — функция или строка. Если строка, то критерий — «root».
      • object — содержимое узла.
    • Возвращает: Tree
    • Примеры:
    const object = { id: 1, title: "Root" }
    const tree = new JsTreeList.Tree()
    const resultTree = tree.add("root", object)
    const regularObject = { id: 2, title: "Node 2" }
    const resultTree = tree.add(parentNode => {
      return parentNode.get("id") === 1
    }, regularObject)
  • .remove(criteria) Удаляет узел из дерева, если критерий истинен.

    • Параметры:
      • criteria(Node) — возвращает логическое значение.
    • Возвращает: логическое значение.
    • Примеры:
    const result = tree.remove(currentNode => {
      return currentNode.get("id") === 7
    })
  • .contains(criteria) Ищет узел в дереве по критерию.

    • Параметры:
      • criteria(Node) — возвращает логическое значение.
    • Возвращает: Node.
    • Примеры:
    const targetNode = tree.contains(currentNode => {
      return currentNode.get("id") === 7
    })
  • .sort(compare) Сортирует дерево.

    • Параметры:
      • compare(a:Node, b:Node) — функция сравнения.
    • Возвращает: null.
    • Примеры:
    function compareById(vector) {
      return (a, b) => {
        const aid = Number(a.get("id"))
        const bid = Number(b.get("id"))
        if (aid > bid) {
          return vector ? 1 : -1
        } else if (aid < bid) {
          return vector ? -1 : 1
        } else {
          return 0
        }
      }
    }
    tree.sort(compareById(false)) //Desc
  • .move(criteria, destination) Перемещает нужную ветвь или узел к узлу или ветви назначения в соответствии с критериями.

    • Параметры:
      • criteria(Node) — обратный вызов. destination(Node) — callback
  • return boolean

  • examples:

const search = currentNode => currentNode.get("id") === 7
const destination = currentNode => currentNode.get("id") === 3
const result = tree.move(search, destination)

.traversal(criteria, callback)

  • Bypasses the tree and, according to the criterion, calls a function for each node
    • params:
      • criteria(Node) — return boolean
      • callback(Node)
    • return null
    • examples:
const criteria = currentNode => currentNode.get("id") === 7
tree.traversal(criteria, currentNode => {
  currentNode.set("some", true)
})
tree.traversal(null, currentNode => {
  if (currentNode.get("id") % 2 === 0) {
    currentNode.set("some", true)
  }
})

.toJson(options)

  • Represents a tree in the form of a json format
  • params:
    • options — object. Optional
      • empty_children — Type boolean. Allow empty children. Default true
      • key_children — Type string. Field name for children. Default children
  • return object
  • examples:
const json = tree.toJson()

Node

This is the node management class

Properties

  • content Content of the node
    • type object
  • children Children of the node
    • type array
  • length Number children of the node
    • type number

Methods

  • constructor(json)

    • params:
      • json — simple json object
    • examples:
import JsTreeList from "js-tree-list"
const rootContent = {
  id: 1,
  name: "Root"
}
let node = new JsTreeList.Node(rootContent)
  • .add(child) Adding a child to the node
  • return Node — created node
  • params:
    • child — type object/json
  • examples:
const rootContent = {
  id: 1,
  name: "Root"
}
let node = new JsTreeList.Node(rootContent)
const childNode = node.add({ id: 2, name: "Two node" })
  • .remove(criteria) Removing a child node according to the criterion
  • return — removed Node
  • params:
    • criteria — criteria function for removing nodes
  • examples:
const removedNodes = node.remove(itemNode => {
  return itemNode.get("id") === 3
})
  • .get(path) Access to node content by field name
  • return mixed
  • params:
    • path — key name for object in node. For example id or fullname, etc...
  • examples:
node.get("id") // 1
node.get("name") // "Some name"
  • .set(path, value) Setting a value or creating a new field in the contents of a node
  • return boolean
  • params:
    • path — String field name
    • value — mixed
  • examples:
node.set('id', 100)); // returned `true`. Node.content.id = 100
node.get('id'); // 100
  • .sort(compare) Sorting child nodes
  • return null
  • params:
    • compare — custom function for sorting
  • examples:
function compareById(vector) {
  return (a, b) => {
    const aid = Number(a.get("id"))
    const bid = Number(b.get("id"))
    if (aid > bid) {
      return vector ? 1 : -1
    } else if (aid < bid) {
      return vector ? -1 : 1
    } else {
      return 0
    }
  }
}
node.sort(compareById(false))
  • .traversal(criteria, callback) Bypassing child nodes according to the criterion and applying function to them
  • return null
  • params:
    • criteria — function criteria each nodes
    • callback — function fire when criteria is true for node
  • examples:
// for all nodes
node.traversal(null, currentNode => {
  const name = currentNode.get("name")
  currentNode.set("name", `${name}!`) // Last symbol "!"
})
// only for node.id == 3
node.traversal(
  currentNode => currentNode.get("id") === 3,
  currentNode => {
    const name = currentNode.get("name")
    currentNode.set("name", `${name}!`) // Last symbol "!"
  }
)

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

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

1
https://api.gitlife.ru/oschina-mirror/yi-ge-js-tree-list.git
git@api.gitlife.ru:oschina-mirror/yi-ge-js-tree-list.git
oschina-mirror
yi-ge-js-tree-list
yi-ge-js-tree-list
master