based and expanded upon Labelmaker by Jesse Gibson aka PsychoLama
Organize your data by tags
guntagger is made for gunDB
If you need to organize your data with tags/labels this might be usefull. guntagger enables you to tag and untag nodes to custom tags/labels
Note: you cannot tag primitives. For that, use
.key
.
Node.js
npm install guntagger
to install it, then you can require it from your app:
var guntagger = require('./lib/guntagger')
guntagger works with gun version 0.3
, and makes use of the chaining system provided by Gun
var Gun = require('gun')
guntagger(Gun)
// You now have tag support!
Browser
For the browser, it's much simpler, since your version of gun is exported as a global. Just include it as a script tag, and labelmaker takes care of the rest.
<script src="node_modules/guntagger/guntagger.min.js"></script>
<!-- all done! -->
or install only the browser version with Bower
bower install guntagger
and then
<script src="bower_components/guntagger/guntagger.min.js"></script>
I like Polymer and so guntagger also comes as a polymer element. You do need the polymer element for gun also ....have to publish that first...dangit
Three methods are exposed for your gun instances:
.tag
.untag
.tagged
You can pass .tag
multiple names to index a node under. When called, it will try to read out your current context, index it under each tag, and then place each tag under a master list of every tag ever used.
@tag can be a list ('one','two','three',...)
an Array (['one','two','three'])
or a single String ('one')
gun.put({
name: 'Bob',
profession: 'developer'
}).tag(
'members',
'javascript developers',
'gunDB developers',
'examples'
)
You can pass .untag
multiple names to untag a node. When called, it will try to read out your current context, and untag each tag.
@untag can be a list ('one','two','three',...)
an Array (['one','two','three'])
or a single String ('one')
gun.get(<key>).untag(
'members',
'javascript developers')
When no arguments are provided you get the full tag list
gun.tagged().val(cb)
Provide a tagname and a callback to get all valid members of that tag. The callback will also return all tags for that tagmember
gun.tagged('gunDb').val(function(tagmember,tags){
console.log(tagmember,tags)
})
@showUntagged Boolean returns also the members who where tagged to this tag before
gun.tagged('gunDb').val(function(tagmember,tags){
console.log(tagmember,tags)
},true)
Thanks to Mark Nadal and Jesse Gibson for helping out.
Contributions are welcome!