Giter Club home page Giter Club logo

iobroker.fullybrowser's Introduction

Logo

ioBroker.fullybrowser

=================

NPM

NPM version Downloads GitHub last commit GitHub issuesLicense


**Version:**

Number of Installations Beta Stable

fullyBrowser Adapter for ioBroker

This adapter manages your Fully Kiosk Browser (a Plus License is required). It provides you with a bunch of possibilites to control your tablet through ioBroker, like turning the display on/off, launch any tablet app, launch the screensaver etc. Also, it provides various information in states, like battery level of your tablet, etc. which you can use e.g. for Visualization. It can use MQTT or RestAPI connection for public the states.

A small excerpt just of the command options:

tree tree2

Documentation

Credits

Many thanks to @Acgua (https://github.com/Acgua) for ioBroker.fully-mqtt.

Changelog

3.0.12 (2024-03-05)

  • (arteck) set batteryLevel to 0 if tablet is offline is configurable

3.0.11 (2024-02-25)

  • (arteck) translate api-type

3.0.10 (2024-02-06)

  • (arteck) set batteryLevel to 0 when device is offline

3.0.9 (2023-12-07)

  • (arteck) corr error message

3.0.8 (2023-12-05)

  • (arteck) toForeground corr

3.0.7 (2023-11-20)

  • (arteck) check credentials

3.0.6 (2023-11-11)

  • (arteck) add mqttTimeout in settings

3.0.5 (2023-11-09)

  • (arteck) add setRAW DP, this allows you to send a fullbrowser command directly

3.0.4 (2023-11-06)

  • (arteck) set to zero corr

3.0.3 (2023-11-04)

  • (arteck) setStringSettings corr

3.0.2 (2023-11-02)

  • (arteck) add motionDetection
  • (arteck) for Rooted Devices add rebootDevice

3.0.0 (2023-11-02)

#----------------------------------------------------------------------

2.2.0 (2023-10-27)

  • (arteck) intervall corr

2.1.6 (2022-11-23)

  • (arteck) add name of device to admin
  • (arteck) corr status when login fail
  • (arteck) corr psw typo

2.1.2 (2022-04-05)

  • (arteck) encodeUri in psw

2.1.1 (2022-02-07)

  • (arteck) js-controller 4.x

2.1.0 (2022-02-07)

  • (arteck) js-controller 4

2.0.14 (2022-01-31)

  • (arteck) life tick error

... ... ...

1.0.1 (2019-06-20)

  • (arteck) encodeURL

License

The MIT License (MIT)

Copyright (c) 2014-2024 Arthur Rupp [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

iobroker.fullybrowser's People

Contributors

apollon77 avatar arteck avatar dependabot[bot] avatar foxriver76 avatar mcm1957 avatar meistertr avatar mic-m avatar xxbjxx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

iobroker.fullybrowser's Issues

Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:

https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/arteck/ioBroker.fullybrowser

  • [E301] Tests on Travis-ci.org are broken. Please fix.
  • [E605] No actual year found in copyright. Please add "Copyright (c) 2018-2021 Arthur Rupp [email protected]" at the end of README.md
  • [E701] No actual year found in LICENSE. Please add "Copyright (c) 2014-2021 Arthur Rupp [email protected]" at the start of LICENSE

Thanks,
your automatic adapter checker.

P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

loadURL Problem beim laden einer IoBroker View

Wenn ich in dem Datenpunkt loadURL eine IoBroker VIS URL manuell eingebe wird diese nicht geladen.

Das Problem ist das # Symbol.

http://ipadresse:8082/vis/index.html#Landing

Wird eine Adresse ohne # Symbol in der URL eingegeben, wird die Seite umgehend geladen.

Muss das issue leider nochmal aufmachen,
habe gerade genau, das angesprochene Problem.
Wie kann ich es Lösen?
Gruß

Originally posted by @BassT23 in #8 (comment)

EDIT:
Adapter per Git auf 1.0.3 Aktualisiert. -> Funktioniert jetzt

TTS: Qualität schlechter als direkt / Umlaute gehen nicht

Hi,
1.) Qualtät
Nutze ich die WEB-API direkt um einen Text sprachlich auszugeben ist die Qualität recht gut.
http://192.168.123.123:2323/?cmd=textToSpeech&text=%22Der%20externe%20Alarm%20wurde%20deaktiviert.%20Es%20gab%20einen%20verpassten%20Anruf.%22&locale=de_DE&password=strenggeheim&type=json

Verwende ich hingegen das iobroker Objekt
fullybrowser.0.192_168_123_123.Commands.textToSpeech
Und fülle es per copy/paste oder in JS ist der Beispieltext oben vor allem bei "...externe Alarm..."
nicht schön. Zu schnell/ungenau.

2.) Umlaute
Testweise habe ich den Parameter "&locale=de_DE" im WebAufruf entfernt => habe ich keinen Unterschied in der Qualität dazu festgestellt, als wenn ich ihn drinnen lasse. Ausgabe war gleich gut - macht nur bei Umlauten Schwierigkeiten.

