All Projects → baumandm → angular-numeraljs

baumandm / angular-numeraljs

Licence: MIT License
An Angular.js filter that applies Numeral.js formatting

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to angular-numeraljs

wp-testing
WordPress testing plugin
Stars: ✭ 12 (-70.73%)
Mutual labels:  angularjs
Swastika-IO-Admin
✔ [ SIOA ] Swastika I/O Admin dashboard template based on Bootstrap 4
Stars: ✭ 18 (-56.1%)
Mutual labels:  angularjs
ng-caret-aware
AngularJS directive for caret aware elements
Stars: ✭ 12 (-70.73%)
Mutual labels:  angularjs
uchiwa-web
Uchiwa is a simple yet effective open-source dashboard for the Sensu monitoring framework.
Stars: ✭ 17 (-58.54%)
Mutual labels:  angularjs
WebStore-Spring-MVC
WebStore is a full fledged online shopping system built in Spring-MVC. It uses JSP for view templating and MySql at the database end.
Stars: ✭ 29 (-29.27%)
Mutual labels:  angularjs
escpos-xml
JavaScript library that implements the thermal printer ESC / POS protocol and provides an XML interface for preparing templates for printing.
Stars: ✭ 37 (-9.76%)
Mutual labels:  numeraljs
pillow-cli
A CLI tool for booting modernized AngularJS projects.
Stars: ✭ 12 (-70.73%)
Mutual labels:  angularjs
AngularJS-Learning-zh CN
收集一些关于 AngularJS 的博客,文章,视频,书籍等(A bunch of links to blog posts, articles, videos, etc for learning AngularJS)
Stars: ✭ 254 (+519.51%)
Mutual labels:  angularjs
ng-loader
Webpack loader for AngularJs components
Stars: ✭ 28 (-31.71%)
Mutual labels:  angularjs
TravelWebApplication-Virtugo
This project is to develop a travel planner system, which describes about the climatic conditions, interesting places to visit, top hotels in the area and some additional features like travel reminders depending on the user’s destination. We have used Angular JS, HTML 5 for front end and Spring boot, MySQL for backend.
Stars: ✭ 21 (-48.78%)
Mutual labels:  angularjs
Angular-Firebase-Sortable-Table
Angular Firebase Sortable Table is a module that makes tables creation with firebase an easy task.
Stars: ✭ 28 (-31.71%)
Mutual labels:  angularjs
ionic4-angular6-crud-example
Building CRUD Mobile App using Ionic 4, Angular 6 and Cordova
Stars: ✭ 50 (+21.95%)
Mutual labels:  angularjs
tubular
A set of AngularJS directives designed to rapidly build modern web applications
Stars: ✭ 44 (+7.32%)
Mutual labels:  angularjs
angular-openweather-app
A weather forecast app written in AngularJS
Stars: ✭ 54 (+31.71%)
Mutual labels:  angularjs
design-system
The official LumApps Design System (LumX) for AngularJS and React applications
Stars: ✭ 19 (-53.66%)
Mutual labels:  angularjs
asana-webhooks-manager
Asana Webhooks Manager (AWM) is a free and open source management and event handling server, written in JavaScript (NodeJS, Angular) for Asana's webhooks API. Use AWM to manage webhooks subscriptions and accept event payloads from Asana in real-time. Want to create your own Asana Dashboard? Consider AWM as your starting point!
Stars: ✭ 23 (-43.9%)
Mutual labels:  angularjs
ecommerce
Laravel open source e-commerce system.
Stars: ✭ 209 (+409.76%)
Mutual labels:  angularjs
lab-angularjs
Angular.js (1.x) : test code lab
Stars: ✭ 21 (-48.78%)
Mutual labels:  angularjs
angular-ecmascript
Build an AngularJS app using ES6's class system
Stars: ✭ 28 (-31.71%)
Mutual labels:  angularjs
angular-easy-social-share
An easy way way to share the current page on an AngularJS app with Twitter, Facebook and LinkedIn.
Stars: ✭ 32 (-21.95%)
Mutual labels:  angularjs

Angular Numeral.js filter

npm Build Status

This is an Angular.js filter that applies Numeral.js formatting.

The latest version of this library uses Numeral.js 2.x branch. There are several breaking changes in Numeral.js, as well as breaking changes in this library. If you depend on Numeral.js 1.x and cannot upgrade, please use the latest 1.x release (and corresponding 1.x branch).

Breaking Changes in 2.x

For details on breaking changes in Numeral.js itself, please see its changelog.

In addition, angular-numeraljs has the following breaking changes from in 1.3.0 to 2.0.0:

  • $numeraljsConfigProvider.setCurrentLanguage(lang) has been renamed to locale(locale)
  • $numeraljsConfigProvider.setDefaultFormat(format) has been renamed to defaultFormat(format)
  • $numeraljsConfigProvider.setFormat(name, formatString) has been renamed to namedFormat(name, formatString)
  • $numeraljsConfigProvider.setLanguage(lang, def) has been renamed to register('locale', name, def)

