UNPKG

nakedobjects.spa

Version:

Single Page Application client for a Naked Objects application.

181 lines 7.2 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { CurrencyPipe, DecimalPipe } from '@angular/common'; import { Injectable } from '@angular/core'; import { ConfigService } from './config.service'; import * as moment from 'moment'; import forEach from 'lodash/forEach'; var LocalStringFilter = (function () { function LocalStringFilter() { } LocalStringFilter.prototype.filter = function (val) { return val ? val.toString() : ""; }; return LocalStringFilter; }()); function transform(tfm) { try { return tfm(); } catch (e) { return ""; } } var LocalCurrencyFilter = (function () { function LocalCurrencyFilter(locale, symbol, digits) { this.locale = locale; this.symbol = symbol; this.digits = digits; } LocalCurrencyFilter.prototype.filter = function (val) { var _this = this; if (val == null || val === "") { return ""; } var pipe = new CurrencyPipe(this.locale); return transform(function () { return pipe.transform(val, _this.symbol, true, _this.digits); }) || ""; }; return LocalCurrencyFilter; }()); var LocalDateFilter = (function () { function LocalDateFilter(locale, mask, tz) { this.locale = locale; this.mask = mask; this.tz = tz; } LocalDateFilter.prototype.filter = function (val) { if (!val) { return ""; } // Angular date pipes no longer support timezones so we need to use moment here // date or time var mmt = val.length > 8 ? moment.utc(val) : moment.utc(val, "HH:mm:ss"); if (mmt.isValid()) { if (this.tz) { mmt = mmt.utcOffset(this.tz); } return mmt.format(this.mask); } return ""; }; return LocalDateFilter; }()); var LocalNumberFilter = (function () { function LocalNumberFilter(locale, digits) { this.locale = locale; this.digits = digits; } LocalNumberFilter.prototype.filter = function (val) { var _this = this; if (val == null || val === "") { return ""; } var pipe = new DecimalPipe(this.locale); var result = transform(function () { return pipe.transform(val, _this.digits); }); return result == null ? "" : result; }; return LocalNumberFilter; }()); var MaskService = (function () { function MaskService(appConfig) { this.appConfig = appConfig; this.maskMap = { string: {}, "date-time": {}, date: {}, time: {}, "utc-millisec": {}, "big-integer": {}, "big-decimal": {}, blob: {}, clob: {}, decimal: {}, int: {} }; this.defaultLocale = appConfig.config.defaultLocale; this.configureFromConfig(); } MaskService.prototype.defaultLocalFilter = function (format) { switch (format) { case ("string"): return new LocalStringFilter(); case ("date-time"): return new LocalDateFilter(this.defaultLocale, "D MMM YYYY HH:mm:ss"); case ("date"): return new LocalDateFilter(this.defaultLocale, "D MMM YYYY", "+0000"); case ("time"): return new LocalDateFilter(this.defaultLocale, "HH:mm", "+0000"); case ("utc-millisec"): return new LocalNumberFilter(this.defaultLocale); case ("big-integer"): return new LocalNumberFilter(this.defaultLocale); case ("big-decimal"): return new LocalNumberFilter(this.defaultLocale); case ("blob"): return new LocalStringFilter(); case ("clob"): return new LocalStringFilter(); case ("decimal"): return new LocalNumberFilter(this.defaultLocale); case ("int"): return new LocalNumberFilter(this.defaultLocale); default: return new LocalStringFilter(); } }; ; MaskService.prototype.customFilter = function (format, remoteMask) { if (remoteMask && this.maskMap[format]) { return this.maskMap[format][remoteMask]; } return undefined; }; MaskService.prototype.toLocalFilter = function (remoteMask, format) { return this.customFilter(format, remoteMask) || this.defaultLocalFilter(format); }; ; MaskService.prototype.setNumberMaskMapping = function (customMask, format, digits, locale) { this.maskMap[format][customMask] = new LocalNumberFilter(locale || this.defaultLocale, digits); }; ; MaskService.prototype.setDateMaskMapping = function (customMask, format, mask, tz, locale) { this.maskMap[format][customMask] = new LocalDateFilter(locale || this.defaultLocale, mask, tz); }; ; MaskService.prototype.setCurrencyMaskMapping = function (customMask, format, symbol, digits, locale) { this.maskMap[format][customMask] = new LocalCurrencyFilter(locale || this.defaultLocale, symbol, digits); }; ; MaskService.prototype.configureFromConfig = function () { var _this = this; var maskConfig = this.appConfig.config.masks; if (maskConfig) { var currencyMasks = maskConfig.currencyMasks; var dateMasks = maskConfig.dateMasks; var numberMasks = maskConfig.numberMasks; if (currencyMasks) { forEach(currencyMasks, function (v, k) { return _this.setCurrencyMaskMapping(k, v.format, v.symbol, v.digits, v.locale); }); } if (dateMasks) { forEach(dateMasks, function (v, k) { return _this.setDateMaskMapping(k, v.format, v.mask, v.tz, v.locale); }); } if (numberMasks) { forEach(numberMasks, function (v, k) { return _this.setNumberMaskMapping(k, v.format, v.digits, v.locale); }); } } }; return MaskService; }()); MaskService = __decorate([ Injectable(), __metadata("design:paramtypes", [ConfigService]) ], MaskService); export { MaskService }; //# sourceMappingURL=mask.service.js.map