navigation_tree alternatives and similar packages
Based on the "Algorithms and Data structures" category.
Alternatively, view navigation_tree alternatives based on common mentions on social networks and blogs.
-
exconstructor
An Elixir library for generating struct constructors that handle external data with ease. -
aja
Extension of the Elixir standard library focused on data stuctures, data manipulation and performance -
remodel
:necktie: An Elixir presenter package used to transform map structures. "ActiveModel::Serializer for Elixir" -
MapDiff
Calculates the difference between two (nested) maps, and returns a map representing the patch of changes. -
the_fuzz
String metrics and phonetic algorithms for Elixir (e.g. Dice/Sorensen, Hamming, Jaccard, Jaro, Jaro-Winkler, Levenshtein, Metaphone, N-Gram, NYSIIS, Overlap, Ratcliff/Obershelp, Refined NYSIIS, Refined Soundex, Soundex, Weighted Levenshtein) -
exmatrix
Elixir library implementing a parallel matrix multiplication algorithm and other utilities for working with matrices. Used for benchmarking computationally intensive concurrent code. -
bitmap
Bitmap implementation in Elixir using binaries and integers. Fast space efficient data structure for lookups -
Closure Table
Closure Table for Elixir - a simple solution for storing and manipulating complex hierarchies.
WorkOS - The modern identity platform for B2B SaaS
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of navigation_tree or a related project?
README
NavigationTree.Agent
An agent represing a navigation tree. The agent holds transformed configuration state.
Provides convenience wrappers to generate Twitter/bootstrap-freindly userrole-aware HTML out of this state through NavigationTree.Helper and NavigationTree.Bootstrap.
Navigation tree nodes are to be configured as NavigationTree.Node structs.
Terminology
node: A configuration struct looking like this:
%NavigationTree.Node{
name: string, # the node's name, like "About Us"
url: nil or string, # will be set on startup, but may be overridden
controller: nil or string, # would be set to about-us, but may be overridden
children:, nil or list of child nodes
roles: nil or list of strings # role names a user must have to see this navigation item
}
path: A list of node names, e.g. ["Home", "Admin"]
url: Every node gets a url on start_link setup constructed out of its ancestors' url concatenated with "/" whereas is either a safe_string version of the node's name or the specified controller namde in this node's config
Basic usage
- create a config module or just use NavigationTree.Example
- Startup Agent possibly in your application setup
- create you HTML generator or use the shipped NavigationTree.Bootstrap module
- enjoy!
# startup
NavigationTree.Agent.start_link NavigationTree.Example.config
# getters
NavigationTree.Agent.get.tree
NavigationTree.Agent.get.paths
NavigationTree.Agent.get.root_node (initoal config)
# methods
NavigationTree.Agent.node_of ["Home","Admin"]
# same as
NavigationTree.Agent.node_of "/admin"
# the inverse of node_of is path_of
NavigationTree.Agent.path_of "/admin" # returns ["Home","Admin"]
# parent node
NavigationTree.Agent.parent of ["Home","Admin", "Users"]
# returns next/previous node after "Users" in "Amind"
NavigationTree.Agent.next_sibling ["Home","Admin", "Users"]
NavigationTree.Agent.previous_sibling ["Home","Admin", "Users"]
# HTML
NavigationTree.Agent.as_html [], :bootstrap
# returns HTML for unauthenticated user
NavigationTree.Agent.as_html ["admin", "customer"], :bootstrap
# returns HTML for user with admin and customer role
# or your tree_to_html implementation:
MyApp.NavigationTree.Sidenav.tree_to_html NavigationTree.Agent.get.tree
Documentation
Basics
Add this project both to your dependecies and to your app list (including configuration). [..]
LICENSE
M.I.T.
*Note that all licence references and agreements mentioned in the navigation_tree README section above
are relevant to that project's source code only.