npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fusionexport-cli

v1.0.0

Published

CLI for FusionExport. Enables exporting from FusionExport directly from command line.

Downloads

21

Readme

FusionExport

FusionExport is FusionCharts' all purpose Export product which works across all OS. It is primarily a CLI based system for easy exporting of charts, dashboards in multiple image and data formats (PNG, JPEG, SVG, PDF, CSV, XLS and HTML). FusionExport comes with language SDKs (NodeJS, Java, C#, PHP, Python and Golang) for easy integration and support across technologies.

Below are the major features of the product:

  1. Export charts as PNG, JPEG, SVG, PDF, CSV, XLS and HTML files.
  2. Export charts directly from backend without a browser.
  3. Multiple charts can be exported simultaneously with minimal configuration.
  4. Sharing, scheduling etc. can be done.
  5. Export dashboards using user defined template.
  6. Supports statistics logging of all chart exports in a private setup/central remote server.
  7. Save files to FTP or S3.
  8. Export from remote server.
  9. Easy configuration management.

Prerequisites

You need to have node >= 8.0.0 and npm >= 5.0.0 installed in your system to install the CLI.

Installation

FusionExport Installation

Download FusionExport installer from here.

Primary functionalities those can be performed on the screen are:

  1. Service Start
  2. Service Stop
  3. Service Restart

Log various operation and view in the log panel. View additional information like host, port and PID of the service.

Save and clear logs as per requirement.

FusionExport CLI Installation

To install the CLI in your system run the following command:

npm i -g fusionexport-cli

Usage

After installing, you should have access to fusionexport command. fe is an alias to fusionexport

fusionexport <options>

Or,

fe <options>

Command Line Arguments

Option | Alias | Default |Type | Description -------|-------|---------|-----|------------ --config | -e | fusioncharts_export.json | file, json | A JSON file that contains any or all of the CLI options. --chart-config | -c | fusioncharts_chart.json | file, json | A JSON or JS file that contains an array of json objects or just an object, which can be passed to the chart constructor for rendering the chart. Note: If it's a JS file, the object should be exported. It can also take multiple files, directory path or glob pattern in a space separated format. For files containing single chart config, it will create a single exported file. For files containing multiple chart config, it will create a directory named after the respective filename that will contain the individual exported file. --chart-config-options | -O | {} | json | JSON object that provides an option to override the chart configuration that has been passed through the chart-config option. In case of multiple charts, all the charts will be affected. --input-file | -i | chart.svg | file | SVG file that needs to be converted. It is ignored if chart-config is already provided. The path will be taken into account if it is provided. --output-file | -o | | string | Output files that need to be generated. A template can also be given that will be resolved for multiple files. The zipped output will always be named fusioncharts_export.zip. If an extension is provided with the filename the output type will be inferred from that. It can also take a directory path; in that case, it should end with a path separator respective to the os. --output-file-definition | -F | | file | JS or JSON file that contains methods and arrays to be used for naming the output files. --output-as-zip | -z | | bool | Exports the output files either as individual files or as a zip. --type | -t | png | ext | Specifies the output file type. This will override any extension provided in the output-file option. --quality | -q | better | value | Quality of the exported files - good, better, best --width | -W | 600 | value | Specifies the chart width. --height | -H | 400 | value | Specifies the chart height. --callbacks | -b | fusioncharts_export_callbacks.js | file | JS file that provides an option for binding custom methods to events fired by the FusionCharts library. --template | -T | template.html | file | JS file that provides an option for binding custom methods to events fired by the FusionCharts library. --resources | -r | resources.json | file, json | JSON file that contains all the resources that will be injected into the template while rendering charts. --async-capture | -a | false | bool | Enable async-capture. --async-capture-timeout | -m | 6000 | integer | Maximum time that system will wait for async-capture event to trigger. --dashboard-logo | -G | | file | Logo path (only for dashboard export) --dashboard-heading | -D | | string | Heading of the exported dashboard. --dashboard-subheading | -B | | string | Subheading of the exported dashboard. --log-dest | -d | | path | Enables logging and sets the log destination. --log-file | -f | fusioncharts_export.log | file | Log file. --log-level | -l | 2 | level | Log level. 0: error, 1: warn, 2: info, 3: verbose, 4: debug, 5: silly --host | -S | 0.0.0.0 | string | Host of fusionexport service --port | -P | 1337 | integer | Port of fusionexport service --ftp-config | -p | | file | Ftp config for saving output files --s3-config | -s | | file | Amazon S3 config for saving output files

