What if you want to integrate text translations to Datashare’s interface? Or make it display tweets scraped with Twint? Ask no more: there is plugins for that!
datashare.config.set('hooksDebug', true).mkdir ~/Datashare\ Plugins
datashare --pluginsDir=~/Datashare\ Plugins$ datashare -m CLI --pluginList ".*"
2020-07-24 10:04:59,767 [main] INFO Main - Running datashare
plugin datashare-plugin-site-alert
Site Alert
v1.2.0
https://github.com/ICIJ/datashare-plugin-site-alert
A plugin to display an alert banner on the Datashare demo instance.
...$ datashare -m CLI --pluginInstall datashare-plugin-site-alert --pluginsDir "~/Datashare Plugins"
2020-07-24 10:15:46,732 [main] INFO Main - Running datashare
2020-07-24 10:15:50,202 [main] INFO PluginService - downloading from url https://github.com/ICIJ/datashare-plugin-site-alert/archive/v1.2.0.tar.gz
2020-07-24 10:15:50,503 [main] INFO PluginService - installing plugin from file /tmp/tmp7747128158158548092.gz into /home/dev/Datashare Plugins$ datashare -m CLI --pluginDelete datashare-plugin-site-alert --pluginsDir "~/Datashare Plugins"
2020-07-24 10:20:43,431 [main] INFO Main - Running datashare
2020-07-24 10:20:43,640 [main] INFO PluginService - removing plugin base directory /home/dev/Datashare Plugins/datashare-plugin-site-alert-1.2.0* A folder with a package.json file containing a "main" field.
* A folder with an index.js file in it.mkdir ~/Datashare\ Plugins/hello-world
echo "console.log('Welcome to %s', datashare.config.get('app.name'))" > ~/Datashare\ Plugins/hello-world/index.js$ tar tvzf ~/src/my-plugin/dist/my-plugin.tgz
drwxr-xr-x dev/dev 0 2020-07-22 11:51 my-plugin/
-rw-r--r-- dev/dev 31 2020-07-21 14:07 my-plugin/main.js
-rw-r--r-- dev/dev 19 2020-07-21 14:07 my-plugin/package.json$ datashare -m CLI --pluginInstall ~/src/my-plugin/dist/my-plugin.tgz --pluginsDir "~/Datashare Plugins"
2020-07-27 10:02:32,381 [main] INFO Main - Running datashare
2020-07-27 10:02:32,596 [main] INFO PluginService - installing plugin from file ~/src/my-plugin/dist/my-plugin.tgz into ~/Datashare Plugins$ datashare -m CLI --pluginDelete my-plugin --pluginsDir "~/Datashare Plugins"
2020-07-27 10:02:32,381 [main] INFO Main - Running datashare
2020-07-27 10:02:32,596 [main] INFO PluginService - installing plugin from file ~/src/my-plugin/dist/my-plugin.tgz into ~/Datashare Plugins// `datashare` is a global variable
datashare.registerHook({ target: 'app-sidebar.menu:before', definition: 'This is a message written with a plugin' })// It's usualy safer to wait for the app to be ready
document.addEventListener('datashare:ready', ({ detail }) => {
// Alert is a Vue component meaning it can have computed properties, methods, etc...
const Alert = {
computed: {
weekday () {
const today = new Date()
return today.toLocaleDateString('en-US', { weekday: 'long' })
}
},
template: `<div class="text-center bg-info p-2 width-100">
It's {{ weekday }}, have a lovely day!
</div>`
}
// This is the most important part of this snippet:
// we register the component on the a given `target`
// using the core method `registerHook`.
detail.core.registerHook({ target: 'landing.form:before', definition: Alert })
})