csv-report
Converts time tracking data from CSV to PDF.
Installing
$ npm install csv-report -g
Running
There are two ways to use csv-report: through the command line interface, or by requiring the csv-report module in your own code.
Running via CLI
$ csv-report -f /path/to/csvFile.csv -o /path/to/pdfFile.pdf [options]
Check $ csv-report -h
to see all available options.
Running via Node
const csvReport = ; // set optionsconst options = file: '/path/to/my/csvFile.csv' out: '/path/to/resulting/pdfFile.pdf'; // renderconst report = options ;
Methods
report.getProjects() => Promise
Returns a list of project names that have data within the provided timeframe.
report.getEntries(project) => Promise
Returns a list of task entries related to a specific project
project
(string): Provide project name to get a projects tasks, or leave empty to get all.
report.render(includeProjects) => Promise
Starts the rendering process.
includeProjects
(array): Specify a list of project names that you want to include in the report. Default: Include all
Options
Call the constructor with these options
:
options.file
Path to input CSV file
- String
- required
options.out
Path to output PDF file (can be path to folder or .pdf file)
- String
- Default:
./report-<last-month>-<year>.pdf
options.mappings
Map the corresponding fields to CSV columns
- Object
- Default:
date: 'Date' project: 'Project' task: 'Task' duration: 'Duration' start: 'Start' end: 'End' custom: comment: 'Comment'
The default mapping matches the CSV export of TimeTracker 1.3.
options.delim
Delimeter used in the input CSV file
- String
- Default:
;
options.dateFormat
If you are using the date
column, you can specify format(s) that will be used for parsing the dates in the CSV file
- String | Array
- Default: `['MM-DD-YYYY', 'YYYY-MM-DD']``
options.startFormat
If you are using the start
column, you can specify format(s) that will be used for parsing the dateTimes in the CSV file
- String | Array
- Default:
['YYYY-MM-DD HH:mm:ss']
options.endFormat
If you are using the end
column, you can specify format(s) that will be used for parsing the dateTimes in the CSV file
- String | Array
- Default:
['YYYY-MM-DD HH:mm:ss']
options.start
Start date of timeframe
- String, format:
YYYY-MM-DD
- Default: First day of previous month
options.end
End date of timeframe
- String, format:
YYYY-MM-DD
- Default: Last day of previous month
options.round
Minutes to round up to. e.g. 21m -> 30m. Applied per day.
- Number
- Default:
15
options.template
Path to Handlebars template
- String
- Default:
./lib/template.html
options.paperSize
Define details for the papersize of output PDF. See PhantomJS wiki for details
- Object
- Default:
{ format: 'A4', orientation: 'landscape', border: '1.5cm' }
options.lang
Language. Currently used for output formatting of dates.
- String
- Default:
en
Events
report.on('log', logMsg => {})
License
MIT