@acorex/components 21.0.1-next.21 → 21.0.1-next.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-cron-job.mjs","sources":["../../../../packages/components/cron-job/src/lib/cron-job.service.ts","../../../../packages/components/cron-job/src/lib/types/shared.model.ts","../../../../packages/components/cron-job/src/lib/day/day.model.ts","../../../../packages/components/cron-job/src/lib/day/day.service.ts","../../../../packages/components/cron-job/src/lib/day/day.component.ts","../../../../packages/components/cron-job/src/lib/day/day.component.html","../../../../packages/components/cron-job/src/lib/hours/hours.model.ts","../../../../packages/components/cron-job/src/lib/hours/hours.service.ts","../../../../packages/components/cron-job/src/lib/hours/hours.component.ts","../../../../packages/components/cron-job/src/lib/hours/hours.component.html","../../../../packages/components/cron-job/src/lib/minutes/minutes.model.ts","../../../../packages/components/cron-job/src/lib/minutes/minutes.service.ts","../../../../packages/components/cron-job/src/lib/minutes/minutes.component.ts","../../../../packages/components/cron-job/src/lib/minutes/minutes.component.html","../../../../packages/components/cron-job/src/lib/month/month.model.ts","../../../../packages/components/cron-job/src/lib/month/month.service.ts","../../../../packages/components/cron-job/src/lib/month/month.component.ts","../../../../packages/components/cron-job/src/lib/month/month.component.html","../../../../packages/components/cron-job/src/lib/seconds/seconds.model.ts","../../../../packages/components/cron-job/src/lib/seconds/seconds.service.ts","../../../../packages/components/cron-job/src/lib/seconds/seconds.component.ts","../../../../packages/components/cron-job/src/lib/seconds/seconds.component.html","../../../../packages/components/cron-job/src/lib/year/year.model.ts","../../../../packages/components/cron-job/src/lib/year/year.service.ts","../../../../packages/components/cron-job/src/lib/year/year.component.ts","../../../../packages/components/cron-job/src/lib/year/year.component.html","../../../../packages/components/cron-job/src/lib/cron-job-container/cron-job-container.component.ts","../../../../packages/components/cron-job/src/lib/cron-job-container/cron-job-container.component.html","../../../../packages/components/cron-job/src/lib/cron-job.module.ts","../../../../packages/components/cron-job/src/acorex-components-cron-job.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { DropDownItem, RegexItemsIndex } from './types/shared.model';\n\n@Injectable()\nexport class CronJobService {\n public addComma(str: string): string {\n if (str !== '')\n // add , to end of string\n str = str.concat(',');\n\n return str;\n }\n\n getRegexItem(cronExpressionPattern: string, itemIndex: RegexItemsIndex): string {\n const expressionItemsList = cronExpressionPattern.split(' ');\n return expressionItemsList[itemIndex] ? expressionItemsList[itemIndex] : '*';\n }\n\n getIntervalCronData(regex: string): { interval: number; startAt: number } | undefined {\n const regexDataList: Array<string> = regex.split(',');\n const rangePattern = '/';\n const item = regexDataList.find((item) => item.includes(rangePattern));\n\n return item ? { interval: parseInt(item.split('/')[1]), startAt: parseInt(item.split('/')[0]) } : undefined;\n }\n\n getSpecificCronData(regex: string, dropDowndara?: Array<string>): Array<DropDownItem> | undefined {\n const regexDataList: Array<string> = regex.split(',');\n // **Regex pattern to find only digits in an array items.**\n const regexPattern = new RegExp('^[0-9]+$');\n const items = regexDataList.filter((item) => regexPattern.test(item));\n\n return items.length ? this.mapItemsToDropDownItem(items, dropDowndara) : undefined;\n }\n\n getRangeCronData(regex: string): { from: number; to: number } | undefined {\n const regexDataList: Array<string> = regex.split(',');\n const rangePattern = '-';\n const item = regexDataList.find((item) => item.includes(rangePattern));\n return item\n ? { from: parseInt(item.split(rangePattern)[0]), to: parseInt(item.split(rangePattern)[1]) }\n : undefined;\n }\n\n getDayOfMonthCronData(regex: string): { day: number; xst: number } | undefined {\n const regexDataList: Array<string> = regex.split(',');\n const rangePattern = '#';\n const item = regexDataList.find((item) => item.includes(rangePattern));\n return item\n ? { day: parseInt(item.split(rangePattern)[0]), xst: parseInt(item.split(rangePattern)[1]) }\n : undefined;\n }\n\n mapItemsToDropDownItem(items: Array<string>, dropDowndata?: Array<string>): Array<DropDownItem> {\n return items.map((item) => {\n if (dropDowndata) {\n const dropDownItem: string | undefined = dropDowndata[parseInt(item) - 1];\n return dropDownItem ? { id: parseInt(item), text: dropDownItem } : { id: parseInt(item), text: item };\n }\n\n return { id: parseInt(item), text: item };\n });\n }\n}\n","export class Custom {\n specific: Specific = new Specific();\n repeat: Repeat = new Repeat();\n between: Between = new Between();\n}\n\nexport class Repeat {\n isRepeat = false;\n interval = 0;\n startAt = 0;\n}\n\nexport class Specific {\n isSpecific = false;\n values: DropDownItem[] = [];\n}\n\nexport class Between {\n isBetween = false;\n from = 0;\n to = 0;\n}\n\nexport enum Type {\n Every = 'every',\n Custom = 'custom',\n}\n\nexport enum RegexItemsIndex {\n Second = 0,\n Minute = 1,\n Hour = 2,\n DayOfMonth = 3,\n Month = 4,\n DayOfWeek = 5,\n Year = 6,\n}\nexport class DropDownItem {\n constructor(\n public id: number,\n public text: string,\n ) {}\n}\n","import { DropDownItem } from '../types/shared.model';\n\nexport class Day {\n type: DayType = DayType.Every;\n baseOnWeek: BaseOnWeek = new BaseOnWeek();\n baseOnMonth: BaseOnMonth = new BaseOnMonth();\n}\n\nexport class BaseOnMonth {\n type: BaseOnMonthType = BaseOnMonthType.Last;\n custom: BaseOnMonthCustom = new BaseOnMonthCustom();\n before = 1;\n}\n\nexport class BaseOnWeek {\n type: BaseOnWeekType = BaseOnWeekType.Last;\n last: Last = new Last();\n custom: BaseOnWeekCustom = new BaseOnWeekCustom();\n}\n\nexport class BaseOnWeekCustom {\n repeat: BaseOnWeekRepeat = new BaseOnWeekRepeat();\n specific: Specific = new Specific();\n dayOfMonth: DayOfMonth = new DayOfMonth();\n}\n\nexport class BaseOnMonthCustom {\n repeat: BaseOnMonthRepeat = new BaseOnMonthRepeat();\n specific: Specific = new Specific();\n}\n\nexport class Last {\n day = 1;\n}\n\nexport class BaseRepeat {\n isRepeat = false;\n interval = 1;\n}\n\nexport class BaseOnWeekRepeat extends BaseRepeat {\n startAt = 1;\n}\n\nexport class BaseOnMonthRepeat extends BaseRepeat {\n startAt = 1;\n}\n\nexport class Specific {\n isSpecefic = false;\n values: DropDownItem[] = [];\n}\n\nexport class DayOfMonth {\n isDayOfMonth = false;\n xst = 1;\n day = 1;\n}\n\nexport enum DayType {\n Every = 'every',\n BOWeek = 'boweek',\n BOMonth = 'bomonth',\n}\n\nexport enum BaseOnWeekType {\n Last = 'last',\n Custom = 'custom',\n}\n\nexport enum BaseOnMonthType {\n Last = 'last',\n Before = 'before',\n Custom = 'custom',\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex } from '../types/shared.model';\nimport { BaseOnMonthType, BaseOnWeekType, Day, DayType } from './day.model';\n\n@Injectable()\nexport class DayService implements IExpression {\n private stringService = inject(CronJobService);\n\n dayModel: Day;\n daysList: Array<string> = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n constructor() {\n this.dayModel = new Day();\n }\n\n getExpression(): any {\n let boMonthExp = '';\n let boWeekExp = '';\n if (this.dayModel.type === DayType.Every) {\n boMonthExp = '?';\n boWeekExp = '*';\n } else if (this.dayModel.type === DayType.BOMonth) {\n boWeekExp = '?';\n if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Last) {\n boMonthExp = 'L';\n } else if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Before) {\n const before = this.dayModel.baseOnMonth.before;\n\n boMonthExp = `L-${before}`;\n } else if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Custom) {\n if (this.dayModel.baseOnMonth.custom.repeat.isRepeat) {\n const interval = this.dayModel.baseOnMonth.custom.repeat.interval;\n const startAt = this.dayModel.baseOnMonth.custom.repeat.startAt;\n boMonthExp = `${startAt}/${interval}`;\n }\n if (this.dayModel.baseOnMonth.custom.specific.isSpecefic) {\n const specificValues = this.dayModel.baseOnMonth.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) boMonthExp = this.stringService.addComma(boMonthExp);\n\n boMonthExp = boMonthExp.concat(specificValues.join(','));\n }\n if (boMonthExp === '') boMonthExp = '*';\n }\n } else if (this.dayModel.type === DayType.BOWeek) {\n boMonthExp = '?';\n if (this.dayModel.baseOnWeek.type === BaseOnWeekType.Last) {\n const lastDay = this.dayModel.baseOnWeek.last.day;\n\n boWeekExp = `${lastDay}L`;\n } else if (this.dayModel.baseOnWeek.type === BaseOnWeekType.Custom) {\n if (this.dayModel.baseOnWeek.custom.repeat.isRepeat) {\n const interval = this.dayModel.baseOnWeek.custom.repeat.interval;\n const startAt = this.dayModel.baseOnWeek.custom.repeat.startAt;\n boWeekExp = `${startAt}/${interval}`;\n }\n if (this.dayModel.baseOnWeek.custom.specific.isSpecefic) {\n const specificValues = this.dayModel.baseOnWeek.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) boWeekExp = this.stringService.addComma(boWeekExp);\n\n boWeekExp = boWeekExp.concat(specificValues.join(','));\n }\n if (this.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth) {\n boWeekExp = this.stringService.addComma(boWeekExp);\n\n const day = this.dayModel.baseOnWeek.custom.dayOfMonth.day;\n const xst = this.dayModel.baseOnWeek.custom.dayOfMonth.xst;\n\n boWeekExp = boWeekExp.concat(`${day}#${xst}`);\n }\n if (boWeekExp === '') boWeekExp = '*';\n }\n }\n\n return [boWeekExp, boMonthExp];\n }\n\n expressionValidation(preCronExpressionPattern: string, newCronExpressionPattern: string): string {\n const preCronExpressionPatternArray = preCronExpressionPattern.split(' ');\n const newCronExpressionPatternArray = newCronExpressionPattern.split(' ');\n\n const dayOfWeekRegex: string = this.stringService.getRegexItem(newCronExpressionPattern, RegexItemsIndex.DayOfWeek);\n const dayOfMonthRegex: string = this.stringService.getRegexItem(\n newCronExpressionPattern,\n RegexItemsIndex.DayOfMonth,\n );\n\n const isDayOfWeekChanged =\n preCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] !==\n newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek];\n const isDayOfMonthChanged =\n preCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] !==\n newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth];\n\n const isBasedOnWeek = dayOfWeekRegex !== '*' && dayOfWeekRegex !== '?';\n const isBasedOnMonth = dayOfMonthRegex !== '?';\n\n if (isDayOfWeekChanged && isBasedOnMonth) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] = '?';\n return newCronExpressionPatternArray.join(' ');\n } else if (isDayOfWeekChanged && !isBasedOnWeek) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] = '*';\n return newCronExpressionPatternArray.join(' ');\n }\n\n if (isDayOfMonthChanged && isBasedOnWeek) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] = '?';\n return newCronExpressionPatternArray.join(' ');\n } else if (isDayOfMonthChanged && !isBasedOnMonth) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] = '*';\n return newCronExpressionPatternArray.join(' ');\n }\n\n return newCronExpressionPattern;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.dayModel = new Day();\n const dayOfWeekRegex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.DayOfWeek);\n const dayOfMonthRegex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.DayOfMonth);\n\n const isBasedOnWeek = dayOfWeekRegex !== '*' && dayOfWeekRegex !== '?';\n const isBasedOnMonth = dayOfMonthRegex !== '?';\n const isEveryDay: boolean = !isBasedOnWeek && !isBasedOnMonth;\n if (isEveryDay) {\n this.dayModel.type = DayType.Every;\n return;\n }\n\n if (isBasedOnWeek) {\n this.dayModel.type = DayType.BOWeek;\n this.reversExpressionBasedOnWeek(dayOfWeekRegex);\n return;\n }\n\n if (isBasedOnMonth) {\n this.dayModel.type = DayType.BOMonth;\n this.reversExpressionBasedOnMonth(dayOfMonthRegex);\n return;\n }\n }\n\n reversExpressionBasedOnWeek(regex: string): void {\n // **Regex pattern to check id custom or not**\n const regexPattern = new RegExp('^[0-9]L$');\n const isCustom = !regexPattern.test(regex);\n if (!isCustom) {\n this.dayModel.baseOnWeek.type = BaseOnWeekType.Last;\n this.dayModel.baseOnWeek.last.day = parseInt(regex[0]);\n return;\n }\n\n this.dayModel.baseOnWeek.type = BaseOnWeekType.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.dayModel.baseOnWeek.custom.repeat.isRepeat = true;\n this.dayModel.baseOnWeek.custom.repeat.interval = intervalData?.interval as number;\n this.dayModel.baseOnWeek.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex, this.daysList);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.dayModel.baseOnWeek.custom.specific.isSpecefic = true;\n this.dayModel.baseOnWeek.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const dayOfMonthData = this.stringService.getDayOfMonthCronData(regex);\n const hasDayOfMonthDataItem = dayOfMonthData !== undefined;\n if (hasDayOfMonthDataItem) {\n this.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth = true;\n this.dayModel.baseOnWeek.custom.dayOfMonth.day = dayOfMonthData?.day as number;\n this.dayModel.baseOnWeek.custom.dayOfMonth.xst = dayOfMonthData?.xst as number;\n }\n }\n\n reversExpressionBasedOnMonth(regex: string) {\n const isLastDayOfMonth = regex == 'L';\n if (isLastDayOfMonth) {\n this.dayModel.baseOnMonth.type = BaseOnMonthType.Last;\n return;\n }\n\n // **Regex pattern to check if id before or not**\n const regexPattern = new RegExp('^L-[0-9]+$');\n const isCustom = !regexPattern.test(regex);\n if (!isCustom) {\n this.dayModel.baseOnMonth.type = BaseOnMonthType.Before;\n this.dayModel.baseOnMonth.before = parseInt(regex.substr(2));\n return;\n }\n\n this.dayModel.baseOnMonth.type = BaseOnMonthType.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.dayModel.baseOnMonth.custom.repeat.isRepeat = true;\n this.dayModel.baseOnMonth.custom.repeat.interval = intervalData?.interval as number;\n this.dayModel.baseOnMonth.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex, this.daysList);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.dayModel.baseOnMonth.custom.specific.isSpecefic = true;\n this.dayModel.baseOnMonth.custom.specific.values = specificData as Array<DropDownItem>;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem } from '../types/shared.model';\nimport { BaseOnMonthType, BaseOnWeekType, DayType } from './day.model';\nimport { DayService } from './day.service';\n\n@Component({\n selector: 'ax-cron-day',\n templateUrl: './day.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronDayComponent }],\n})\nexport class AXCronDayComponent {\n protected dayService = inject(DayService);\n\n protected boWeekDropDownList: DropDownItem[] = [];\n protected boMonthDropDownList: DropDownItem[] = [];\n\n protected daysIndexInMonth: number[] = [1, 2, 3, 4, 5];\n protected zeroTo30: number[] = [];\n\n #init = afterNextRender(() => {\n for (const [i, day] of this.daysList.entries()) this.boWeekDropDownList[i] = new DropDownItem(i + 1, day);\n\n for (let i = 0; i < 31; i++) {\n this.zeroTo30[i] = i;\n this.boMonthDropDownList[i] = new DropDownItem(i + 1, (i + 1).toString());\n }\n });\n\n dayChanged = output();\n\n protected inputChange() {\n this.dayChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.dayService.dayModel.baseOnWeek.custom.specific.values = e.component.selectedItems;\n }\n\n protected changeHandler2(e: AXValueChangedEvent) {\n this.dayService.dayModel.baseOnMonth.custom.specific.values = e.component.selectedItems;\n }\n\n protected get daysList(): Array<string> {\n return this.dayService.daysList;\n }\n\n protected get isBoWeek(): boolean {\n return this.dayService.dayModel.type === DayType.BOWeek ? true : false;\n }\n\n protected get isBoMonth(): boolean {\n return this.dayService.dayModel.type === DayType.BOMonth ? true : false;\n }\n\n protected get isBoWeekCustom(): boolean {\n return this.dayService.dayModel.baseOnWeek.type === BaseOnWeekType.Custom ? true : false;\n }\n\n protected get isBoMonthCustom(): boolean {\n return this.dayService.dayModel.baseOnMonth.type === BaseOnMonthType.Custom ? true : false;\n }\n\n protected get isBoMonthBefore(): boolean {\n return this.dayService.dayModel.baseOnMonth.type === BaseOnMonthType.Before ? true : false;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option1\"\n value=\"every\"\n [(ngModel)]=\"dayService.dayModel.type\"\n checked\n />\n <label for=\"option1\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.day' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option2\"\n value=\"boweek\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option2\">{{ '@acorex:scheduler.base-on-week' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"boweek\"\n id=\"boweekLast\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n\n <label for=\"boweekLast\">{{ '@acorex:scheduler.on-the-last' | translate | async }}</label>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.last.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-the-month' | translate | async }}</span>\n </div>\n\n <div>\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n type=\"radio\"\n class=\"ax-radio\"\n name=\"boweek\"\n id=\"boweekCustom\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n <label for=\"boweekCustom\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-week' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth\"\n >\n <ax-label>{{ '@acorex:scheduler.on-the' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysIndexInMonth\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.xst\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-month' | translate | async }}</span>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option3\"\n value=\"bomonth\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option3\">{{ '@acorex:scheduler.base-on-month' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthLast2\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthLast2\">{{ '@acorex:scheduler.on-the-last-day-of-the-month' | translate | async }}</label>\n </div>\n\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n value=\"before\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthBefore\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.before\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.day-before-the-end-of-the-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthCustom2\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthCustom2\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix-of-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"boMonthDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler2($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n </div>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Hours {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Hours } from './hours.model';\n\n@Injectable()\nexport class HoursService implements IExpression {\n private stringService = inject(CronJobService);\n\n hourModel: Hours;\n\n constructor() {\n this.hourModel = new Hours();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.hourModel.type === Type.Every) {\n expression = '*';\n } else if (this.hourModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.hourModel.custom.repeat.isRepeat) {\n const interval = this.hourModel.custom.repeat.interval;\n const startAt = this.hourModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.hourModel.custom.specific.isSpecific) {\n const specificValues = this.hourModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.hourModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.hourModel.custom.between.from;\n const to = this.hourModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.hourModel = new Hours();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Hour);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.hourModel.type = Type.Every;\n return;\n }\n this.hourModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.hourModel.custom.repeat.isRepeat = true;\n this.hourModel.custom.repeat.interval = intervalData?.interval as number;\n this.hourModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.hourModel.custom.specific.isSpecific = true;\n this.hourModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.hourModel.custom.between.isBetween = true;\n this.hourModel.custom.between.from = rangeData?.from as number;\n this.hourModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { HoursService } from './hours.service';\n\n@Component({\n selector: 'ax-cron-hours',\n templateUrl: './hours.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronHoursComponent }],\n})\nexport class AXCronHoursComponent {\n protected hoursService = inject(HoursService);\n\n protected dropdownList: DropDownItem[] = [];\n protected zeroTo23: number[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 24; i++) {\n this.zeroTo23[i] = i;\n this.dropdownList[i] = new DropDownItem(i, i.toString());\n }\n });\n\n hoursChanged = output();\n\n protected inputChange() {\n this.hoursChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.hoursService.hourModel.custom.specific.values = e.component.selectedItems;\n }\n protected get isCustom(): boolean {\n return this.hoursService.hourModel.type === Type.Every ? false : true;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option1hours\"\n value=\"every\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n checked\n />\n <label for=\"option1hours\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option2hours\"\n value=\"custom\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n />\n <label for=\"option2hours\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.hour' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.hour' | translate | async }} </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-hour' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Minutes {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Minutes } from './minutes.model';\n\n@Injectable()\nexport class MinutesService implements IExpression {\n private stringService = inject(CronJobService);\n\n minuteModel: Minutes;\n\n constructor() {\n this.minuteModel = new Minutes();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.minuteModel.type === Type.Every) {\n expression = '*';\n } else if (this.minuteModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.minuteModel.custom.repeat.isRepeat) {\n const interval = this.minuteModel.custom.repeat.interval;\n const startAt = this.minuteModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.minuteModel.custom.specific.isSpecific) {\n const specificValues = this.minuteModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.minuteModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.minuteModel.custom.between.from;\n const to = this.minuteModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.minuteModel = new Minutes();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Minute);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.minuteModel.type = Type.Every;\n return;\n }\n this.minuteModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.minuteModel.custom.repeat.isRepeat = true;\n this.minuteModel.custom.repeat.interval = intervalData?.interval as number;\n this.minuteModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.minuteModel.custom.specific.isSpecific = true;\n this.minuteModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.minuteModel.custom.between.isBetween = true;\n this.minuteModel.custom.between.from = rangeData?.from as number;\n this.minuteModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { MinutesService } from './minutes.service';\n\n@Component({\n selector: 'ax-cron-minutes',\n templateUrl: './minutes.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronMinutesComponent }],\n})\nexport class AXCronMinutesComponent {\n protected minutesService = inject(MinutesService);\n\n protected dropdownList: DropDownItem[] = [];\n\n protected zeroTo59: number[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 60; i++) {\n this.zeroTo59[i] = i;\n this.dropdownList[i] = new DropDownItem(i, i.toString());\n }\n });\n\n minutesChanged = output();\n\n protected inputChange() {\n this.minutesChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.minutesService.minuteModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.minutesService.minuteModel.type === Type.Every ? false : true;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option1minutes\"\n value=\"every\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n checked\n />\n <label for=\"option1minutes\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option2minutes\"\n value=\"custom\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n />\n <label for=\"option2minutes\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.minute' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.minute' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-minute' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Month {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Month } from './month.model';\n\n@Injectable()\nexport class MonthService implements IExpression {\n private stringService = inject(CronJobService);\n\n monthModel: Month;\n monthList: Array<string> = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n constructor() {\n this.monthModel = new Month();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.monthModel.type === Type.Every) {\n expression = '*';\n } else if (this.monthModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.monthModel.custom.repeat.isRepeat) {\n const interval = +this.monthModel.custom.repeat.interval + 1;\n const startAt = this.monthModel.custom.repeat.startAt;\n expression = `${+startAt + 1}/${interval}`;\n }\n //isSpecific\n if (this.monthModel.custom.specific.isSpecific) {\n const specificValues = this.monthModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.monthModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.monthModel.custom.between.from;\n const to = this.monthModel.custom.between.to;\n expression = expression.concat(`${+from + 1}-${+to + 1}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.monthModel = new Month();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Month);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.monthModel.type = Type.Every;\n return;\n }\n this.monthModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.monthModel.custom.repeat.isRepeat = true;\n this.monthModel.custom.repeat.interval = (intervalData?.interval as number) - 1;\n this.monthModel.custom.repeat.startAt = (intervalData?.startAt as number) - 1;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex, this.monthList);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.monthModel.custom.specific.isSpecific = true;\n this.monthModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.monthModel.custom.between.isBetween = true;\n this.monthModel.custom.between.from = (rangeData?.from as number) - 1;\n this.monthModel.custom.between.to = (rangeData?.to as number) - 1;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { MonthService } from './month.service';\n\n@Component({\n selector: 'ax-cron-month',\n templateUrl: './month.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronMonthComponent }],\n})\nexport class AXCronMonthComponent {\n protected monthService = inject(MonthService);\n\n protected dropdownList: DropDownItem[] = [];\n protected dropdownList2: DropDownItem[] = [];\n protected oneTo12: DropDownItem[] = [];\n\n #init = afterNextRender(() => {\n for (const [i, month] of this.monthsList.entries()) {\n this.dropdownList[i] = new DropDownItem(i, month);\n }\n for (const [i, month] of this.monthsList.entries()) {\n this.dropdownList2[i] = new DropDownItem(i + 1, month);\n }\n\n for (let i = 0; i < 12; i++) {\n this.oneTo12[i] = new DropDownItem(i, (i + 1).toString());\n }\n });\n\n monthChanged = output();\n\n protected inputChange() {\n this.monthChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.monthService.monthModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.monthService.monthModel.type === Type.Every ? false : true;\n }\n\n protected get monthsList(): Array<string> {\n return this.monthService.monthList;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option1month\"\n value=\"every\"\n [(ngModel)]=\"monthService.monthModel.type\"\n checked\n />\n <label for=\"option1month\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option2month\"\n value=\"custom\"\n [(ngModel)]=\"monthService.monthModel.type\"\n />\n <label for=\"option2month\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo12\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.month' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.specific.isSpecific\"\n >\n <ax-label> {{ '@acorex:scheduler.specific.month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList2\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-month' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Seconds {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Seconds } from './seconds.model';\n\n@Injectable()\nexport class SecondsService implements IExpression {\n private stringService = inject(CronJobService);\n\n secondModel: Seconds;\n\n constructor() {\n this.secondModel = new Seconds();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.secondModel.type === Type.Every) {\n expression = '*';\n } else if (this.secondModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.secondModel.custom.repeat.isRepeat) {\n const interval = this.secondModel.custom.repeat.interval;\n const startAt = this.secondModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.secondModel.custom.specific.isSpecific) {\n const specificValues = this.secondModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.secondModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.secondModel.custom.between.from;\n const to = this.secondModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.secondModel = new Seconds();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Second);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.secondModel.type = Type.Every;\n return;\n }\n this.secondModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.secondModel.custom.repeat.isRepeat = true;\n this.secondModel.custom.repeat.interval = intervalData?.interval as number;\n this.secondModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.secondModel.custom.specific.isSpecific = true;\n this.secondModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.secondModel.custom.between.isBetween = true;\n this.secondModel.custom.between.from = rangeData?.from as number;\n this.secondModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { SecondsService } from './seconds.service';\n\n@Component({\n selector: 'ax-cron-seconds',\n templateUrl: './seconds.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronSecondsComponent }],\n})\nexport class AXCronSecondsComponent {\n protected secondsService = inject(SecondsService);\n\n secondsChanged = output();\n\n protected dropdownList: DropDownItem[] = [];\n\n protected zeroTo59: number[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 60; i++) {\n this.zeroTo59[i] = i;\n this.dropdownList[i] = new DropDownItem(i, i.toString());\n }\n });\n\n protected inputChange(e?) {\n this.secondsChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.secondsService.secondModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.secondsService.secondModel.type === Type.Every ? false : true;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option1seconds\"\n value=\"every\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n checked\n />\n <label for=\"option1seconds\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option2seconds\"\n value=\"custom\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n />\n <label for=\"option2seconds\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange($event)\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.second' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-second' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Between as sharedBetween, Custom as sharedCustom, Repeat as sharedRepeat, Type } from '../types/shared.model';\n\nexport class Year {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n\nexport class Repeat extends sharedRepeat {\n override startAt = new Date().getFullYear();\n}\n\nexport class Between extends sharedBetween {\n override from = new Date().getFullYear();\n override to = new Date().getFullYear();\n}\n\nexport class Custom extends sharedCustom {\n override repeat = new Repeat();\n override between = new Between();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Year } from './year.model';\n\n@Injectable()\nexport class YearService {\n private stringService = inject(CronJobService);\n\n yearModel: Year;\n\n constructor() {\n this.yearModel = new Year();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.yearModel.type === Type.Every) {\n expression = '*';\n } else if (this.yearModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.yearModel.custom.repeat.isRepeat) {\n const interval = +this.yearModel.custom.repeat.interval + 1;\n const startAt = this.yearModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.yearModel.custom.specific.isSpecific) {\n const specificValues = this.yearModel.custom.specific.values.map((v) => {\n return v.id;\n });\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.yearModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.yearModel.custom.between.from;\n const to = this.yearModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.yearModel = new Year();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Year);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.yearModel.type = Type.Every;\n return;\n }\n this.yearModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.yearModel.custom.repeat.isRepeat = true;\n this.yearModel.custom.repeat.interval = (intervalData?.interval as number) - 1;\n this.yearModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.yearModel.custom.specific.isSpecific = true;\n this.yearModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.yearModel.custom.between.isBetween = true;\n this.yearModel.custom.between.from = rangeData?.from as number;\n this.yearModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { YearService } from './year.service';\n\n@Component({\n selector: 'ax-cron-year',\n templateUrl: './year.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronYearComponent }],\n})\nexport class AXCronYearComponent {\n protected yearService = inject(YearService);\n\n protected dropdownList: DropDownItem[] = [];\n\n protected oneTo100: DropDownItem[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 100; i++) {\n const year = this.getYearByOffset(i);\n this.dropdownList[i] = new DropDownItem(year, year.toString());\n }\n\n for (let i = 0; i < 100; i++) {\n this.oneTo100[i] = new DropDownItem(i, (i + 1).toString());\n }\n });\n\n yearChanged = output();\n\n protected inputChange() {\n this.yearChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.yearService.yearModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.yearService.yearModel.type === Type.Every ? false : true;\n }\n\n protected getYearByOffset(offset: number) {\n const currentYear: number = new Date().getFullYear();\n return currentYear + offset;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option1year\"\n value=\"every\"\n [(ngModel)]=\"yearService.yearModel.type\"\n checked\n />\n <label for=\"option1year\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option2year\"\n value=\"custom\"\n [(ngModel)]=\"yearService.yearModel.type\"\n />\n <label for=\"option2year\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n textField=\"text\"\n valueField=\"id\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo100\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.year' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-year' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { AXComponent, AXValuableComponent, MXInputBaseValueComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport {\n AXTabContentDirective,\n AXTabItemComponent,\n AXTabLocation,\n AXTabLook,\n AXTabsComponent,\n} from '@acorex/components/tabs';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n Component,\n effect,\n forwardRef,\n HostBinding,\n inject,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CronJobService } from '../cron-job.service';\nimport { AXCronDayComponent } from '../day/day.component';\nimport { DayService } from '../day/day.service';\nimport { AXCronHoursComponent } from '../hours/hours.component';\nimport { HoursService } from '../hours/hours.service';\nimport { AXCronMinutesComponent } from '../minutes/minutes.component';\nimport { MinutesService } from '../minutes/minutes.service';\nimport { AXCronMonthComponent } from '../month/month.component';\nimport { MonthService } from '../month/month.service';\nimport { AXCronSecondsComponent } from '../seconds/seconds.component';\nimport { SecondsService } from '../seconds/seconds.service';\nimport { AXCronYearComponent } from '../year/year.component';\nimport { YearService } from '../year/year.service';\n\n@Component({\n selector: 'ax-cron-job-container',\n templateUrl: './cron-job-container.component.html',\n styleUrl: './cron-job-container.component.scss',\n outputs: ['onValueChanged'],\n providers: [\n SecondsService,\n MinutesService,\n HoursService,\n DayService,\n MonthService,\n YearService,\n CronJobService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCronJobContainerComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCronJobContainerComponent },\n { provide: AXValuableComponent, useExisting: AXCronJobContainerComponent },\n ],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n AXTabsComponent,\n AXTabItemComponent,\n AXDecoratorGenericComponent,\n AXCronSecondsComponent,\n AXCronMinutesComponent,\n AXCronHoursComponent,\n AXCronDayComponent,\n AXCronMonthComponent,\n AXCronYearComponent,\n AXTabContentDirective,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n})\nexport class AXCronJobContainerComponent extends MXInputBaseValueComponent<string> {\n protected secondsService = inject(SecondsService);\n protected minutesService = inject(MinutesService);\n protected hoursService = inject(HoursService);\n protected monthService = inject(MonthService);\n protected dayService = inject(DayService);\n protected yearService = inject(YearService);\n protected tabComponent = viewChild(AXTabsComponent);\n protected activeTab = signal('Seconds');\n private onGetModelFired = signal(false);\n\n protected options = signal({\n fit: true,\n look: 'with-line' as AXTabLook,\n location: 'bottom' as AXTabLocation,\n });\n\n #init = effect(() => {\n if (!this.tabComponent()) return;\n this.tabComponent().onActiveTabChanged.subscribe((e) => {\n this.activeTab.set(e.tab.key);\n });\n });\n\n protected onGetModel() {\n this.onGetModelFired.set(true);\n const secondsExp = this.secondsService.getExpression();\n const minutesExp = this.minutesService.getExpression();\n const hoursExp = this.hoursService.getExpression();\n const monthExp = this.monthService.getExpression();\n const dayExp = this.dayService.getExpression();\n const yearExp = this.yearService.getExpression();\n const expResult = `${secondsExp} ${minutesExp} ${hoursExp} ${dayExp[1]} ${monthExp} ${dayExp[0]} ${yearExp}`;\n this.commitValue(expResult, true);\n this.onGetModelFired.set(false);\n }\n\n protected override internalValueChanged(cronExpressionPattern: string): void {\n if (this.onGetModelFired()) return;\n setTimeout(() => {\n this.secondsService.reversExpression(cronExpressionPattern);\n this.minutesService.reversExpression(cronExpressionPattern);\n this.hoursService.reversExpression(cronExpressionPattern);\n this.dayService.reversExpression(cronExpressionPattern);\n this.monthService.reversExpression(cronExpressionPattern);\n this.yearService.reversExpression(cronExpressionPattern);\n });\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n}\n","<ax-tabs [content]=\"cronTab\" [look]=\"options().look\" [fitParent]=\"options().fit\" [location]=\"options().location\">\n <ax-tab-item key=\"Seconds\" [text]=\"'@acorex:dateTime.units.second' | translate | async\">\n <ax-content> <ax-cron-seconds (secondsChanged)=\"onGetModel()\"></ax-cron-seconds></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'@acorex:dateTime.units.minute' | translate | async\">\n <ax-content> <ax-cron-minutes (minutesChanged)=\"onGetModel()\"></ax-cron-minutes></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'@acorex:dateTime.units.hour' | translate | async\">\n <ax-content> <ax-cron-hours (hoursChanged)=\"onGetModel()\"></ax-cron-hours></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'@acorex:dateTime.units.day' | translate | async\">\n <ax-content> <ax-cron-day (dayChanged)=\"onGetModel()\"></ax-cron-day></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'@acorex:dateTime.units.month' | translate | async\">\n <ax-content> <ax-cron-month (monthChanged)=\"onGetModel()\"></ax-cron-month></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'@acorex:dateTime.units.year' | translate | async\">\n <ax-content><ax-cron-year (yearChanged)=\"onGetModel()\"></ax-cron-year></ax-content>\n </ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n <ng-template [axTabContent] #cronTab=\"axTabContent\"> </ng-template>\n</div>\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXCronJobContainerComponent } from './cron-job-container/cron-job-container.component';\nimport { AXCronDayComponent } from './day/day.component';\nimport { AXCronHoursComponent } from './hours/hours.component';\nimport { AXCronMinutesComponent } from './minutes/minutes.component';\nimport { AXCronMonthComponent } from './month/month.component';\nimport { AXCronSecondsComponent } from './seconds/seconds.component';\nimport { AXCronYearComponent } from './year/year.component';\n\nconst COMPONENT = [\n AXCronJobContainerComponent,\n AXCronDayComponent,\n AXCronHoursComponent,\n AXCronMinutesComponent,\n AXCronMonthComponent,\n AXCronSecondsComponent,\n AXCronYearComponent,\n];\n\nconst MODULES = [\n AXTabsModule,\n AXBadgeModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXFormModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXTextBoxModule,\n AXTranslationModule,\n];\n\n@NgModule({\n imports: [...MODULES, AXButtonModule, AXLabelModule, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXCronJobModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Specific","Repeat","Between","Custom","sharedRepeat","sharedBetween","sharedCustom"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-cron-job.mjs","sources":["../../../../packages/components/cron-job/src/lib/cron-job.service.ts","../../../../packages/components/cron-job/src/lib/types/shared.model.ts","../../../../packages/components/cron-job/src/lib/day/day.model.ts","../../../../packages/components/cron-job/src/lib/day/day.service.ts","../../../../packages/components/cron-job/src/lib/day/day.component.ts","../../../../packages/components/cron-job/src/lib/day/day.component.html","../../../../packages/components/cron-job/src/lib/hours/hours.model.ts","../../../../packages/components/cron-job/src/lib/hours/hours.service.ts","../../../../packages/components/cron-job/src/lib/hours/hours.component.ts","../../../../packages/components/cron-job/src/lib/hours/hours.component.html","../../../../packages/components/cron-job/src/lib/minutes/minutes.model.ts","../../../../packages/components/cron-job/src/lib/minutes/minutes.service.ts","../../../../packages/components/cron-job/src/lib/minutes/minutes.component.ts","../../../../packages/components/cron-job/src/lib/minutes/minutes.component.html","../../../../packages/components/cron-job/src/lib/month/month.model.ts","../../../../packages/components/cron-job/src/lib/month/month.service.ts","../../../../packages/components/cron-job/src/lib/month/month.component.ts","../../../../packages/components/cron-job/src/lib/month/month.component.html","../../../../packages/components/cron-job/src/lib/seconds/seconds.model.ts","../../../../packages/components/cron-job/src/lib/seconds/seconds.service.ts","../../../../packages/components/cron-job/src/lib/seconds/seconds.component.ts","../../../../packages/components/cron-job/src/lib/seconds/seconds.component.html","../../../../packages/components/cron-job/src/lib/year/year.model.ts","../../../../packages/components/cron-job/src/lib/year/year.service.ts","../../../../packages/components/cron-job/src/lib/year/year.component.ts","../../../../packages/components/cron-job/src/lib/year/year.component.html","../../../../packages/components/cron-job/src/lib/cron-job-container/cron-job-container.component.ts","../../../../packages/components/cron-job/src/lib/cron-job-container/cron-job-container.component.html","../../../../packages/components/cron-job/src/lib/cron-job.module.ts","../../../../packages/components/cron-job/src/acorex-components-cron-job.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { DropDownItem, RegexItemsIndex } from './types/shared.model';\n\n@Injectable()\nexport class CronJobService {\n public addComma(str: string): string {\n if (str !== '')\n // add , to end of string\n str = str.concat(',');\n\n return str;\n }\n\n getRegexItem(cronExpressionPattern: string, itemIndex: RegexItemsIndex): string {\n const expressionItemsList = cronExpressionPattern.split(' ');\n return expressionItemsList[itemIndex] ? expressionItemsList[itemIndex] : '*';\n }\n\n getIntervalCronData(regex: string): { interval: number; startAt: number } | undefined {\n const regexDataList: Array<string> = regex.split(',');\n const rangePattern = '/';\n const item = regexDataList.find((item) => item.includes(rangePattern));\n\n return item ? { interval: parseInt(item.split('/')[1]), startAt: parseInt(item.split('/')[0]) } : undefined;\n }\n\n getSpecificCronData(regex: string, dropDowndara?: Array<string>): Array<DropDownItem> | undefined {\n const regexDataList: Array<string> = regex.split(',');\n // **Regex pattern to find only digits in an array items.**\n const regexPattern = new RegExp('^[0-9]+$');\n const items = regexDataList.filter((item) => regexPattern.test(item));\n\n return items.length ? this.mapItemsToDropDownItem(items, dropDowndara) : undefined;\n }\n\n getRangeCronData(regex: string): { from: number; to: number } | undefined {\n const regexDataList: Array<string> = regex.split(',');\n const rangePattern = '-';\n const item = regexDataList.find((item) => item.includes(rangePattern));\n return item\n ? { from: parseInt(item.split(rangePattern)[0]), to: parseInt(item.split(rangePattern)[1]) }\n : undefined;\n }\n\n getDayOfMonthCronData(regex: string): { day: number; xst: number } | undefined {\n const regexDataList: Array<string> = regex.split(',');\n const rangePattern = '#';\n const item = regexDataList.find((item) => item.includes(rangePattern));\n return item\n ? { day: parseInt(item.split(rangePattern)[0]), xst: parseInt(item.split(rangePattern)[1]) }\n : undefined;\n }\n\n mapItemsToDropDownItem(items: Array<string>, dropDowndata?: Array<string>): Array<DropDownItem> {\n return items.map((item) => {\n if (dropDowndata) {\n const dropDownItem: string | undefined = dropDowndata[parseInt(item) - 1];\n return dropDownItem ? { id: parseInt(item), text: dropDownItem } : { id: parseInt(item), text: item };\n }\n\n return { id: parseInt(item), text: item };\n });\n }\n}\n","export class Custom {\n specific: Specific = new Specific();\n repeat: Repeat = new Repeat();\n between: Between = new Between();\n}\n\nexport class Repeat {\n isRepeat = false;\n interval = 0;\n startAt = 0;\n}\n\nexport class Specific {\n isSpecific = false;\n values: DropDownItem[] = [];\n}\n\nexport class Between {\n isBetween = false;\n from = 0;\n to = 0;\n}\n\nexport enum Type {\n Every = 'every',\n Custom = 'custom',\n}\n\nexport enum RegexItemsIndex {\n Second = 0,\n Minute = 1,\n Hour = 2,\n DayOfMonth = 3,\n Month = 4,\n DayOfWeek = 5,\n Year = 6,\n}\nexport class DropDownItem {\n constructor(\n public id: number,\n public text: string,\n ) {}\n}\n","import { DropDownItem } from '../types/shared.model';\n\nexport class Day {\n type: DayType = DayType.Every;\n baseOnWeek: BaseOnWeek = new BaseOnWeek();\n baseOnMonth: BaseOnMonth = new BaseOnMonth();\n}\n\nexport class BaseOnMonth {\n type: BaseOnMonthType = BaseOnMonthType.Last;\n custom: BaseOnMonthCustom = new BaseOnMonthCustom();\n before = 1;\n}\n\nexport class BaseOnWeek {\n type: BaseOnWeekType = BaseOnWeekType.Last;\n last: Last = new Last();\n custom: BaseOnWeekCustom = new BaseOnWeekCustom();\n}\n\nexport class BaseOnWeekCustom {\n repeat: BaseOnWeekRepeat = new BaseOnWeekRepeat();\n specific: Specific = new Specific();\n dayOfMonth: DayOfMonth = new DayOfMonth();\n}\n\nexport class BaseOnMonthCustom {\n repeat: BaseOnMonthRepeat = new BaseOnMonthRepeat();\n specific: Specific = new Specific();\n}\n\nexport class Last {\n day = 1;\n}\n\nexport class BaseRepeat {\n isRepeat = false;\n interval = 1;\n}\n\nexport class BaseOnWeekRepeat extends BaseRepeat {\n startAt = 1;\n}\n\nexport class BaseOnMonthRepeat extends BaseRepeat {\n startAt = 1;\n}\n\nexport class Specific {\n isSpecefic = false;\n values: DropDownItem[] = [];\n}\n\nexport class DayOfMonth {\n isDayOfMonth = false;\n xst = 1;\n day = 1;\n}\n\nexport enum DayType {\n Every = 'every',\n BOWeek = 'boweek',\n BOMonth = 'bomonth',\n}\n\nexport enum BaseOnWeekType {\n Last = 'last',\n Custom = 'custom',\n}\n\nexport enum BaseOnMonthType {\n Last = 'last',\n Before = 'before',\n Custom = 'custom',\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex } from '../types/shared.model';\nimport { BaseOnMonthType, BaseOnWeekType, Day, DayType } from './day.model';\n\n@Injectable()\nexport class DayService implements IExpression {\n private stringService = inject(CronJobService);\n\n dayModel: Day;\n daysList: Array<string> = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n constructor() {\n this.dayModel = new Day();\n }\n\n getExpression(): any {\n let boMonthExp = '';\n let boWeekExp = '';\n if (this.dayModel.type === DayType.Every) {\n boMonthExp = '?';\n boWeekExp = '*';\n } else if (this.dayModel.type === DayType.BOMonth) {\n boWeekExp = '?';\n if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Last) {\n boMonthExp = 'L';\n } else if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Before) {\n const before = this.dayModel.baseOnMonth.before;\n\n boMonthExp = `L-${before}`;\n } else if (this.dayModel.baseOnMonth.type === BaseOnMonthType.Custom) {\n if (this.dayModel.baseOnMonth.custom.repeat.isRepeat) {\n const interval = this.dayModel.baseOnMonth.custom.repeat.interval;\n const startAt = this.dayModel.baseOnMonth.custom.repeat.startAt;\n boMonthExp = `${startAt}/${interval}`;\n }\n if (this.dayModel.baseOnMonth.custom.specific.isSpecefic) {\n const specificValues = this.dayModel.baseOnMonth.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) boMonthExp = this.stringService.addComma(boMonthExp);\n\n boMonthExp = boMonthExp.concat(specificValues.join(','));\n }\n if (boMonthExp === '') boMonthExp = '*';\n }\n } else if (this.dayModel.type === DayType.BOWeek) {\n boMonthExp = '?';\n if (this.dayModel.baseOnWeek.type === BaseOnWeekType.Last) {\n const lastDay = this.dayModel.baseOnWeek.last.day;\n\n boWeekExp = `${lastDay}L`;\n } else if (this.dayModel.baseOnWeek.type === BaseOnWeekType.Custom) {\n if (this.dayModel.baseOnWeek.custom.repeat.isRepeat) {\n const interval = this.dayModel.baseOnWeek.custom.repeat.interval;\n const startAt = this.dayModel.baseOnWeek.custom.repeat.startAt;\n boWeekExp = `${startAt}/${interval}`;\n }\n if (this.dayModel.baseOnWeek.custom.specific.isSpecefic) {\n const specificValues = this.dayModel.baseOnWeek.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) boWeekExp = this.stringService.addComma(boWeekExp);\n\n boWeekExp = boWeekExp.concat(specificValues.join(','));\n }\n if (this.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth) {\n boWeekExp = this.stringService.addComma(boWeekExp);\n\n const day = this.dayModel.baseOnWeek.custom.dayOfMonth.day;\n const xst = this.dayModel.baseOnWeek.custom.dayOfMonth.xst;\n\n boWeekExp = boWeekExp.concat(`${day}#${xst}`);\n }\n if (boWeekExp === '') boWeekExp = '*';\n }\n }\n\n return [boWeekExp, boMonthExp];\n }\n\n expressionValidation(preCronExpressionPattern: string, newCronExpressionPattern: string): string {\n const preCronExpressionPatternArray = preCronExpressionPattern.split(' ');\n const newCronExpressionPatternArray = newCronExpressionPattern.split(' ');\n\n const dayOfWeekRegex: string = this.stringService.getRegexItem(newCronExpressionPattern, RegexItemsIndex.DayOfWeek);\n const dayOfMonthRegex: string = this.stringService.getRegexItem(\n newCronExpressionPattern,\n RegexItemsIndex.DayOfMonth,\n );\n\n const isDayOfWeekChanged =\n preCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] !==\n newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek];\n const isDayOfMonthChanged =\n preCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] !==\n newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth];\n\n const isBasedOnWeek = dayOfWeekRegex !== '*' && dayOfWeekRegex !== '?';\n const isBasedOnMonth = dayOfMonthRegex !== '?';\n\n if (isDayOfWeekChanged && isBasedOnMonth) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] = '?';\n return newCronExpressionPatternArray.join(' ');\n } else if (isDayOfWeekChanged && !isBasedOnWeek) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfMonth] = '*';\n return newCronExpressionPatternArray.join(' ');\n }\n\n if (isDayOfMonthChanged && isBasedOnWeek) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] = '?';\n return newCronExpressionPatternArray.join(' ');\n } else if (isDayOfMonthChanged && !isBasedOnMonth) {\n newCronExpressionPatternArray[RegexItemsIndex.DayOfWeek] = '*';\n return newCronExpressionPatternArray.join(' ');\n }\n\n return newCronExpressionPattern;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.dayModel = new Day();\n const dayOfWeekRegex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.DayOfWeek);\n const dayOfMonthRegex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.DayOfMonth);\n\n const isBasedOnWeek = dayOfWeekRegex !== '*' && dayOfWeekRegex !== '?';\n const isBasedOnMonth = dayOfMonthRegex !== '?';\n const isEveryDay: boolean = !isBasedOnWeek && !isBasedOnMonth;\n if (isEveryDay) {\n this.dayModel.type = DayType.Every;\n return;\n }\n\n if (isBasedOnWeek) {\n this.dayModel.type = DayType.BOWeek;\n this.reversExpressionBasedOnWeek(dayOfWeekRegex);\n return;\n }\n\n if (isBasedOnMonth) {\n this.dayModel.type = DayType.BOMonth;\n this.reversExpressionBasedOnMonth(dayOfMonthRegex);\n return;\n }\n }\n\n reversExpressionBasedOnWeek(regex: string): void {\n // **Regex pattern to check id custom or not**\n const regexPattern = new RegExp('^[0-9]L$');\n const isCustom = !regexPattern.test(regex);\n if (!isCustom) {\n this.dayModel.baseOnWeek.type = BaseOnWeekType.Last;\n this.dayModel.baseOnWeek.last.day = parseInt(regex[0]);\n return;\n }\n\n this.dayModel.baseOnWeek.type = BaseOnWeekType.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.dayModel.baseOnWeek.custom.repeat.isRepeat = true;\n this.dayModel.baseOnWeek.custom.repeat.interval = intervalData?.interval as number;\n this.dayModel.baseOnWeek.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex, this.daysList);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.dayModel.baseOnWeek.custom.specific.isSpecefic = true;\n this.dayModel.baseOnWeek.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const dayOfMonthData = this.stringService.getDayOfMonthCronData(regex);\n const hasDayOfMonthDataItem = dayOfMonthData !== undefined;\n if (hasDayOfMonthDataItem) {\n this.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth = true;\n this.dayModel.baseOnWeek.custom.dayOfMonth.day = dayOfMonthData?.day as number;\n this.dayModel.baseOnWeek.custom.dayOfMonth.xst = dayOfMonthData?.xst as number;\n }\n }\n\n reversExpressionBasedOnMonth(regex: string) {\n const isLastDayOfMonth = regex == 'L';\n if (isLastDayOfMonth) {\n this.dayModel.baseOnMonth.type = BaseOnMonthType.Last;\n return;\n }\n\n // **Regex pattern to check if id before or not**\n const regexPattern = new RegExp('^L-[0-9]+$');\n const isCustom = !regexPattern.test(regex);\n if (!isCustom) {\n this.dayModel.baseOnMonth.type = BaseOnMonthType.Before;\n this.dayModel.baseOnMonth.before = parseInt(regex.substr(2));\n return;\n }\n\n this.dayModel.baseOnMonth.type = BaseOnMonthType.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.dayModel.baseOnMonth.custom.repeat.isRepeat = true;\n this.dayModel.baseOnMonth.custom.repeat.interval = intervalData?.interval as number;\n this.dayModel.baseOnMonth.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex, this.daysList);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.dayModel.baseOnMonth.custom.specific.isSpecefic = true;\n this.dayModel.baseOnMonth.custom.specific.values = specificData as Array<DropDownItem>;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem } from '../types/shared.model';\nimport { BaseOnMonthType, BaseOnWeekType, DayType } from './day.model';\nimport { DayService } from './day.service';\n\n@Component({\n selector: 'ax-cron-day',\n templateUrl: './day.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronDayComponent }],\n})\nexport class AXCronDayComponent {\n protected dayService = inject(DayService);\n\n protected boWeekDropDownList: DropDownItem[] = [];\n protected boMonthDropDownList: DropDownItem[] = [];\n\n protected daysIndexInMonth: number[] = [1, 2, 3, 4, 5];\n protected zeroTo30: number[] = [];\n\n #init = afterNextRender(() => {\n for (const [i, day] of this.daysList.entries()) this.boWeekDropDownList[i] = new DropDownItem(i + 1, day);\n\n for (let i = 0; i < 31; i++) {\n this.zeroTo30[i] = i;\n this.boMonthDropDownList[i] = new DropDownItem(i + 1, (i + 1).toString());\n }\n });\n\n dayChanged = output();\n\n protected inputChange() {\n this.dayChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.dayService.dayModel.baseOnWeek.custom.specific.values = e.component.selectedItems;\n }\n\n protected changeHandler2(e: AXValueChangedEvent) {\n this.dayService.dayModel.baseOnMonth.custom.specific.values = e.component.selectedItems;\n }\n\n protected get daysList(): Array<string> {\n return this.dayService.daysList;\n }\n\n protected get isBoWeek(): boolean {\n return this.dayService.dayModel.type === DayType.BOWeek ? true : false;\n }\n\n protected get isBoMonth(): boolean {\n return this.dayService.dayModel.type === DayType.BOMonth ? true : false;\n }\n\n protected get isBoWeekCustom(): boolean {\n return this.dayService.dayModel.baseOnWeek.type === BaseOnWeekType.Custom ? true : false;\n }\n\n protected get isBoMonthCustom(): boolean {\n return this.dayService.dayModel.baseOnMonth.type === BaseOnMonthType.Custom ? true : false;\n }\n\n protected get isBoMonthBefore(): boolean {\n return this.dayService.dayModel.baseOnMonth.type === BaseOnMonthType.Before ? true : false;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option1\"\n value=\"every\"\n [(ngModel)]=\"dayService.dayModel.type\"\n checked\n />\n <label for=\"option1\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.day' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option2\"\n value=\"boweek\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option2\">{{ '@acorex:scheduler.base-on-week' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"boweek\"\n id=\"boweekLast\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n\n <label for=\"boweekLast\">{{ '@acorex:scheduler.on-the-last' | translate | async }}</label>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.last.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-the-month' | translate | async }}</span>\n </div>\n\n <div>\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n type=\"radio\"\n class=\"ax-radio\"\n name=\"boweek\"\n id=\"boweekCustom\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.type\"\n [disabled]=\"!isBoWeek\"\n />\n <label for=\"boweekCustom\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-week' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.isDayOfMonth\"\n >\n <ax-label>{{ '@acorex:scheduler.on-the' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"daysIndexInMonth\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.xst\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoWeek || !isBoWeekCustom\"\n [dataSource]=\"boWeekDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnWeek.custom.dayOfMonth.day\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.of-month' | translate | async }}</span>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"option\"\n id=\"option3\"\n value=\"bomonth\"\n [(ngModel)]=\"dayService.dayModel.type\"\n />\n <label for=\"option3\">{{ '@acorex:scheduler.base-on-month' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthLast2\"\n value=\"last\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthLast2\">{{ '@acorex:scheduler.on-the-last-day-of-the-month' | translate | async }}</label>\n </div>\n\n <div class=\"ax-week-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n value=\"before\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthBefore\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.before\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.day-before-the-end-of-the-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"bomonth\"\n id=\"bomonthCustom2\"\n value=\"custom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.type\"\n [disabled]=\"!isBoMonth\"\n />\n <label for=\"bomonthCustom2\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n </div>\n\n <div class=\"ax-block-container\">\n <div class=\"ax-week-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.day' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"zeroTo30\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.ordinal-suffix-of-month' | translate | async }}</span>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [(ngModel)]=\"dayService.dayModel.baseOnMonth.custom.specific.isSpecefic\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.day-of-month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isBoMonth || !isBoMonthCustom\"\n [dataSource]=\"boMonthDropDownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-day' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler2($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n </div>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Hours {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Hours } from './hours.model';\n\n@Injectable()\nexport class HoursService implements IExpression {\n private stringService = inject(CronJobService);\n\n hourModel: Hours;\n\n constructor() {\n this.hourModel = new Hours();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.hourModel.type === Type.Every) {\n expression = '*';\n } else if (this.hourModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.hourModel.custom.repeat.isRepeat) {\n const interval = this.hourModel.custom.repeat.interval;\n const startAt = this.hourModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.hourModel.custom.specific.isSpecific) {\n const specificValues = this.hourModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.hourModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.hourModel.custom.between.from;\n const to = this.hourModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.hourModel = new Hours();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Hour);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.hourModel.type = Type.Every;\n return;\n }\n this.hourModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.hourModel.custom.repeat.isRepeat = true;\n this.hourModel.custom.repeat.interval = intervalData?.interval as number;\n this.hourModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.hourModel.custom.specific.isSpecific = true;\n this.hourModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.hourModel.custom.between.isBetween = true;\n this.hourModel.custom.between.from = rangeData?.from as number;\n this.hourModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { HoursService } from './hours.service';\n\n@Component({\n selector: 'ax-cron-hours',\n templateUrl: './hours.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronHoursComponent }],\n})\nexport class AXCronHoursComponent {\n protected hoursService = inject(HoursService);\n\n protected dropdownList: DropDownItem[] = [];\n protected zeroTo23: number[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 24; i++) {\n this.zeroTo23[i] = i;\n this.dropdownList[i] = new DropDownItem(i, i.toString());\n }\n });\n\n hoursChanged = output();\n\n protected inputChange() {\n this.hoursChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.hoursService.hourModel.custom.specific.values = e.component.selectedItems;\n }\n protected get isCustom(): boolean {\n return this.hoursService.hourModel.type === Type.Every ? false : true;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option1hours\"\n value=\"every\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n checked\n />\n <label for=\"option1hours\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyHours\"\n id=\"option2hours\"\n value=\"custom\"\n [(ngModel)]=\"hoursService.hourModel.type\"\n />\n <label for=\"option2hours\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.hour' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.hour' | translate | async }} </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-hour' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.hour' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo23\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"hoursService.hourModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Minutes {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Minutes } from './minutes.model';\n\n@Injectable()\nexport class MinutesService implements IExpression {\n private stringService = inject(CronJobService);\n\n minuteModel: Minutes;\n\n constructor() {\n this.minuteModel = new Minutes();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.minuteModel.type === Type.Every) {\n expression = '*';\n } else if (this.minuteModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.minuteModel.custom.repeat.isRepeat) {\n const interval = this.minuteModel.custom.repeat.interval;\n const startAt = this.minuteModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.minuteModel.custom.specific.isSpecific) {\n const specificValues = this.minuteModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.minuteModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.minuteModel.custom.between.from;\n const to = this.minuteModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.minuteModel = new Minutes();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Minute);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.minuteModel.type = Type.Every;\n return;\n }\n this.minuteModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.minuteModel.custom.repeat.isRepeat = true;\n this.minuteModel.custom.repeat.interval = intervalData?.interval as number;\n this.minuteModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.minuteModel.custom.specific.isSpecific = true;\n this.minuteModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.minuteModel.custom.between.isBetween = true;\n this.minuteModel.custom.between.from = rangeData?.from as number;\n this.minuteModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { MinutesService } from './minutes.service';\n\n@Component({\n selector: 'ax-cron-minutes',\n templateUrl: './minutes.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronMinutesComponent }],\n})\nexport class AXCronMinutesComponent {\n protected minutesService = inject(MinutesService);\n\n protected dropdownList: DropDownItem[] = [];\n\n protected zeroTo59: number[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 60; i++) {\n this.zeroTo59[i] = i;\n this.dropdownList[i] = new DropDownItem(i, i.toString());\n }\n });\n\n minutesChanged = output();\n\n protected inputChange() {\n this.minutesChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.minutesService.minuteModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.minutesService.minuteModel.type === Type.Every ? false : true;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option1minutes\"\n value=\"every\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n checked\n />\n <label for=\"option1minutes\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMinutes\"\n id=\"option2minutes\"\n value=\"custom\"\n [(ngModel)]=\"minutesService.minuteModel.type\"\n />\n <label for=\"option2minutes\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.minute' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.specific.isSpecific\"\n >\n <ax-label>{{ '@acorex:scheduler.specific.minute' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-minute' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.minute' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"minutesService.minuteModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Month {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Month } from './month.model';\n\n@Injectable()\nexport class MonthService implements IExpression {\n private stringService = inject(CronJobService);\n\n monthModel: Month;\n monthList: Array<string> = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n constructor() {\n this.monthModel = new Month();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.monthModel.type === Type.Every) {\n expression = '*';\n } else if (this.monthModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.monthModel.custom.repeat.isRepeat) {\n const interval = +this.monthModel.custom.repeat.interval + 1;\n const startAt = this.monthModel.custom.repeat.startAt;\n expression = `${+startAt + 1}/${interval}`;\n }\n //isSpecific\n if (this.monthModel.custom.specific.isSpecific) {\n const specificValues = this.monthModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.monthModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.monthModel.custom.between.from;\n const to = this.monthModel.custom.between.to;\n expression = expression.concat(`${+from + 1}-${+to + 1}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.monthModel = new Month();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Month);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.monthModel.type = Type.Every;\n return;\n }\n this.monthModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.monthModel.custom.repeat.isRepeat = true;\n this.monthModel.custom.repeat.interval = (intervalData?.interval as number) - 1;\n this.monthModel.custom.repeat.startAt = (intervalData?.startAt as number) - 1;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex, this.monthList);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.monthModel.custom.specific.isSpecific = true;\n this.monthModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.monthModel.custom.between.isBetween = true;\n this.monthModel.custom.between.from = (rangeData?.from as number) - 1;\n this.monthModel.custom.between.to = (rangeData?.to as number) - 1;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { MonthService } from './month.service';\n\n@Component({\n selector: 'ax-cron-month',\n templateUrl: './month.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronMonthComponent }],\n})\nexport class AXCronMonthComponent {\n protected monthService = inject(MonthService);\n\n protected dropdownList: DropDownItem[] = [];\n protected dropdownList2: DropDownItem[] = [];\n protected oneTo12: DropDownItem[] = [];\n\n #init = afterNextRender(() => {\n for (const [i, month] of this.monthsList.entries()) {\n this.dropdownList[i] = new DropDownItem(i, month);\n }\n for (const [i, month] of this.monthsList.entries()) {\n this.dropdownList2[i] = new DropDownItem(i + 1, month);\n }\n\n for (let i = 0; i < 12; i++) {\n this.oneTo12[i] = new DropDownItem(i, (i + 1).toString());\n }\n });\n\n monthChanged = output();\n\n protected inputChange() {\n this.monthChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.monthService.monthModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.monthService.monthModel.type === Type.Every ? false : true;\n }\n\n protected get monthsList(): Array<string> {\n return this.monthService.monthList;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option1month\"\n value=\"every\"\n [(ngModel)]=\"monthService.monthModel.type\"\n checked\n />\n <label for=\"option1month\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everyMonth\"\n id=\"option2month\"\n value=\"custom\"\n [(ngModel)]=\"monthService.monthModel.type\"\n />\n <label for=\"option2month\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo12\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.month' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.specific.isSpecific\"\n >\n <ax-label> {{ '@acorex:scheduler.specific.month' | translate | async }}</ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList2\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-month' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"monthService.monthModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.month' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"monthService.monthModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Custom, Type } from '../types/shared.model';\n\nexport class Seconds {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { IExpression } from '../types/iexpression';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Seconds } from './seconds.model';\n\n@Injectable()\nexport class SecondsService implements IExpression {\n private stringService = inject(CronJobService);\n\n secondModel: Seconds;\n\n constructor() {\n this.secondModel = new Seconds();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.secondModel.type === Type.Every) {\n expression = '*';\n } else if (this.secondModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.secondModel.custom.repeat.isRepeat) {\n const interval = this.secondModel.custom.repeat.interval;\n const startAt = this.secondModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.secondModel.custom.specific.isSpecific) {\n const specificValues = this.secondModel.custom.specific.values.map((v) => {\n return v.id;\n });\n\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.secondModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.secondModel.custom.between.from;\n const to = this.secondModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.secondModel = new Seconds();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Second);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.secondModel.type = Type.Every;\n return;\n }\n this.secondModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.secondModel.custom.repeat.isRepeat = true;\n this.secondModel.custom.repeat.interval = intervalData?.interval as number;\n this.secondModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.secondModel.custom.specific.isSpecific = true;\n this.secondModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.secondModel.custom.between.isBetween = true;\n this.secondModel.custom.between.from = rangeData?.from as number;\n this.secondModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { SecondsService } from './seconds.service';\n\n@Component({\n selector: 'ax-cron-seconds',\n templateUrl: './seconds.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronSecondsComponent }],\n})\nexport class AXCronSecondsComponent {\n protected secondsService = inject(SecondsService);\n\n secondsChanged = output();\n\n protected dropdownList: DropDownItem[] = [];\n\n protected zeroTo59: number[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 60; i++) {\n this.zeroTo59[i] = i;\n this.dropdownList[i] = new DropDownItem(i, i.toString());\n }\n });\n\n protected inputChange(e?) {\n this.secondsChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.secondsService.secondModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.secondsService.secondModel.type === Type.Every ? false : true;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option1seconds\"\n value=\"every\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n checked\n />\n <label for=\"option1seconds\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n (change)=\"inputChange()\"\n class=\"ax-radio\"\n type=\"radio\"\n name=\"everySeconds\"\n id=\"option2seconds\"\n value=\"custom\"\n [(ngModel)]=\"secondsService.secondModel.type\"\n />\n <label for=\"option2seconds\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange($event)\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.second' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-second' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.second' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"zeroTo59\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"secondsService.secondModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { Between as sharedBetween, Custom as sharedCustom, Repeat as sharedRepeat, Type } from '../types/shared.model';\n\nexport class Year {\n type: Type = Type.Every;\n custom: Custom = new Custom();\n}\n\nexport class Repeat extends sharedRepeat {\n override startAt = new Date().getFullYear();\n}\n\nexport class Between extends sharedBetween {\n override from = new Date().getFullYear();\n override to = new Date().getFullYear();\n}\n\nexport class Custom extends sharedCustom {\n override repeat = new Repeat();\n override between = new Between();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { CronJobService } from '../cron-job.service';\nimport { DropDownItem, RegexItemsIndex, Type } from '../types/shared.model';\nimport { Year } from './year.model';\n\n@Injectable()\nexport class YearService {\n private stringService = inject(CronJobService);\n\n yearModel: Year;\n\n constructor() {\n this.yearModel = new Year();\n }\n\n getExpression(): string {\n let expression = '';\n if (this.yearModel.type === Type.Every) {\n expression = '*';\n } else if (this.yearModel.type === Type.Custom) {\n //type is custom\n //isRepeat\n if (this.yearModel.custom.repeat.isRepeat) {\n const interval = +this.yearModel.custom.repeat.interval + 1;\n const startAt = this.yearModel.custom.repeat.startAt;\n expression = `${startAt}/${interval}`;\n }\n //isSpecific\n if (this.yearModel.custom.specific.isSpecific) {\n const specificValues = this.yearModel.custom.specific.values.map((v) => {\n return v.id;\n });\n if (specificValues.length !== 0) expression = this.stringService.addComma(expression);\n expression = expression.concat(specificValues.join(','));\n }\n //isBetween\n if (this.yearModel.custom.between.isBetween) {\n expression = this.stringService.addComma(expression);\n\n const from = this.yearModel.custom.between.from;\n const to = this.yearModel.custom.between.to;\n expression = expression.concat(`${from}-${to}`);\n }\n\n if (expression === '') expression = '*';\n }\n\n return expression;\n }\n\n reversExpression(cronExpressionPattern: string): void {\n this.yearModel = new Year();\n const regex: string = this.stringService.getRegexItem(cronExpressionPattern, RegexItemsIndex.Year);\n\n const isCustom: boolean = regex !== '*';\n if (!isCustom) {\n this.yearModel.type = Type.Every;\n return;\n }\n this.yearModel.type = Type.Custom;\n\n const intervalData = this.stringService.getIntervalCronData(regex);\n const hasIntervalItems = intervalData !== undefined;\n if (hasIntervalItems) {\n this.yearModel.custom.repeat.isRepeat = true;\n this.yearModel.custom.repeat.interval = (intervalData?.interval as number) - 1;\n this.yearModel.custom.repeat.startAt = intervalData?.startAt as number;\n }\n\n const specificData = this.stringService.getSpecificCronData(regex);\n const hasSpecificItems = specificData !== undefined;\n if (hasSpecificItems) {\n this.yearModel.custom.specific.isSpecific = true;\n this.yearModel.custom.specific.values = specificData as Array<DropDownItem>;\n }\n\n const rangeData = this.stringService.getRangeCronData(regex);\n const hasRangeItem = rangeData !== undefined;\n if (hasRangeItem) {\n this.yearModel.custom.between.isBetween = true;\n this.yearModel.custom.between.from = rangeData?.from as number;\n this.yearModel.custom.between.to = rangeData?.to as number;\n }\n }\n}\n","import { AXComponent, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXDecoratorClearButtonComponent } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormFieldComponent } from '@acorex/components/form';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownItem, Type } from '../types/shared.model';\nimport { YearService } from './year.service';\n\n@Component({\n selector: 'ax-cron-year',\n templateUrl: './year.component.html',\n styleUrls: ['../cron-job.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n FormsModule,\n AXCheckBoxComponent,\n AXLabelComponent,\n AXFormComponent,\n AXFormFieldComponent,\n AXSelectBoxComponent,\n AXDecoratorClearButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCronYearComponent }],\n})\nexport class AXCronYearComponent {\n protected yearService = inject(YearService);\n\n protected dropdownList: DropDownItem[] = [];\n\n protected oneTo100: DropDownItem[] = [];\n\n #init = afterNextRender(() => {\n for (let i = 0; i < 100; i++) {\n const year = this.getYearByOffset(i);\n this.dropdownList[i] = new DropDownItem(year, year.toString());\n }\n\n for (let i = 0; i < 100; i++) {\n this.oneTo100[i] = new DropDownItem(i, (i + 1).toString());\n }\n });\n\n yearChanged = output();\n\n protected inputChange() {\n this.yearChanged.emit();\n }\n\n protected changeHandler(e: AXValueChangedEvent) {\n this.yearService.yearModel.custom.specific.values = e.component.selectedItems;\n }\n\n protected get isCustom(): boolean {\n return this.yearService.yearModel.type === Type.Every ? false : true;\n }\n\n protected getYearByOffset(offset: number) {\n const currentYear: number = new Date().getFullYear();\n return currentYear + offset;\n }\n}\n","<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option1year\"\n value=\"every\"\n [(ngModel)]=\"yearService.yearModel.type\"\n checked\n />\n <label for=\"option1year\">\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </label>\n</div>\n\n<div class=\"ax-radio-container\">\n <input\n class=\"ax-radio\"\n (change)=\"inputChange()\"\n type=\"radio\"\n name=\"everyYear\"\n id=\"option2year\"\n value=\"custom\"\n [(ngModel)]=\"yearService.yearModel.type\"\n />\n <label for=\"option2year\">{{ '@acorex:common.general.custom' | translate | async }}</label>\n</div>\n\n<div class=\"ax-block-container\">\n <div class=\"ax-every-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.isRepeat\"\n >\n <ax-label>{{ '@acorex:common.general.every' | translate | async }}</ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n textField=\"text\"\n valueField=\"id\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"oneTo100\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.interval\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:scheduler.starting-at.year' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.repeat.startAt\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-specific-container\">\n <div class=\"ax-flex-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.specific.isSpecific\"\n >\n <ax-label>\n {{ '@acorex:scheduler.specific.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n\n <ax-form>\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [placeholder]=\"'@acorex:scheduler.time-units.select-year' | translate | async\"\n [multiple]=\"true\"\n (onValueChanged)=\"changeHandler($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n\n <div class=\"ax-between-container\">\n <ax-check-box\n (valueChange)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [(ngModel)]=\"yearService.yearModel.custom.between.isBetween\"\n >\n <ax-label>\n {{ '@acorex:common.general.every' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n {{ '@acorex:common.general.between' | translate | async }}\n {{ '@acorex:dateTime.units.year' | translate | async }}\n </ax-label>\n </ax-check-box>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.from\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n\n <span>{{ '@acorex:common.general.and' | translate | async }}</span>\n\n <ax-form class=\"ax-sm\">\n <ax-form-field>\n <ax-select-box\n (onClosed)=\"inputChange()\"\n [disabled]=\"!isCustom\"\n [dataSource]=\"dropdownList\"\n textField=\"text\"\n valueField=\"id\"\n [(ngModel)]=\"yearService.yearModel.custom.between.to\"\n >\n </ax-select-box>\n </ax-form-field>\n </ax-form>\n </div>\n</div>\n","import { AXComponent, AXValuableComponent, MXInputBaseValueComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport {\n AXTabContentDirective,\n AXTabItemComponent,\n AXTabLocation,\n AXTabLook,\n AXTabsComponent,\n} from '@acorex/components/tabs';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n Component,\n effect,\n forwardRef,\n HostBinding,\n inject,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CronJobService } from '../cron-job.service';\nimport { AXCronDayComponent } from '../day/day.component';\nimport { DayService } from '../day/day.service';\nimport { AXCronHoursComponent } from '../hours/hours.component';\nimport { HoursService } from '../hours/hours.service';\nimport { AXCronMinutesComponent } from '../minutes/minutes.component';\nimport { MinutesService } from '../minutes/minutes.service';\nimport { AXCronMonthComponent } from '../month/month.component';\nimport { MonthService } from '../month/month.service';\nimport { AXCronSecondsComponent } from '../seconds/seconds.component';\nimport { SecondsService } from '../seconds/seconds.service';\nimport { AXCronYearComponent } from '../year/year.component';\nimport { YearService } from '../year/year.service';\n\n@Component({\n selector: 'ax-cron-job-container',\n templateUrl: './cron-job-container.component.html',\n styleUrl: './cron-job-container.component.scss',\n outputs: ['onValueChanged'],\n providers: [\n SecondsService,\n MinutesService,\n HoursService,\n DayService,\n MonthService,\n YearService,\n CronJobService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCronJobContainerComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCronJobContainerComponent },\n { provide: AXValuableComponent, useExisting: AXCronJobContainerComponent },\n ],\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n AXTabsComponent,\n AXTabItemComponent,\n AXDecoratorGenericComponent,\n AXCronSecondsComponent,\n AXCronMinutesComponent,\n AXCronHoursComponent,\n AXCronDayComponent,\n AXCronMonthComponent,\n AXCronYearComponent,\n AXTabContentDirective,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n})\nexport class AXCronJobContainerComponent extends MXInputBaseValueComponent<string> {\n protected secondsService = inject(SecondsService);\n protected minutesService = inject(MinutesService);\n protected hoursService = inject(HoursService);\n protected monthService = inject(MonthService);\n protected dayService = inject(DayService);\n protected yearService = inject(YearService);\n protected tabComponent = viewChild(AXTabsComponent);\n protected activeTab = signal('Seconds');\n private onGetModelFired = signal(false);\n\n protected options = signal({\n fit: true,\n look: 'with-line' as AXTabLook,\n location: 'bottom' as AXTabLocation,\n });\n\n #init = effect(() => {\n if (!this.tabComponent()) return;\n this.tabComponent().onActiveTabChanged.subscribe((e) => {\n this.activeTab.set(e.tab.key);\n });\n });\n\n protected onGetModel() {\n this.onGetModelFired.set(true);\n const secondsExp = this.secondsService.getExpression();\n const minutesExp = this.minutesService.getExpression();\n const hoursExp = this.hoursService.getExpression();\n const monthExp = this.monthService.getExpression();\n const dayExp = this.dayService.getExpression();\n const yearExp = this.yearService.getExpression();\n const expResult = `${secondsExp} ${minutesExp} ${hoursExp} ${dayExp[1]} ${monthExp} ${dayExp[0]} ${yearExp}`;\n this.commitValue(expResult, true);\n this.onGetModelFired.set(false);\n }\n\n protected override internalValueChanged(cronExpressionPattern: string): void {\n if (this.onGetModelFired()) return;\n setTimeout(() => {\n this.secondsService.reversExpression(cronExpressionPattern);\n this.minutesService.reversExpression(cronExpressionPattern);\n this.hoursService.reversExpression(cronExpressionPattern);\n this.dayService.reversExpression(cronExpressionPattern);\n this.monthService.reversExpression(cronExpressionPattern);\n this.yearService.reversExpression(cronExpressionPattern);\n });\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n}\n","<ax-tabs [content]=\"cronTab\" [look]=\"options().look\" [fitParent]=\"options().fit\" [location]=\"options().location\">\n <ax-tab-item key=\"Seconds\" [text]=\"'@acorex:dateTime.units.second' | translate | async\">\n <ax-content> <ax-cron-seconds (secondsChanged)=\"onGetModel()\"></ax-cron-seconds></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'@acorex:dateTime.units.minute' | translate | async\">\n <ax-content> <ax-cron-minutes (minutesChanged)=\"onGetModel()\"></ax-cron-minutes></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'@acorex:dateTime.units.hour' | translate | async\">\n <ax-content> <ax-cron-hours (hoursChanged)=\"onGetModel()\"></ax-cron-hours></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'@acorex:dateTime.units.day' | translate | async\">\n <ax-content> <ax-cron-day (dayChanged)=\"onGetModel()\"></ax-cron-day></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'@acorex:dateTime.units.month' | translate | async\">\n <ax-content> <ax-cron-month (monthChanged)=\"onGetModel()\"></ax-cron-month></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'@acorex:dateTime.units.year' | translate | async\">\n <ax-content><ax-cron-year (yearChanged)=\"onGetModel()\"></ax-cron-year></ax-content>\n </ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n <ng-template [axTabContent] #cronTab=\"axTabContent\"> </ng-template>\n</div>\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXCronJobContainerComponent } from './cron-job-container/cron-job-container.component';\nimport { AXCronDayComponent } from './day/day.component';\nimport { AXCronHoursComponent } from './hours/hours.component';\nimport { AXCronMinutesComponent } from './minutes/minutes.component';\nimport { AXCronMonthComponent } from './month/month.component';\nimport { AXCronSecondsComponent } from './seconds/seconds.component';\nimport { AXCronYearComponent } from './year/year.component';\n\nconst COMPONENT = [\n AXCronJobContainerComponent,\n AXCronDayComponent,\n AXCronHoursComponent,\n AXCronMinutesComponent,\n AXCronMonthComponent,\n AXCronSecondsComponent,\n AXCronYearComponent,\n];\n\nconst MODULES = [\n AXTabsModule,\n AXBadgeModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXFormModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXTextBoxModule,\n AXTranslationModule,\n];\n\n@NgModule({\n imports: [...MODULES, AXButtonModule, AXLabelModule, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXCronJobModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Specific","Repeat","Between","Custom","sharedRepeat","sharedBetween","sharedCustom"],"mappings":"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"}