Beispiel #1
0
        private AyCalendar CreateAyCalendar()
        {
            if (DateRuleObjects.disabledDates.IsNotNull() && DateRuleObjects.disabledDates.Count > 0)
            {
                if (DisabledDatesStrings == null)
                {
                    DisabledDatesStrings = new List <string>();
                }
                else
                {
                    DisabledDatesStrings.Clear();
                }

                foreach (var disabledDate in DateRuleObjects.disabledDates)
                {
                    var    _ti = AyCalendarService.hasTeShu(disabledDate);
                    string _2  = disabledDate;
                    if (_ti)
                    {
                        _2 = AyDateStrictExpression.ConvertDynamicAyDateExpression(disabledDate);
                        if (!DisabledDatesStrings.Contains(_2))
                        {
                            DisabledDatesStrings.Add(_2);
                        }
                    }
                    else
                    {
                        if (!DisabledDatesStrings.Contains(_2))
                        {
                            DisabledDatesStrings.Add(_2);
                        }
                    }
                }
            }
            else
            {
                DisabledDatesStrings = null;
            }
            List <string> SpecialDatesStrings = null;

            if (DateRuleObjects.specialDates.IsNotNull() && DateRuleObjects.specialDates.Count > 0)
            {
                if (SpecialDatesStrings == null)
                {
                    SpecialDatesStrings = new List <string>();
                }
                foreach (var specialDates in DateRuleObjects.specialDates)
                {
                    var    _ti = AyCalendarService.hasTeShu(specialDates);
                    string _2  = specialDates;
                    if (_ti)
                    {
                        _2 = AyDateStrictExpression.ConvertDynamicAyDateExpression(specialDates);
                        if (!SpecialDatesStrings.Contains(_2))
                        {
                            SpecialDatesStrings.Add(_2);
                        }
                    }
                    else
                    {
                        if (!SpecialDatesStrings.Contains(_2))
                        {
                            SpecialDatesStrings.Add(_2);
                        }
                    }
                }
            }


            AyCalendar ac = new AyCalendar(DateRule);

            ac.BorderBrush           = Brushes.Transparent;
            ac.MinDateReferToElement = this.MinDateReferToElement;
            ac.MaxDateReferToElement = this.MaxDateReferToElement;
            ac.DisabledDatesStrings  = this.DisabledDatesStrings;
            ac.SpecialDatesStrings   = SpecialDatesStrings;
            ac.DateBoxInput          = this;
            ac.HorizontalAlignment   = HorizontalAlignment.Center;
            ac.VerticalAlignment     = VerticalAlignment.Center;
            DateTime?date = ReverseDateTimeFromText(ac);

            if (date.HasValue)
            {
                ac.SelectedDateTime = date;
            }
            return(ac);
        }
Beispiel #2
0
        internal void FilterDatePickerItem(AyDatePickerItem item)
        {
            if (firstInitMinMax)
            {
                var _1 = AyCalendarService.FilterDatePickerItem(DateRuleObjects, MinDateReferToElement, MaxDateReferToElement);
                MinDateCopy     = _1.Item1;
                MaxDateCopy     = _1.Item2;
                firstInitMinMax = false;
            }
            if (item.IsNotNull())
            {
                if (MinDateCopy.Count > 0)
                {
                    foreach (var subitem in MinDateCopy)
                    {
                        if (subitem.HasValue && item.Date < subitem.Value.Date)
                        {
                            item.IsEnabled = false;
                            break;
                        }
                    }
                }
                if (MaxDateCopy.Count > 0)
                {
                    foreach (var subitem in MaxDateCopy)
                    {
                        if (subitem.HasValue && item.Date > subitem.Value.Date)
                        {
                            item.IsEnabled = false;
                            break;
                        }
                    }
                }

                //周几限制
                if (DateRuleObjects.IsNotNull())
                {
                    if (DateRuleObjects.disabledDays.IsNotNull() && DateRuleObjects.disabledDays.Count > 0)
                    {
                        var _1 = item.Date.DayOfWeek.GetHashCode();
                        foreach (var disabledDay in DateRuleObjects.disabledDays)
                        {
                            if (_1 == disabledDay)
                            {
                                item.IsEnabled = false;
                                break;
                            }
                        }
                    }

                    //限制disabledDate
                    var _validateItemResult = AyCalendarService.ValidateRegexDate(item.Date, this.DisabledDatesStrings, DateRuleObjects.opposite);
                    if (!_validateItemResult)
                    {
                        item.IsEnabled = false;
                    }


                    //高亮日和高亮日期
                    if (DateRuleObjects.specialDays.IsNotNull() && DateRuleObjects.specialDays.Count > 0)
                    {
                        var _1 = item.Date.DayOfWeek.GetHashCode();
                        foreach (var specialDay in DateRuleObjects.specialDays)
                        {
                            if (_1 == specialDay)
                            {
                                item.IsHighlight = true;
                                break;
                            }
                        }
                    }

                    if (SpecialDatesStrings.IsNotNull() && SpecialDatesStrings.Count > 0)
                    {
                        foreach (var SpecialDates in SpecialDatesStrings)
                        {
                            bool vaResult = false;
                            if (SpecialDates.IndexOf(":") > -1)
                            {
                                string[] _01 = item.Date.ToString("yyyy-MM-dd HH:mm:ss").Split(' ');
                                string[] _02 = SpecialDates.Split(' ');
                                vaResult = System.Text.RegularExpressions.Regex.IsMatch(_01[0] + " " + _02[1], SpecialDates);
                            }
                            else
                            {
                                vaResult = System.Text.RegularExpressions.Regex.IsMatch(item.Date.ToString("yyyy-MM-dd"), SpecialDates);
                            }
                            if (vaResult)
                            {
                                item.IsHighlight = true;
                                break;
                            }
                        }
                    }
                }
            }
        }