How to Use

  1. Include Numeral.js in your project

  2. Include either the minified or non-minified javascript file from the /dist/ folder:

    <script src="angular-numeraljs.js"></script>
  3. Inject the ngNumeraljs filter into your app module:

    var myApp = angular.module('myApp', ['ngNumeraljs']);
  4. Apply the filter with the desired format string:

    <p>
        {{ price | numeraljs:'$0,0.00' }}
    </p>

Advanced Usage

You can configure ngNumeraljs during Angular's configuration phase using the $numeraljsConfigProvider:

var app = angular.module('exampleApp', ['ngNumeraljs']);

app.config(['$numeraljsConfigProvider', function ($numeraljsConfigProvider) {
    // place configuration here
}]);

Numeral.js must be already loaded in the browser prior to using $numeraljsConfigProvider.

Named Formats

$numeraljsConfigProvider.namedFormat(name, formatString) - defines a named format which can be used in place of the format string in the filter.

app.config(['$numeraljsConfigProvider', function ($numeraljsConfigProvider) {
    $numeraljsConfigProvider.namedFormat('currency', '$ 0,0.00');
}]);

In markup,

<p>
    {{ price | numeraljs:'currency' }}
</p>

Default Format

Numeral.js defines the default format as '0,0', so this format is used if none is provided to the filter.

$numeraljsConfigProvider.defaultFormat(format) - overrides the built-in default format.

app.config(['$numeraljsConfigProvider', function ($numeraljsConfigProvider) {
    $numeraljsConfigProvider.defaultFormat('0.0 $');
}]);

In markup,

<p>
    {{ price | numeraljs }}     <!-- will produce 15.5 $ -->
</p>

Custom Locales and Formats

$numeraljsConfigProvider.register(type, name, definition) - adds new locale or format definitions to Numeral.js. type must be either 'locale' or 'format'. For complete details, please refer to the Numeral.js documentation.

app.config(['$numeraljsConfigProvider', function ($numeraljsConfigProvider) {
  // Register a new Locale
  $numeraljsConfigProvider.register('locale', 'de', {
    delimiters: {
      thousands: ' ',
      decimal: ','
    },
    abbreviations: {
      thousand: 'k',
      million: 'm',
      billion: 'b',
      trillion: 't'
    },
    ordinal: function (number) {
      return '.';
    },
    currency: {
      symbol: '€'
    }
  });

  // Register a new Format
  $numeraljsConfigProvider.register('format', 'percentage', {
    regexps: {
      format: /(%)/,
      unformat: /(%)/
    },
    format: function(value, format, roundingFunction) {
      var space = numeral._.includes(format, ' %') ? ' ' : '',
          output;

      value = value * 100;

      // check for space before %
      format = format.replace(/\s?\%/, '');

      output = numeral._.numberToFormat(value, format, roundingFunction);

      if (numeral._.includes(output, ')')) {
        output = output.split('');

        output.splice(-1, 0, space + '%');

        output = output.join('');
      } else {
        output = output + space + '%';
      }

      return output;
    },
    unformat: function(string) {
      return numeral._.stringToNumber(string) * 0.01;
    }
  });

  $numeraljsConfigProvider.defaultFormat('0%');
  $numeraljsConfigProvider.locale('de');
}]);

Please note that registering a new format will add new formatting functionality, e.g. adding a new character to the format string. If you want to add a short name for a specific format string, see namedFormat() above.

See a list of available locales here: locale.

Locales or formats can be loaded directly into Numeral.js as well, e.g. by loading the locale files after Numeral.js is loaded. Angular-numeraljs can use these locales or formats even if they are not set via this provider.

Select Locale

$numeraljsConfigProvider.locale(locale) - selects the current locale. The locale must be loaded either by $numeraljsConfigProvider.register() or by loading the Numeral.js locale file.

app.config(['$numeraljsConfigProvider', function ($numeraljsConfigProvider) {
    $numeraljsConfigProvider.locale('de');
}]);

Runtime Configuration

It is possible to change all of the configurations at runtime by injecting $numeraljsConfig:

app.controller('numeralExample', function ($scope, $numeraljsConfig) {
  $numeraljsConfig.defaultFormat('0,0.0');
  $numeraljsConfig.locale($scope.locale);
});

This may be useful for websites with a language switcher, saved user preferences, etc.

Examples

There are several examples in the example/ folder which can be used for reference:

  • Simple: using this library in the most basic way possible
  • Config: using $numeraljsConfigProvider to configure this library
  • ChangingLanguages: changing languages (or other properties) at runtime (vs initialization)
  • Bower: adding a dependency through Bower
  • Browserify: adding a dependency through Browserify

Bower

This filter can be installed via Bower with the following dependency in the bower.json file.

"dependencies": {
    "angular-numeraljs": "^2.0"
}

Browserify

This project is published in NPM as angular-numeraljs.

"dependencies": {
    "angular-numeraljs": "^2.0"
}

The example/browserify folder has a working example with Browserify and Grunt. To build this project, install Grunt and Browserify and run the following:

cd example/browserify
npm install
grunt build

Then open example/browserify/dist/index.html in a browser.

Building

  1. Install Grunt CLI and Node.js

  2. Install Node packages

     npm install
    
  3. Build via Grunt

     grunt build
    

    The /dist/ folder contains the regular and minified Javascript files.

  4. Tests are automatically run during the build, but they can be run manually as well

     grunt test
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].