Skip to content

Commit

Permalink
chore!: Finalise es6 module migration
Browse files Browse the repository at this point in the history
BREAKING CHANGE: No more default export
You need to import the class using `const { NetCDFReader } = require("netcdfjs")`
  • Loading branch information
lpatiny committed Sep 7, 2021
1 parent 0d1b75b commit 3667a0b
Show file tree
Hide file tree
Showing 20 changed files with 365 additions and 530 deletions.
3 changes: 3 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
6 changes: 3 additions & 3 deletions .eslintrc.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
extends: 'eslint-config-cheminfo'
env:
jest: true
extends: cheminfo
parserOptions:
sourceType: module
6 changes: 0 additions & 6 deletions .travis.yml

This file was deleted.

132 changes: 5 additions & 127 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,137 +15,17 @@ Read and explore NetCDF v3 files.

For further information about the grammar you should go to [this link](https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications.html).

### Example I: NodeJS
### Example

```js
const fs = require('fs');
const NetCDFReader = require('netcdfjs');
const { readFileSync } = require("fs");
const { NetCDFReader } = require("netcdfjs");

// http://www.unidata.ucar.edu/software/netcdf/examples/files.html
const data = fs.readFileSync('madis-sao.nc');
const data = readFileSync("madis-sao.nc");

var reader = new NetCDFReader(data); // read the header
reader.getDataVariable('wmoId'); // go to offset and read it
```

### Example II: Load from URL (does not require node)

```js
// First load the netcdfjs library as normal : <script src='./dist/netcdfjs.js'></script>
// You could use the oficial CDN: <script src='http://www.lactame.com/lib/netcdfjs/0.3.0/netcdfjs.min.js'></script>

var urlpath =
'http://www.unidata.ucar.edu/software/netcdf/examples/madis-sao.nc';
var reader;

var oReq = new XMLHttpRequest();
oReq.open('GET', urlpath, true);
oReq.responseType = 'blob';

oReq.onload = function(oEvent) {
var blob = oReq.response;
reader_url = new FileReader();

reader_url.onload = function(e) {
reader = new netcdfjs(this.result);
};

reader_url.readAsArrayBuffer(blob);
};
oReq.send(); //start process

reader.getDataVariable('wmoId'); // go to offset and read it
```

### Example III: Client side file upload

This example creates a file input element and allows the user to select a file from their personal machine.

```js
var reader;
var progress = document.querySelector('.percent');
function abortRead() {
reader.abort();
}

function handleFileSelect(evt) {
// Reset progress indicator on new file selection.
progress.style.width = '0%';
progress.textContent = '0%';

reader = new FileReader();
reader.onerror = errorHandler;
reader.onprogress = updateProgress;
reader.onabort = function(e) {
alert('File read cancelled');
};
reader.onloadstart = function(e) {
document.getElementById('progress_bar').className = 'loading';
};
reader.onload = function(e) {
// Ensure that the progress bar displays 100% at the end.
progress.style.width = '100%';
progress.textContent = '100%';
setTimeout("document.getElementById('progress_bar').className='';", 2000);
//var reader = new NetCDFReader(reader.result);

//replace reader with NetCDF reader
reader = new netcdfjs(this.result);
reader.getDataVariable('wmoId'); // go to offset and read it

//... your program here ..//
};
reader.readAsArrayBuffer(evt.target.files[0]);
}

// Make input element <input type="file" id="files" name="file" />
var input = document.createElement('input');
input.id = 'files';
input.type = 'file';
input.className = 'file';
document.body.appendChild(input); // put it into the DOM

// Make a Progress bar <div id="progress_bar"><div class="percent">0%</div></div>
var progress = document.createElement('div');
progress.id = 'progress_bar';
inner = document.createElement('div');
inner.className = 'percent';
inner.id = 'innerdiv'; // set the CSS class
progress.appendChild(inner);
document.body.appendChild(progress); // put it into the DOM

//Start event listener to check if a file has been selected
run = document
.getElementById('files')
.addEventListener('change', handleFileSelect, false);

///Progress bar and other functions
function errorHandler(evt) {
switch (evt.target.error.code) {
case evt.target.error.NOT_FOUND_ERR:
alert('File Not Found!');
break;
case evt.target.error.NOT_READABLE_ERR:
alert('File is not readable');
break;
case evt.target.error.ABORT_ERR:
break;
default:
alert('An error occurred reading this file.');
}
}

function updateProgress(evt) {
// evt is an ProgressEvent. Updates progress bar
if (evt.lengthComputable) {
var percentLoaded = Math.round((evt.loaded / evt.total) * 100);
// Increase the progress bar length.
if (percentLoaded < 100) {
progress.style.width = percentLoaded + '%';
progress.textContent = percentLoaded + '%';
}
}
}
reader.getDataVariable("wmoId"); // go to offset and read it
```