=> Dieser Parameter sollte für die Umlaute mindestens also noch per Auswahl in den ioBroker Settings einstellbar sein und mitgegeben werden.

Gruß,

Fii

Set Screen Brightness

hey
is ist possible to make this object to a state? Now its just a Info, but i wanna change it .

Anfrage für Feature

Hallo,
wäre es möglich einen Datenpunkt zu schaffen, mit dem man die Seite vom Fully refreshen kann? In "Toolbars and Appearence" in den Einstellungen kann man eine Action Bar einstellen wo ein Refresh Button sichtbar wird. Wäre super wenn es den als Datenpunkt mit Tastendruck gebe ähnlich den anderen wie restart App.

Liebe Grüße

Fully adapter with JS 2.0.38

I am using fully adapter 1.0.1 with JS Controller 2.0.38 on win10.

Since I updated from 2.0.33 to 2.0.38 the fully adapter has got problems with syncing data from the browser on tablet.
No datapoints are synchronized and the fully alive is False most of the time. Sometimes null.

Feature Request "getAudioVolume"

Hallo,

ich würde es sehr begrüßen, wenn (weitere) get Befehle implementiert werden würden.
Speziell benötige ich die aktuelle Audio Volume, damit ich vor dem setzen der Audio Volume die bisherige Volume abfragen und speichern kann.
Laut Handbuch von Fully kann dies mit "void fully.getAudioVolume(int streamType) // ver. 1.27+" umgesetzt werden.

Weiterhin sehe ich "fully.getStringSetting(String key)" als sinnvoll an.

Vielen Dank im Voraus.
Daniel

Dropdown in popup view

Hallo,
ich habe das Problem, dass Dropdown-Listen im Popup (View) nicht nutzbar sind (lassen sich nicht öffnen und auswählen).
Ich habe so ziemlich alle verschiedenen Dropdown ausprobiert - im normalen Browser funktionieren sie jeweils, im FKB jedoch nicht...
der Switch der ebenfalls separat im popup noch da ist, funktioniert.

  • wieso fuktionieren die Dropdown nicht?

Warnings in ioBroker Log

ioBroker Admin 5.1.25

Node.js v14.17.6

NPM 6.14.15

State "fullybrowser.0.xxx_xxx_xxx_xx.Info.scopedStorage" has no existing object, this might lead to an error in future versions

State "fullybrowser.0.xxx_xxx_xxx_xx.Info.BSSID" has no existing object, this might lead to an error in future versions

updateDeviceERROR

Hallo,

ich habe derzeit drei "fullyBrowser Installationen (plus)" welche ich mit einer ioBroker Instanz steuere.

Eine Installation davon (Android 8 basierter Spiegel) is meistens offline, also im standby. Solange das der Fall ist, erzeugt das dann jede Minute eine Meldung:

fullybrowser.0 | 2021-03-08 16:16:35.204 | warn | (32274) updateDeviceERROR 192.168.178.29
fullybrowser.0 | 2021-03-08 16:15:34.676 | warn | (32274) updateDeviceERROR 192.168.178.29
fullybrowser.0 | 2021-03-08 16:14:34.167 | warn | (32274) updateDeviceERROR 192.168.178.29
fullybrowser.0 | 2021-03-08 16:13:33.784 | warn | (32274) updateDeviceERROR 192.168.178.29
fullybrowser.0 | 2021-03-08 16:12:33.023 | warn | (32274) updateDeviceERROR 192.168.178.29

Ein Tablet (ebenfalls Android 8), erzeugt keine Meldung wenn es im Ruhezustand ist. Hat jemand eine Idee ob mann die Meldung ggf. unterdrücken oder ob es an unterschiedlichen Konfigurationen liegen kann?

Danke !

Open App

For what is "startApplication"?
How can I use this?

If i use this for the Sonos App:
intent:#Intent;launchFlags=0x10000000;component=com.sonos.acr/.SonosLaunchActivity;end
Nothing happens.

In ioBroker Vis it works.

Lot of warnings in Logfiles

I am using IOBroker on a PI IV and installed a Fullybrowser in a Samsung A7 tablet which I intend to control. It works quite well but I get tons of warnings in the logfile as you can see below.

Fullybrowser

no client connection after update to 2.0.6

after the update from 2.0.4 to 2.0.6, a connection to the tablet is no longer possible. the data point "isFullyAlive" is false and "updateDeviceERROR" appears in the log file.
after a downgrade to 2.0.4 everything works again.

compact mode failing

Hi using fullybrowser adapter now for some time and I recently? got errors using compact mode:
Source:

host.ioBroker.compactgroup1