API Reference

You can find the full reference here.

Examples

Export a simple column chart using a single configuration in PNG format.

column_chart_config.json contains a sample fusioncharts column chart config column_chart_config.json

[
   {
      "type": "column2d",
      "renderAt": "chart-container",
      "width": "550",
      "height": "350",
      "dataFormat": "json",
      "dataSource": {
         "chart": {
            "caption": "Number of visitors last week",
            "subCaption": "Bakersfield Central vs Los Angeles Topanga"
         },
         "data": [
            {
               "label": "Mon",
               "value": "15123"
            },
            {
               "label": "Tue",
               "value": "14233"
            },
            {
               "label": "Wed",
               "value": "25507"
            }
         ]
      }
   }
]
$ fe -c column_chart_config.json

This will export the column chart in PNG format in the current working directory.

Export multiple charts in PDF format.

multiple_charts_config.json

[
   {
      "type": "pie2d",
      "renderAt": "pie_chart",
      "width": "500",
      "height": "400",
      "dataFormat": "json",
      "dataSource": {
         "chart": {
            "caption": "Number of visitors last week",
            "subCaption": "Bakersfield Central vs Los Angeles Topanga"
         },
         "categories": [
            {
               "category": [
                  {
                     "label": "Mon"
                  },
                  {
                     "label": "Tue"
                  },
                  {
                     "label": "Wed"
                  }
               ]
            }
         ],
         "dataset": [
            {
               "seriesname": "Los Angeles Topanga",
               "data": [
                  {
                     "value": "13400"
                  },
                  {
                     "value": "12800"
                  },
                  {
                     "value": "22800"
                  }
               ]
            }
         ]
      }
   },
   {
      "type": "mscolumn2d",
      "renderAt": "column_chart",
      "width": "450",
      "height": "420",
      "dataFormat": "json",
      "dataSource": {
         "chart": {
            "caption": "Split of Sales by Product Category",
            "subCaption": "In top 5 stores last month",
            "yAxisname": "Sales (In USD)"
         },
         "categories": [
            {
               "category": [
                  {
                     "label": "Bakersfield Central"
                  },
                  {
                     "label": "Garden Groove harbour"
                  }
               ]
            }
         ],
         "dataset": [
            {
               "seriesname": "Food Products",
               "data": [
                  {
                     "value": "17000"
                  },
                  {
                     "value": "19500"
                  }
               ]
            },
            {
               "seriesname": "Non-Food Products",
               "data": [
                  {
                     "value": "25400"
                  },
                  {
                     "value": "29800"
                  }
               ]
            }
         ]
      }
   }
]
$ fe -c multiple_charts_config.json -t pdf -o ./exported-charts/

Export entire Dashboard using CLI in PDF format.

To export dashboards using CLI, provide a template file with the layout and supporting static resources (JS, CSS, images, fonts).

The template must contain placeholder elements (preferably divs) for the charts. The chart configuration array must contain the charts with the renderAt attributes that matches the id of the elements stated above.

The resources option is optional and only needed when remote-export-enabled is true. Most resources that are stated in the template in link, script or image tags are found intelligently. If any additional fonts, links present in css or dynamic links in JS is present one has to specify them in resources option.

The format of the resources option is as follows:

{
    "images": [
        "filename.jpg",
        "img/cat.png"
    ],
    "stylesheets": [
        "",
        ""
    ],
    "javascripts": [
        "",
        ""
    ],
    "fonts": [
        "",
        ""
    ]
}