## License
Expand All @@ -154,8 +34,6 @@ function updateProgress(evt) {

[npm-image]: https://img.shields.io/npm/v/netcdfjs.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/netcdfjs
[travis-image]: https://img.shields.io/travis/cheminfo/netcdfjs/master.svg?style=flat-square
[travis-url]: https://travis-ci.org/cheminfo/netcdfjs
[coveralls-image]: https://img.shields.io/coveralls/cheminfo/netcdfjs.svg?style=flat-square
[coveralls-url]: https://coveralls.io/github/cheminfo/netcdfjs
[download-image]: https://img.shields.io/npm/dm/netcdfjs.svg?style=flat-square
Expand Down
19 changes: 10 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@
"name": "netcdfjs",
"version": "1.0.0",
"description": "Read and explore NetCDF files",
"type": "module",
"main": "lib/index.js",
"module": "src/index.js",
"keywords": [
"netcdf",
"nc",
"data",
"format"
],
"files": [
"src"
"src",
"lib"
],
"author": "Miguel Asencio <maasencioh@gmail.com> (https://github.com/maasencioh)",
"repository": "cheminfo/netcdfjs",
Expand All @@ -19,7 +21,6 @@
},
"homepage": "https://github.com/cheminfo/netcdfjs",
"license": "MIT",
"main": "./src/index.js",
"scripts": {
"eslint": "eslint src",
"eslint-fix": "npm run eslint -- --fix",
Expand All @@ -30,13 +31,13 @@
},
"devDependencies": {
"cheminfo-tools": "^1.23.2",
"eslint": "^5.16.0",
"eslint-config-cheminfo": "^1.20.1",
"eslint-plugin-import": "^2.17.3",
"eslint-plugin-jest": "^22.6.4",
"jest": "^24.8.0"
"eslint": "^7.32.0",
"eslint-config-cheminfo": "^5.4.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^24.4.0",
"jest": "^27.1.0"
},
"dependencies": {
"iobuffer": "^4.0.1"
"iobuffer": "^5.0.3"
}
}
16 changes: 7 additions & 9 deletions src/__tests__/attributeExists.test.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
'use strict';
import { readFileSync } from "fs";

const NetCDFReader = require('..');

const fs = require('fs');
const { NetCDFReader } = require("..");

const pathFiles = `${__dirname}/files/`;

test('attributeExists', function () {
const data = fs.readFileSync(`${pathFiles}P071.CDF`);
test("attributeExists", () => {
const data = readFileSync(`${pathFiles}P071.CDF`);

var reader = new NetCDFReader(data);
expect(reader.attributeExists('operator_name')).toBe(true);
expect(reader.attributeExists('operator_nameXX')).toBe(false);
let reader = new NetCDFReader(data);
expect(reader.attributeExists("operator_name")).toBe(true);
expect(reader.attributeExists("operator_nameXX")).toBe(false);
});
15 changes: 0 additions & 15 deletions src/__tests__/dataVariableExists.js

This file was deleted.

13 changes: 13 additions & 0 deletions src/__tests__/dataVariableExists.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { readFileSync } from "fs";

const { NetCDFReader } = require("..");

const pathFiles = `${__dirname}/files/`;

test("dataVariableExists", () => {
const data = readFileSync(`${pathFiles}P071.CDF`);

let reader = new NetCDFReader(data);
expect(reader.dataVariableExists("instrument_name")).toBe(true);
expect(reader.dataVariableExists("instrument_nameXX")).toBe(false);
});
14 changes: 6 additions & 8 deletions src/__tests__/getAttribute.test.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
'use strict';
import { readFileSync } from "fs";

const NetCDFReader = require('..');

const fs = require('fs');
const { NetCDFReader } = require("..");

const pathFiles = `${__dirname}/files/`;

test('getAttribute', function () {
const data = fs.readFileSync(`${pathFiles}P071.CDF`);
test("getAttribute", () => {
const data = readFileSync(`${pathFiles}P071.CDF`);

var reader = new NetCDFReader(data);
expect(reader.getAttribute('operator_name')).toBe('SC');
let reader = new NetCDFReader(data);
expect(reader.getAttribute("operator_name")).toBe("SC");
});
16 changes: 0 additions & 16 deletions src/__tests__/getDataVariableAsString.js

This file was deleted.

14 changes: 14 additions & 0 deletions src/__tests__/getDataVariableAsString.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { readFileSync } from "fs";

const { NetCDFReader } = require("..");

const pathFiles = `${__dirname}/files/`;

test("getDataVariableAsString", () => {
const data = readFileSync(`${pathFiles}P071.CDF`);

let reader = new NetCDFReader(data);
expect(reader.getDataVariableAsString("instrument_name")).toBe(
"Gas Chromatograph"
);
});

0 comments on commit 3667a0b

Please sign in to comment.