Skip to content

Fabriquartz/ember-computed-convert-unit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Ember Observer Score Maintainability

ember-computed-convert-unit

Provides unit conversion as a computed property wrapper around convert-units

Compatibility

ember-computed-convert-unit is made for ember 3.12 and above, but probably works for older versions too.

  • Ember.js v3.20 or above
  • Ember CLI v3.20 or above
  • Node.js v12 or above

Installation

ember install ember-computed-convert-unit

Usage

convertUnit is a computed property that you can use in the same way as you normally would do. It works for both 'classic' Ember and Ember Octane. To indicate a unit, you can use both the full name and the abbreviation of a unit. (e.g. 'kg'/'kilograms', 'ft'/'feet')

import Model       from '@ember-data/model';
import convertUnit from 'ember-computed-convert-unit'

export default Model.extend({
  lengthInMilimeters:  attr('number'),
  lengthInCentimeters: convertUnit('lengthInMilimeters', 'milimeters', 'centimeters')
})
import Model       from '@ember-data/model';
import convertUnit from 'ember-computed-convert-unit'

export default class Paper extends Model {
  @attr('number')
  lengthInMilimeters;

  @convertUnit('lengthInMilimeters', 'milimeters', 'centimeters')
  lengthInCentimeters;
}

Available conversions

This addon uses convert-units to perform the actual conversion. Check its documentation for available conversions.

Custom conversions

It's possible to add (or "overwrite") a conversion as shown in the example below. If you add a conversion for a type that's included in the library, you must use the abbreviation. In the example below feet/ft already exists as a type and TEU doesn't.

// utils/computed-convert-unit.js
export default [
  {
    from: 'ft',
    to:   'TEU',
    convert(value) {
      return value / 20;
    }
  },
  {
    from: 'TEU',
    to:   'ft',
    convert(value) {
      return value * 20;
    }
  }
];


// models/rock.js
import Model       from '@ember-data/model';
import convertUnit from 'ember-computed-convert-unit'

export default class Rock extends Model {
  @attr('number')
  lengthInFeet;

  @convertUnit('lengthInMilimeters', 'feet', 'TEU')
  volumeInTeu;
}

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.

About

An ember addon for working with converted values

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 5