Cannot start fullybrowser.0 in compact mode. Fallback to normal start! : ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.fullybrowser/node_modules/follow-redirects/index.

there is a prceding error without source
ndefined

Is that a know issue (even maybe for some time) and do you need more info to fix this?

PS: just updated fullybrowser today to version 2.0.2. I think the error appears since then.

kind regards

Play notification sound

Is it possible to play a (notification) sound from a datapoint button? Similar to TextToSpeech.
Custom soundfiles or standard android notification sound would be nice.

Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:

https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/arteck/ioBroker.fullybrowser

  • [E201] Bluefox was not found in the collaborators on NPM!. Please execute in adapter directory: "npm owner add bluefox iobroker.fullybrowser"
  • [E301] Tests on Travis-ci.org are broken. Please fix.
  • [E802] No topics found in the repository. Please go to "https://github.com/arteck/ioBroker.fullybrowser" and press "Manage topics"
  • [E604] No "## License" found in README.md
  • [E701] No actual year found in LICENSE. Please add "Copyright (c) 2014-2019 arteck" at the start of LICENSE

I have also found warnings that may be fixed if possible.

  • [W113] Adapter should support compact mode

Thanks,
your automatic adapter checker.

P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

Please add your adapter to ioBroker.discovery

I am an automatic service from ioBroker that searches adapters and makes suggestions.

I noticed that your adapter is not integrated in the ioBroker.discovery. Using the Discovery adapter, ioBroker can automatically find devices or suggest services to the user for installation. If possible I would live to see your adapter added there.

Some adapters have already been added and you can use them as blueprints. See: https://github.com/ioBroker/ioBroker.discovery You need to fork this project and then create a PR for your adapter to be added.

Basically the plugins can do HTTP calls, UDP discovery, MDNS, UPNP and will iterate over all devices found by IP scan and check local serial ports. If you want you can also add new discovery methods but please try to do that with at least dependencies as possible.

Then create one file under lib/adapters for your adapter to implement the detection and proposal of an instance to the user.

On questions, the other developers will support in the forum or via GitHub issues too.

If no detection is possible, simply close this issue and I won't bother you again. ;-)

Thanks,
your automatic adapter checker.

P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:

https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/arteck/ioBroker.fullybrowser

  • [E201] Bluefox was not found in the collaborators on NPM!. Please execute in adapter directory: "npm owner add bluefox iobroker.fullybrowser"
  • [E301] Tests on Travis-ci.org are broken. Please fix.
  • [E701] No actual year found in LICENSE. Please add "Copyright (c) 2014-2020 Arthur Rupp [email protected]" at the start of LICENSE

I have also found warnings that may be fixed if possible.

  • [W113] Adapter should support compact mode
  • [E901] .gitignore not found

Thanks,
your automatic adapter checker.

P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

Update device error

Hallo,

ich habe oft einen Update-Device Error in meinem Log, an was könnte das liegen?

fullybrowser.0 2021-09-09 13:54:05.817 warn updateDeviceERROR 192.168.178.45
fullybrowser.0 2021-09-09 13:53:05.806 warn updateDeviceERROR 192.168.178.45
fullybrowser.0 2021-09-09 13:52:05.698 warn updateDeviceERROR 192.168.178.45
fullybrowser.0 2021-09-09 13:51:05.486 warn updateDeviceERROR 192.168.178.45

js-controller 3.2.7

State "fullybrowser.0.info.connection" has no existing object, this might lead to an error in future versions


System data:

Platform: linux
Distribution: Debian GNU/Linux
Architecture: x64
Model: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
RAM: 4 GB
Node.js: v12.20.1
NPM: v6.14.10
JS-Controller (1): 3.2.7
Admin: 4.2.1
fullyBrowser: 2.0.2

created by ioBroker.info

Fehlermeldung beim Start

Ich habe meinen Server neu aufgesetzt. Er läuft nun mit Ubuntu 18.04 LTS, Nodejs V8.15.0

Nachdem ich von Github den Adapter geladen habe kam im Log diese Fehlermeldung:

fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
-- | -- | -- | --
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:244:12)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at Socket.onack (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:319:9)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:787:25)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at createInstancesObjects (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:748:13)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:788:29
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at initAdapter (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4989:62)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at Object.ready (/opt/iobroker/node_modules/iobroker.fullybrowser/main.js:31:9)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | at main (/opt/iobroker/node_modules/iobroker.fullybrowser/main.js:435:33)
fullybrowser.0 | 2018-12-29 14:40:19.057 | error | TypeError: Cannot read property 'length' of undefined
fullybrowser.0 | 2018-12-29 14:40:19.056 | error | uncaught exception: Cannot read property 'length' of undefined

Der Adapter an sich scheint zu laufen, es kommen Daten von FullyBwowser, alle Datenpunkte sind angelegt und werden aktualisiert.

