react-application-core
Version:
A react-based application core for the business applications.
290 lines • 14 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompositeCronFieldFactory = void 0;
var React = require("react");
var R = require("ramda");
var definition_1 = require("../../../definition");
var controlled_field_factory_service_1 = require("../controlled-field-factory.service");
var field_1 = require("../../field");
var di_1 = require("../../../di");
var util_1 = require("../../../util");
var definitions_interface_1 = require("../../../definitions.interface");
var CompositeCronFieldFactory = /** @class */ (function (_super) {
__extends(CompositeCronFieldFactory, _super);
/**
* @stable [18.12.2019]
*/
function CompositeCronFieldFactory() {
var _this = _super.call(this) || this;
_this.fields.set(definition_1.CompositeCronFieldItemsEnum.CRON, React.createElement(field_1.CronField, null));
_this.fields.set(definition_1.CompositeCronFieldItemsEnum.FROM, React.createElement(field_1.DateField, null));
_this.fields.set(definition_1.CompositeCronFieldItemsEnum.PERIOD, React.createElement(field_1.Select, null));
_this.fields.set(definition_1.CompositeCronFieldItemsEnum.TO, React.createElement(field_1.DateField, null));
return _this;
}
CompositeCronFieldFactory_1 = CompositeCronFieldFactory;
/**
* @stable [18.12.2019]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {ICompositeCronFieldItemEntity[]}
*/
CompositeCronFieldFactory.prototype.getFields = function (config) {
var _this = this;
var userFields = _super.prototype.getFields.call(this, config);
return this.sortFields(CompositeCronFieldFactory_1.DEFAULT_FIELDS
.filter(function (cfg) {
switch (cfg.type) {
case definition_1.CompositeCronFieldItemsEnum.CRON:
return [definition_1.CronPeriodsEnum.MONTHLY, definition_1.CronPeriodsEnum.WEEKLY].includes(_this.getPeriodValue(config));
case definition_1.CompositeCronFieldItemsEnum.TO:
return ![definition_1.CronPeriodsEnum.NO_REPETITIONS].includes(_this.getPeriodValue(config));
}
return true;
})
.map(function (defaultCfg) {
var userFieldConfig = userFields.find(function (userFieldConfig0) { return userFieldConfig0.type === defaultCfg.type; });
return util_1.ConditionUtils.ifNotNilThanValue(userFieldConfig, function () { return R.mergeDeepRight(defaultCfg, userFieldConfig); }, defaultCfg);
}));
};
/**
* @stable [18.12.2019]
* @param {ICompositeCronFieldConfigEntity} config
* @param {ICompositeCronFieldItemEntity} actualFieldCfg
* @param {ICompositeCronFieldItemEntity[]} actualFields
* @returns {CompositeCronFieldPropsT}
*/
CompositeCronFieldFactory.prototype.getExtraProps = function (config, actualFieldCfg, actualFields) {
var _this = this;
var props = _super.prototype.getExtraProps.call(this, config, actualFieldCfg, actualFields);
switch (actualFieldCfg.type) {
case definition_1.CompositeCronFieldItemsEnum.FROM:
return __assign(__assign({}, props), { onChange: function (fromDateValue) { return _this.onCompositeFieldChange(config, fromDateValue, _this.getPeriodValue(config)); } });
case definition_1.CompositeCronFieldItemsEnum.CRON:
return __assign(__assign({}, props), { period: this.getPeriodValue(config) === definition_1.CronPeriodsEnum.WEEKLY
? definition_1.CronPeriodsEnum.WEEKLY
: definition_1.CronPeriodsEnum.MONTHLY });
case definition_1.CompositeCronFieldItemsEnum.PERIOD:
return __assign(__assign({}, props), { onSelect: function (option) {
var currentCronPeriod = util_1.isFn(config.cronPeriodsMapper)
? config.cronPeriodsMapper(option.value)
: option.value;
util_1.ConditionUtils.ifNotNilThanValue(_this.getDateFromFieldName(config), function (dateFromFieldName) {
return _this.onCompositeFieldChange(config, _this.asContainerEntity(config)[dateFromFieldName], currentCronPeriod);
});
} });
}
return props;
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @param {DateTimeLikeTypeT} fromDateValue
* @param {StringNumberT} currentCronPeriod
*/
CompositeCronFieldFactory.prototype.onCompositeFieldChange = function (config, fromDateValue, currentCronPeriod) {
var cronFieldValue = R.equals(this.getPeriodValue(config), currentCronPeriod) // config.period == previousValue or currentValue
? definitions_interface_1.UNDEF
: definition_1.FieldConstants.VALUE_TO_RESET;
switch (currentCronPeriod) {
case definition_1.CronPeriodsEnum.DAILY:
cronFieldValue = util_1.CronEntity.newInstance()
.withHours(0)
.withMinutes(0)
.toExpression();
break;
case definition_1.CronPeriodsEnum.YEARLY:
util_1.ConditionUtils.ifNotNilThanValue(this.asCronEntity(config, fromDateValue), function (cronEntity) { return (cronFieldValue = cronEntity); });
break;
case definition_1.CronPeriodsEnum.NO_REPETITIONS:
util_1.ConditionUtils.ifNotNilThanValue(this.asCronEntity(config, fromDateValue, true), function (cronEntity) { return (cronFieldValue = cronEntity); });
break;
}
if (util_1.isDef(cronFieldValue)) {
var proxy_1 = this.$formStoreProxyFactory(config.container);
util_1.ConditionUtils.ifNotNilThanValue(this.getCronFieldName(config), function (cronFieldName) {
var _a;
return proxy_1.dispatchFormChanges((_a = {}, _a[cronFieldName] = cronFieldValue, _a));
});
}
};
/**
* @stable [09.04.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @param {DateTimeLikeTypeT} fromDateValue
* @param {boolean} applyYear
* @returns {string}
*/
CompositeCronFieldFactory.prototype.asCronEntity = function (config, fromDateValue, applyYear) {
if (applyYear === void 0) { applyYear = false; }
var fromDate = this.dc.asDayOfYearEntity({
date: fromDateValue,
// Need to consider the input props format
inputFormat: this.getFieldFormat(this.getDateFromFieldItem(config).fieldConfiguration),
});
if (R.isNil(fromDate)) {
return null;
}
var cronEntity = util_1.CronEntity.newInstance()
.withHours(0)
.withMinutes(0)
.withMonths(fromDate.month + 1) // The cron months range is 1-12
.withDaysOfMonths(fromDate.day);
if (applyYear) {
cronEntity = cronEntity.withYears(fromDate.year);
}
return cronEntity.toExpression();
};
/**
* @stable [18.12.2019]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {ICompositeCronFieldItemEntity}
*/
CompositeCronFieldFactory.prototype.getCronFieldItem = function (config) {
return _super.prototype.getFields.call(this, config)
.find(function (actualFieldCfg0) { return actualFieldCfg0.type === definition_1.CompositeCronFieldItemsEnum.CRON; });
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {ICompositeCronFieldItemEntity}
*/
CompositeCronFieldFactory.prototype.getDateFromFieldItem = function (config) {
return _super.prototype.getFields.call(this, config)
.find(function (actualFieldCfg0) { return actualFieldCfg0.type === definition_1.CompositeCronFieldItemsEnum.FROM; });
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {ICompositeCronFieldItemEntity}
*/
CompositeCronFieldFactory.prototype.getPeriodFieldItem = function (config) {
return _super.prototype.getFields.call(this, config)
.find(function (actualFieldCfg0) { return actualFieldCfg0.type === definition_1.CompositeCronFieldItemsEnum.PERIOD; });
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldItemEntity} fieldItem
* @returns {string}
*/
CompositeCronFieldFactory.prototype.getFieldName = function (fieldItem) {
return util_1.ConditionUtils.ifNotNilThanValue(fieldItem.fieldConfiguration, function (fCfg) { return fCfg.name; });
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {string}
*/
CompositeCronFieldFactory.prototype.getDateFromFieldName = function (config) {
return this.getFieldName(this.getDateFromFieldItem(config));
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {string}
*/
CompositeCronFieldFactory.prototype.getCronFieldName = function (config) {
return this.getFieldName(this.getCronFieldItem(config));
};
/**
* @stable [13.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {string}
*/
CompositeCronFieldFactory.prototype.getPeriodFieldName = function (config) {
return this.getFieldName(this.getPeriodFieldItem(config));
};
/**
* @stable [12.01.2020]
* @param {ICompositeCronFieldConfigEntity} config
* @returns {IEntity}
*/
CompositeCronFieldFactory.prototype.asContainerEntity = function (config) {
return config.container.props.entity;
};
/**
* @stable [25.12.2020]
* @param config
* @private
*/
CompositeCronFieldFactory.prototype.getPeriodValue = function (config) {
var _this = this;
return util_1.ConditionUtils.ifNotNilThanValue(this.getPeriodFieldName(config), function (periodFieldName) {
return _this.fieldConverter.fromSelectValueToId(_this.asContainerEntity(config)[periodFieldName]);
});
};
/**
* @stable [14.10.2020]
* @param originalProps
* @private
*/
CompositeCronFieldFactory.prototype.getFieldFormat = function (originalProps) {
return util_1.NvlUtils.nvl(originalProps.format, this.settings.dateTime.uiDateFormat);
};
var CompositeCronFieldFactory_1;
CompositeCronFieldFactory.DEFAULT_FIELDS = [
{
order: 0,
type: definition_1.CompositeCronFieldItemsEnum.PERIOD,
},
{
order: 1,
type: definition_1.CompositeCronFieldItemsEnum.FROM,
},
{
order: 2,
type: definition_1.CompositeCronFieldItemsEnum.TO,
},
{
order: 3,
type: definition_1.CompositeCronFieldItemsEnum.CRON,
}
];
__decorate([
di_1.lazyInject(di_1.DI_TYPES.DateConverter),
__metadata("design:type", Object)
], CompositeCronFieldFactory.prototype, "dc", void 0);
__decorate([
di_1.lazyInject(di_1.DI_TYPES.Settings),
__metadata("design:type", Object)
], CompositeCronFieldFactory.prototype, "settings", void 0);
CompositeCronFieldFactory = CompositeCronFieldFactory_1 = __decorate([
di_1.provideInSingleton(CompositeCronFieldFactory_1),
__metadata("design:paramtypes", [])
], CompositeCronFieldFactory);
return CompositeCronFieldFactory;
}(controlled_field_factory_service_1.ControlledFieldFactory));
exports.CompositeCronFieldFactory = CompositeCronFieldFactory;
//# sourceMappingURL=composite-cron-field-factory.service.js.map