Skip to content

EmberMN/ember-magnitude-helpers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5f6a5a1 · Jan 28, 2025

History

52 Commits
Jan 28, 2025
Jan 28, 2025
Jan 28, 2025
Jan 28, 2025
Apr 23, 2020
Jan 28, 2025
Jan 28, 2025
Sep 21, 2021
Mar 1, 2022
Sep 21, 2021
Sep 24, 2019
Jan 28, 2025
Jan 28, 2025
Jan 28, 2025
Jan 28, 2025

Repository files navigation

ember-magnitude-helpers

Latest NPM release Build Status Code Climate Ember Observer Score

Want to convert a quantity like 5000981077504 bytes to 5.0TB or 4.55 TiB in your Ember.js app? This addon provides the following helpers:

Compatibility

(according to the default blueprint at least)

  • Ember CLI v4.12 or above
  • Node.js v18 or above

Installation

ember install ember-magnitude-helpers

Usage

mg-prefix

Pass a number as the first parameter, optionally followed any/all of the following named parameters:

  • precision: round to this many digits (default = 3)
  • type: 'si' for base 1000, 'iec' for base 1024 (default = 'si')
  • unit: arbitrary string (default = '')
  • useName: false for abbreviation (e.g. 'G'), true for name (e.g. 'giga') (default = false)

Examples (classic):

{{mg-prefix 123456}} => '123 k'
{{mg-prefix 1024 type="si" unit="bytes"}} => '1.02 kbytes'
{{mg-prefix 2e6 precision=1 type="iec" unit="B"}} => '2 MiB'
{{mg-prefix 1e12 unit="flops" useName=true}} => '1.00 teraflops'

Example (template tag):

// some-component.gjs
import { mgPrefix } from 'ember-magnitude-helpers';

<template>
  {{mgPrefix 123456}} => '123 k'
  {{mgPrefix 1024 type="si" unit="bytes"}} => '1.02 kbytes'
  {{mgPrefix 2e6 precision=1 type="iec" unit="B"}} => '2 MiB'
  {{mgPrefix 1e12 unit="flops" useName=true}} => '1.00 teraflops'
</template>

You can also import this helper into JS like this:

// some-component.js
import { tracked } from '@glimmer/tracking';
import Component from '@glimmer/component';
import { mgPrefix } from 'ember-magnitude-helpers';

export default class SomeComponent extends Component {
  @tracked bytes = 1234567890;

  get humanSize() {
    // returns "1.15 GiB"
    return mgPrefix([this.bytes], {
      unit: 'B',
      type: 'iec',
    });
  }
}

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.