Compatibility check and testing for Node.js 14 and 16

Dear Adapter developer,

Node.js 14 is now available for a year and Node.js 16 was release just some days ago and will become LTS by October 2021. We plan to update the ioBroker Node.js recommendation (currently 12.x) to 14.x later this year.

Please check your adapter with Node.js 14 especially, and ideally also directly with Node.js 16

Please add both versions to the adapter testing which is executed on commits.

If your adapter requires a certain minimum version of Node.js please set the 'engine' setting in package.json accordingly! Please also do this if the adapter is not able to work in certain Node.js versions, so that ioBroker can prevent users from installing te adapter if not compatible!

On questions please talk to us at ioBroker/ioBroker.js-controller#1138

Please close the issue after you checked it.

Thank you very much for your support!

Update stable version in repo to 1.0.3

Think about update stable version to 1.0.3

Version: stable=1.0.0 (287 days old) => latest=1.0.3 (17 days old)
Installs: stable=519 (47.7%), latest=377 (34.65%), total=1088
Click to edit

Generateb state problem in log

Hallo;
Ich habe seit einiger Zeit diese Log Einträge:

fullybrowser.0 2021-05-12 20:14:32.327 warn (16540) updateDeviceERROR 192.168.1.50
fullybrowser.0 2021-05-12 20:14:10.316 warn (16540) updateDeviceERROR 192.168.1.50
fullybrowser.0 2021-05-12 20:14:09.261 warn (16540) Generate State problem 192_168_1_50 {"message":"timeout of 2000ms exceeded","name":"Error","stack":"Error: timeout of 2000ms exceeded\n at createError (/opt/iobroker/node_modules/axios

Was hat das mit dem "generate state problem" auf sich?

Please check ioBroker.fullybrowser with js-controller 2.0

Hi,

the new js-controller 2.0 will come into latest repository in the next days and we want to make sure that all adapters are working well. We already did a 2 weeks Beta test and so some adapter were aleady checked and some needed slight adjustments.

You can find more information in ioBroker/ioBroker.js-controller#482 and in the ioBroker Forum. If you have more technical questions please write in the referenced issue or in the Developer thread please. General questions are best in the genral thread.

Please update your systems to js-controller 2.0 and check your adapter.

Please close this issue once you have checked your adapter or received successfull reports from users.

Thank you very much for your support. Please contact us in the other Threads or Forum on any question.

Compatibility check to js-controller 3.3 and Admin5 React UI

Dear Adapter developer,

with js-controller 3.2 and js-controller 3.3 some additional checks were added to make sure that created objects match to the specifications and also written state values match to the object definition.

If something is not correct this is logged as 'warning' or 'info' log.

Please take the time to verify your adapter by ideally starting with a fresh instance and do some actions and verify the log. If you see a warn log there from these checks please adjust the adapter and fix the relevant cases.

For questions please refer to ioBroker/ioBroker.js-controller#1301

Additionally we are preparing Admin 5 which will have a completely rewritten UI. Please install Admin 5, activate that new UI and verify that the configuration of you adapter works as expected also there.

More informations on Admin 5 can be found in Forum https://forum.iobroker.net/topic/44282/test-adapter-admin-5-0-x-alpha-der-neuen-ui

Please close the issue after you checked it.

Thank you very much for your support!

Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:

https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/arteck/ioBroker.fullybrowser

  • [E130] Too many news found in io-package.json. Mast be less than 21. Please remove old news.
  • [E701] No actual year found in LICENSE. Please add "Copyright (c) 2014-2022 Arthur Rupp [email protected]" at the start of LICENSE

Thanks,
your automatic adapter checker.

P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

js-controller 3.3

(19387) State value to set for "fullybrowser.0.192_168_0_41.Info.sensorInfo" has to be stringified but received type "object"

Adapter v4.0.7

4807) updateDeviceERROR

Since update to 2.06 I get permanent message 4807) updateDeviceERROR 192.168.x.xx
When roll previous version everything is OK

States unter "info

Hi.

Erstmal danke für den coolen Adapter.
Leider stehen bei mir unter "info" nur 2 states: error
Please login

Login ist aber korrekt, da ich den auch im Browser korrekt verwenden kann und mir da alle States angezeigt werden.
Woran kann das liegen?

Vielen Dank vorab

keine funktion von "XXX.Commands.textToSpeech"

Hallo
wenn ich im Datenpunkt fullybrowser.0.xxx.xxx.xxx.xxx.Commands.textToSpeech einen Text eingebe, kommt keine Sprachausgabe am Tablet auf dem der Fullykioskbrowser läuft, mach ich da etwas verkehrt???

Enhancement: cmd screenBrightness

Hi,

I want to control my tablets screen brightness over fully. Is it possible, to add the cmd key "screenBrightness" to your Adapter?

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.