1.0.0-beta.4 • Published 5 years ago

@hisptz/function-analytics v1.0.0-beta.4

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

Fn

Build Status Greenkeeper badge Maintainability Test Coverage

Function Analytics Library

Library to aid in the development of functions. Built with best practices in mind from the experience on function maintenance. This is to make it easy for developers to concentrate on the business logic of their functions while also considering the best way to perform operations with out of the box performance execution strategy.

Features

  • Fetching data for analytics.
  • Fetching DHIS Identifiable objects.
  • Perform execution of functions with optimization

Getting started

Browser

<script src="https://raw.githack.com/hisptz/function-analytics/master/lib/function-analytics.min.js"></script>

Node

var Fn = require('function-analytics').Fn;

Initializing

Fn.init({
  baseUrl: 'api_url_to_dhis_server',
  username: 'username', //Optional if in a DHIS app
  pasword: 'password' //Optional if in a DHIS app
});

Fetch analytics

You can fetch analytic with a few lines of code

new Fn.Analytics()
  .setData('dx')
  .setOrgUnit('ou')
  .setPeriod('pe')
  .postProcess(function(analyticsResult) {
    // This adds post processing after fetching is done
    return analyticsResult;
  })
  .get()
  .progress(function(value) {
    // Do something with the progress value
  })
  .then(function(analyticsResult) {
    //The result after fetching and processing with the post process callback
  });

Dependency

You can put together dependencies if calls depend on one another

var orgunit = new Fn.IdentifiableObject('organisationUnits'); // Example of an organisation fetcher

orgunit.where('id', 'in', ['Rp268JB6Ne4', 'Rp268JB6Ne2']);
//Declare business process to run after orgunit results
var bussinessAfterOrgunitProcess = (orgUnitResult, analytics) => {
    // Adds dependency
    let ous = orgUnitResult.organisationUnits
      .map(organisationUnit => {
        return organisationUnit.id;
      })
      .join(';');

    analytics.setPeriod('2016').setOrgUnit(ous);
  }
var analytics = new Fn.Analytics();

analytics.preProcess(
  new Fn.Dependency(orgunit, bussinessAfterOrgunitProcess)
);
analytics.get().then(results => {});

Multiple Processing

You can invoke multiple processes

var orgunit = new Fn.IdentifiableObject('organisationUnits');

orgunit.where('id', 'in', ['Rp268JB6Ne4', 'Rp268JB6Ne2']);

var analytics = new Fn.Analytics();

analytics.setPeriod('2016').setOrgUnit('Rp268JB6Ne4;Rp268JB6Ne2');

var multiProcesses = Fn.all([orgunit, analytics]);
multiProcesses.postProcess(res => {
  //res[0] is from orgunit
  //res[1] is from analytics
  return [res[1], res[0]];
});
multiProcesses.get().then(results => {});

For detailed documentation please visit our documentation.

1.0.0-beta.4

5 years ago

1.0.0-beta.3

5 years ago

1.0.0-beta.2

5 years ago

1.0.0-beta.1

5 years ago