com.phloxui
Version:
PhloxUI Ng2+ Framework
192 lines (191 loc) • 16.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { AbstractPipeFormatter } from './AbstractPipeFormatter';
import { Option } from '../decorator/Option.decorator';
import { TelephoneNo } from '../model/TelephoneNo';
var /** @type {?} */ NAME = 'telno';
var TelephoneNoFormatter = /** @class */ (function (_super) {
tslib_1.__extends(TelephoneNoFormatter, _super);
function TelephoneNoFormatter() {
var _this = _super.call(this, NAME) || this;
_this.setDefaultValues();
return _this;
}
/**
* @return {?}
*/
TelephoneNoFormatter.prototype.setDefaultValues = /**
* @return {?}
*/
function () {
if (this.countryCodePunctuator === null || typeof this.countryCodePunctuator === 'undefined') {
this.countryCodePunctuator = ' ';
}
if (this.extNoPunctuator === null || typeof this.extNoPunctuator === 'undefined') {
this.extNoPunctuator = '#';
}
};
/**
* @param {?} data
* @return {?}
*/
TelephoneNoFormatter.prototype.format = /**
* @param {?} data
* @return {?}
*/
function (data) {
if (data === null || data === undefined || !(data instanceof TelephoneNo)) {
return data;
}
var /** @type {?} */ re = null;
var /** @type {?} */ telNo = /** @type {?} */ (data);
var /** @type {?} */ cc = telNo.countryCode;
if (cc !== null && cc !== '') {
re = cc;
}
var /** @type {?} */ sn = telNo.subscriberNo;
if (sn !== null && sn !== '') {
if (re !== null && re !== '') {
if (this.getCountryCodePunctuator() !== null && this.getCountryCodePunctuator() !== undefined) {
re += this.getCountryCodePunctuator() + sn;
}
else {
re += sn;
}
}
else {
re = sn;
}
}
var /** @type {?} */ ext = telNo.extNo;
if (ext !== null && ext !== '') {
if (re === null) {
re = '';
}
if (this.getExtNoPunctuator() !== null && this.getExtNoPunctuator() !== undefined) {
re += this.getExtNoPunctuator() + ext;
}
else {
re += ext;
}
}
return re;
};
/**
* @param {?} data
* @return {?}
*/
TelephoneNoFormatter.prototype.parse = /**
* @param {?} data
* @return {?}
*/
function (data) {
if (data === null || typeof data === 'undefined') {
return null;
}
var /** @type {?} */ telNo = new TelephoneNo();
if (this.countryCodePunctuator) {
// If country code punctuator is specified, try to extract country code from data.
if (data.indexOf(this.countryCodePunctuator) >= 0) {
telNo.countryCode = data.substring(0, data.indexOf(this.countryCodePunctuator));
data = data.substring(data.indexOf(this.countryCodePunctuator) + 1);
}
}
if (this.extNoPunctuator) {
// If ext no punctuator is specified, try to extract ext no from data.
if (data.indexOf(this.extNoPunctuator) >= 0) {
telNo.extNo = data.substring(data.indexOf(this.extNoPunctuator) + 1);
data = data.substring(0, data.indexOf(this.extNoPunctuator));
}
}
telNo.subscriberNo = data;
return telNo;
};
/**
* @param {?} args
* @return {?}
*/
TelephoneNoFormatter.prototype.parseToOptions = /**
* @param {?} args
* @return {?}
*/
function (args) {
var /** @type {?} */ countryCodePunctuator = undefined;
var /** @type {?} */ extNoPunctuator = undefined;
if (args !== null && typeof args !== 'undefined') {
if (args.length > 0) {
countryCodePunctuator = args[0];
}
if (args.length > 1) {
extNoPunctuator = args[1];
}
}
return {
countryCodePunctuator: countryCodePunctuator,
extNoPunctuator: extNoPunctuator
};
};
/**
* @return {?}
*/
TelephoneNoFormatter.prototype.getCountryCodePunctuator = /**
* @return {?}
*/
function () {
return this.countryCodePunctuator;
};
/**
* @param {?} countryCodePunctuator
* @return {?}
*/
TelephoneNoFormatter.prototype.setCountryCodePunctuator = /**
* @param {?} countryCodePunctuator
* @return {?}
*/
function (countryCodePunctuator) {
this.countryCodePunctuator = countryCodePunctuator;
};
/**
* @return {?}
*/
TelephoneNoFormatter.prototype.getExtNoPunctuator = /**
* @return {?}
*/
function () {
return this.extNoPunctuator;
};
/**
* @param {?} extNoPunctuator
* @return {?}
*/
TelephoneNoFormatter.prototype.setExtNoPunctuator = /**
* @param {?} extNoPunctuator
* @return {?}
*/
function (extNoPunctuator) {
this.extNoPunctuator = extNoPunctuator;
};
TelephoneNoFormatter.NAME = NAME;
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], TelephoneNoFormatter.prototype, "countryCodePunctuator", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], TelephoneNoFormatter.prototype, "extNoPunctuator", void 0);
return TelephoneNoFormatter;
}(AbstractPipeFormatter));
export { TelephoneNoFormatter };
function TelephoneNoFormatter_tsickle_Closure_declarations() {
/** @type {?} */
TelephoneNoFormatter.NAME;
/** @type {?} */
TelephoneNoFormatter.prototype.countryCodePunctuator;
/** @type {?} */
TelephoneNoFormatter.prototype.extNoPunctuator;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVsZXBob25lTm9Gb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9mb3JtYXR0ZXIvVGVsZXBob25lTm9Gb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELHFCQUFNLElBQUksR0FBVyxPQUFPLENBQUM7O0lBRWEsZ0RBQXFCO0lBUzdEO1FBQUEsWUFDRSxrQkFBTSxJQUFJLENBQUMsU0FHWjtRQURDLEtBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOztLQUN6Qjs7OztJQUVPLCtDQUFnQjs7OztRQUN0QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztTQUNsQztRQUNELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1NBQzVCOzs7Ozs7SUFHSSxxQ0FBTTs7OztjQUFDLElBQVM7UUFDckIsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELHFCQUFJLEVBQUUsR0FBVyxJQUFJ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Ozs7SUFHdkIsaURBQWtCOzs7O2NBQUMsZUFBdUI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7O2dDQTdISCxJQUFJOztRQUV6QyxNQUFNLEVBQUU7Ozs7UUFFUixNQUFNLEVBQUU7OzsrQkFaWDtFQU0wQyxxQkFBcUI7U0FBbEQsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RQaXBlRm9ybWF0dGVyIH0gZnJvbSAnLi9BYnN0cmFjdFBpcGVGb3JtYXR0ZXInO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgVGVsZXBob25lTm8gfSBmcm9tICcuLi9tb2RlbC9UZWxlcGhvbmVObyc7XG5cbmNvbnN0IE5BTUU6IHN0cmluZyA9ICd0ZWxubyc7XG5cbmV4cG9ydCBjbGFzcyBUZWxlcGhvbmVOb0Zvcm1hdHRlciBleHRlbmRzIEFic3RyYWN0UGlwZUZvcm1hdHRlciB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOQU1FOiBzdHJpbmcgPSBOQU1FO1xuXG4gIEBPcHRpb24oKVxuICBwcml2YXRlIGNvdW50cnlDb2RlUHVuY3R1YXRvcjogc3RyaW5nO1xuICBAT3B0aW9uKClcbiAgcHJpdmF0ZSBleHROb1B1bmN0dWF0b3I6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihOQU1FKTtcblxuICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0VmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmNvdW50cnlDb2RlUHVuY3R1YXRvciA9PT0gbnVsbCB8fCB0eXBlb2YgdGhpcy5jb3VudHJ5Q29kZVB1bmN0dWF0b3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmNvdW50cnlDb2RlUHVuY3R1YXRvciA9ICcgJztcbiAgICB9XG4gICAgaWYgKHRoaXMuZXh0Tm9QdW5jdHVhdG9yID09PSBudWxsIHx8IHR5cGVvZiB0aGlzLmV4dE5vUHVuY3R1YXRvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZXh0Tm9QdW5jdHVhdG9yID0gJyMnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQgfHwgIShkYXRhIGluc3RhbmNlb2YgVGVsZXBob25lTm8pKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBsZXQgcmU6IHN0cmluZyA9IG51bGw7XG4gICAgbGV0IHRlbE5vOiBUZWxlcGhvbmVObyA9IGRhdGEgYXMgVGVsZXBob25lTm87XG5cbiAgICBsZXQgY2M6IHN0cmluZyA9IHRlbE5vLmNvdW50cnlDb2RlO1xuICAgIGlmIChjYyAhPT0gbnVsbCAmJiBjYyAhPT0gJycpIHtcbiAgICAgIHJlID0gY2M7XG4gICAgfVxuXG4gICAgbGV0IHNuOiBzdHJpbmcgPSB0ZWxOby5zdWJzY3JpYmVyTm87XG4gICAgaWYgKHNuICE9PSBudWxsICYmIHNuICE9PSAnJykge1xuICAgICAgaWYgKHJlICE9PSBudWxsICYmIHJlICE9PSAnJykge1xuICAgICAgICBpZiAodGhpcy5nZXRDb3VudHJ5Q29kZVB1bmN0dWF0b3IoKSAhPT0gbnVsbCAmJiB0aGlzLmdldENvdW50cnlDb2RlUHVuY3R1YXRvcigpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZSArPSB0aGlzLmdldENvdW50cnlDb2RlUHVuY3R1YXRvcigpICsgc247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmUgKz0gc247XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlID0gc247XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGV4dDogc3RyaW5nID0gdGVsTm8uZXh0Tm87XG4gICAgaWYgKGV4dCAhPT0gbnVsbCAmJiBleHQgIT09ICcnKSB7XG4gICAgICBpZiAocmUgPT09IG51bGwpIHtcbiAgICAgICAgcmUgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZ2V0RXh0Tm9QdW5jdHVhdG9yKCkgIT09IG51bGwgJiYgdGhpcy5nZXRFeHROb1B1bmN0dWF0b3IoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlICs9IHRoaXMuZ2V0RXh0Tm9QdW5jdHVhdG9yKCkgKyBleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZSArPSBleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlO1xuICB9XG5cbiAgcHVibGljIHBhcnNlKGRhdGE6IHN0cmluZyk6IFRlbGVwaG9uZU5vIHtcbiAgICBpZiAoZGF0YSA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB0ZWxObzogVGVsZXBob25lTm8gPSBuZXcgVGVsZXBob25lTm8oKTtcblxuICAgIGlmICh0aGlzLmNvdW50cnlDb2RlUHVuY3R1YXRvcikge1xuICAgICAgLy8gSWYgY291bnRyeSBjb2RlIHB1bmN0dWF0b3IgaXMgc3BlY2lmaWVkLCB0cnkgdG8gZXh0cmFjdCBjb3VudHJ5IGNvZGUgZnJvbSBkYXRhLlxuICAgICAgaWYgKGRhdGEuaW5kZXhPZih0aGlzLmNvdW50cnlDb2RlUHVuY3R1YXRvcikgPj0gMCkge1xuICAgICAgICB0ZWxOby5jb3VudHJ5Q29kZSA9IGRhdGEuc3Vic3RyaW5nKDAsIGRhdGEuaW5kZXhPZih0aGlzLmNvdW50cnlDb2RlUHVuY3R1YXRvcikpO1xuXG4gICAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhkYXRhLmluZGV4T2YodGhpcy5jb3VudHJ5Q29kZVB1bmN0dWF0b3IpICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmV4dE5vUHVuY3R1YXRvcikge1xuICAgICAgLy8gSWYgZXh0IG5vIHB1bmN0dWF0b3IgaXMgc3BlY2lmaWVkLCB0cnkgdG8gZXh0cmFjdCBleHQgbm8gZnJvbSBkYXRhLlxuICAgICAgaWYgKGRhdGEuaW5kZXhPZih0aGlzLmV4dE5vUHVuY3R1YXRvcikgPj0gMCkge1xuICAgICAgICB0ZWxOby5leHRObyA9IGRhdGEuc3Vic3RyaW5nKGRhdGEuaW5kZXhPZih0aGlzLmV4dE5vUHVuY3R1YXRvcikgKyAxKTtcblxuICAgICAgICBkYXRhID0gZGF0YS5zdWJzdHJpbmcoMCwgZGF0YS5pbmRleE9mKHRoaXMuZXh0Tm9QdW5jdHVhdG9yKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGVsTm8uc3Vic2NyaWJlck5vID0gZGF0YTtcblxuICAgIHJldHVybiB0ZWxObztcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZVRvT3B0aW9ucyhhcmdzOiBhbnlbXSk6IGFueSB7XG4gICAgbGV0IGNvdW50cnlDb2RlUHVuY3R1YXRvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuICAgIGxldCBleHROb1B1bmN0dWF0b3I6IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChhcmdzICE9PSBudWxsICYmIHR5cGVvZiBhcmdzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3VudHJ5Q29kZVB1bmN0dWF0b3IgPSBhcmdzWzBdO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICBleHROb1B1bmN0dWF0b3IgPSBhcmdzWzFdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb3VudHJ5Q29kZVB1bmN0dWF0b3I6IGNvdW50cnlDb2RlUHVuY3R1YXRvcixcbiAgICAgIGV4dE5vUHVuY3R1YXRvcjogZXh0Tm9QdW5jdHVhdG9yXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5Q29kZVB1bmN0dWF0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHJ5Q29kZVB1bmN0dWF0b3I7XG4gIH1cblxuICBwdWJsaWMgc2V0Q291bnRyeUNvZGVQdW5jdHVhdG9yKGNvdW50cnlDb2RlUHVuY3R1YXRvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb3VudHJ5Q29kZVB1bmN0dWF0b3IgPSBjb3VudHJ5Q29kZVB1bmN0dWF0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0RXh0Tm9QdW5jdHVhdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXh0Tm9QdW5jdHVhdG9yO1xuICB9XG5cbiAgcHVibGljIHNldEV4dE5vUHVuY3R1YXRvcihleHROb1B1bmN0dWF0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZXh0Tm9QdW5jdHVhdG9yID0gZXh0Tm9QdW5jdHVhdG9yO1xuICB9XG59XG4iXX0=