template.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Chart</title>
  </head>
  <body>
    <div id="pie_chart"></div>
    <div id="column_chart"></div>
  </body>
</html>

multiple_charts_config.json

[
   {
      "type": "pie2d",
      "renderAt": "pie_chart",
      "width": "500",
      "height": "400",
      "dataFormat": "json",
      "dataSource": {
         "chart": {
            "caption": "Number of visitors last week",
            "subCaption": "Bakersfield Central vs Los Angeles Topanga"
         },
         "categories": [
            {
               "category": [
                  {
                     "label": "Mon"
                  },
                  {
                     "label": "Tue"
                  },
                  {
                     "label": "Wed"
                  }
               ]
            }
         ],
         "dataset": [
            {
               "seriesname": "Los Angeles Topanga",
               "data": [
                  {
                     "value": "13400"
                  },
                  {
                     "value": "12800"
                  },
                  {
                     "value": "22800"
                  }
               ]
            }
         ]
      }
   },
   {
      "type": "mscolumn2d",
      "renderAt": "column_chart",
      "width": "450",
      "height": "420",
      "dataFormat": "json",
      "dataSource": {
         "chart": {
            "caption": "Split of Sales by Product Category",
            "subCaption": "In top 5 stores last month",
            "yAxisname": "Sales (In USD)"
         },
         "categories": [
            {
               "category": [
                  {
                     "label": "Bakersfield Central"
                  },
                  {
                     "label": "Garden Groove harbour"
                  }
               ]
            }
         ],
         "dataset": [
            {
               "seriesname": "Food Products",
               "data": [
                  {
                     "value": "17000"
                  },
                  {
                     "value": "19500"
                  }
               ]
            },
            {
               "seriesname": "Non-Food Products",
               "data": [
                  {
                     "value": "25400"
                  },
                  {
                     "value": "29800"
                  }
               ]
            }
         ]
      }
   }
]
$ fe -c multiple_charts_config.json -T template.html -t PDF -o ./exported-dashboards/

Output File Naming

The output-file option can take a template which is then resolved using ejs, so that the output filenames can be generated exactly as you wanted it to be.

There are 2 inbuilt functions and you can also provide custom functions in another JS file and pass it in the option output-file-definition

The 2 inbuilt functions are

  1. number(start, end, step): It increments a number from start to end with step as provided. end and step are optional.

  2. timestamp(): It provides the current time is millisecond.

You can provide custom functions or arrays in definition file. Example:

module.exports = {
  caption: (chartConfig, index) => {
    const caption = chartConfig.dataSource.chart.caption;
    return `${index}__${caption}`;
  },
  art: ['S1', 'S2', 'S3', 'S4'],
};

Functions will get 3 arguments, current chart config, index and array of all the chart configs.

Arrays will the iterated one by one and the last one will be repeated if more output files are generated.

Example filenames:

path/to/export--<%= number(1, 100) %>
# path/to/export--1.png

path/to/export--<%= number(2) %>__<%= caption() %>-<%= timestamp() %>
# path/to/export--2__Some Caption-23423438788.png

Remote Export file saving in FTP & S3

Output files can be saved in FTP and AWS S3 directly.

First you need to provide the credentials in the configuration file. FTP configs are in config/ftp.json and S3 configs are in config/s3.json.

In the output-file options, to upload through FTP specify the filename as

ftp:path/to/export--<%= number(1) %>

to upload files to S3 specify the filename as

s3:export--<%= number(1) %>

Testing

Some preconfigured test configs are present in the uat folder. You can pass those export configuration files to the -e or --config options to run a quick test, or take a look inside it to get an idea how options can be passed in different situations.

Some example commands for running a quick test are

fe -e uat/fusioncharts_export.json
fe -e uat/fusioncharts_export_svg.json
fe -e uat/fusioncharts_export_tmpl.json
fe -e uat/fusioncharts_export_20charts.json
fe -e uat/fusioncharts_export_50charts.json