1.0.0 • Published 4 years ago

@fabriquartz/ember-computed-convert-unit v1.0.0

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

ember-computed-convert-unit

Enables convert unit as a computed property

Compatibility

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

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 convertions

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.

// config/enviroment.js
module.exports = function(environment) {
  let ENV = {
    computedConvertUnit: {
      customConversions: [
        {
          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.