UNPKG

react-application-core

Version:

A react-based application core for the business applications.

290 lines 14 kB
"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