nakedobjects.spa
Version:
Single Page Application client for a Naked Objects application.
181 lines • 7.2 kB
JavaScript
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