private void MakeNewImages()
        {
            if (LimitPresenter == null)
            {
                return;
            }

            _calcImage = LimitPresenter.TmpCalcImage;
            _selectedTemperatureProfile = LimitPresenter.PreviewTemperatureProfile;
            _geographicLocation         = LimitPresenter.PreviewGeographicLocation;
            if (LimitPresenter.ThisTimeLimit.RootEntry == null)
            {
                throw new LPGException("root entry was null");
            }
            _rootEntry = LimitPresenter.ThisTimeLimit.RootEntry;
            _household = LimitPresenter.PreviewHousehold;
            TimeLimitPresenter p = null;

            if (Dispatcher == null || Thread.CurrentThread == Dispatcher.Thread)
            {
                p = LimitPresenter;
            }

            var t = new Thread(() => UpdatePictures(p));

            t.Start();
        }
Ejemplo n.º 2
0
        public PermissionLinePresenter([NotNull] Simulator sim, [NotNull] PermissionLine permissionLine,
                                       [NotNull] TimeLimitEntry timeEntry,
                                       double leftMargin, bool isMinusVisible)
        {
            _sim            = sim;
            _permissionLine = permissionLine;
            Entry           = timeEntry;
            _leftMargin     = leftMargin;
            Logger.Info("Margin: " + _leftMargin);
            _isMinusVisible = isMinusVisible;
            PermissionModes = new ObservableCollection <PermissionTuple> {
                new PermissionTuple(PermissionMode.EveryXDay, "Every x days"),
                new PermissionTuple(PermissionMode.EveryWorkday, "Every work day"),
                new PermissionTuple(PermissionMode.EveryXWeeks, "Every x weeks"),
                new PermissionTuple(PermissionMode.EveryXMonths, "Every x months"),
                new PermissionTuple(PermissionMode.Yearly, "Yearly"),
                new PermissionTuple(PermissionMode.EveryDateRange, "In a certain date range"),
                new PermissionTuple(PermissionMode.Temperature, "at certain temperatures"),
                new PermissionTuple(PermissionMode.LightControlled, "At certain light conditions"),
                new PermissionTuple(PermissionMode.ControlledByDateProfile,
                                    "At values from a date based profile"),
                new PermissionTuple(PermissionMode.VacationControlled, "vacation controlled"),
                new PermissionTuple(PermissionMode.HolidayControlled, "holiday controlled")
            };
            AndOrList = new ObservableCollection <AnyAllTimeLimitCondition>();
            foreach (var value in Enum.GetValues(typeof(AnyAllTimeLimitCondition)))
            {
                AndOrList.Add((AnyAllTimeLimitCondition)value);
            }

            SetSelectedPermissionModel(Entry);
        }
        private static void TagOfficeJob([NotNull] TimeLimitEntry timeLimitEntry, [NotNull] HouseholdTrait newTrait)
        {
            var livingTags = newTrait.Tags.Where(x => x.Tag.Name.Contains("Living Pattern / Office Job")).ToList();

            if (livingTags.Count != 1)
            {
                throw new LPGException("More than one living pattern");
            }
            newTrait.DeleteHHTTag(livingTags[0]);
            if (timeLimitEntry.Tag == null)
            {
                throw new LPGException("Tag was null");
            }
            newTrait.AddTag(timeLimitEntry.Tag);
        }
        public void SetOneRow([CanBeNull] TimeLimitEntry dtbe)
        {
            if (dtbe == null)
            {
                return;
            }

            if (LimitPresenter?.ThisTimeLimit.RootEntry == null)
            {
                return;
            }

            if (dtbe == LimitPresenter.ThisTimeLimit.RootEntry)
            {
                _rowForPermissionLine = 0;
            }

            var foundEntry = false;

            foreach (var permissionLine in PermissionLines)
            {
                if (permissionLine.TimeLimitEntry == dtbe)
                {
                    Grid.SetRow(permissionLine, _rowForPermissionLine);
                    _rowForPermissionLine++;
                    permissionLine.Presenter.LeftMargin = TimeLimitEntry.GetLevel(dtbe) * 10;
                    foundEntry = true;
                }
            }

            if (!foundEntry)
            {
                throw new LPGException("there is a row missing in the display");
            }

            foreach (var timeLimitEntry in dtbe.Subentries)
            {
                SetOneRow(timeLimitEntry);
            }

            if (BoolGrid.RowDefinitions.Count < _rowForPermissionLine)
            {
                BoolGrid.RowDefinitions.Add(new RowDefinition());
            }
        }
        private static void TagAlarms([NotNull] Simulator sim, [NotNull] TimeLimitEntry timeLimitEntry, [NotNull] HouseholdTrait newTrait)
        {
            var livingTags = newTrait.Tags.Where(x => x.Tag.Name.Contains("Living Pattern")).ToList();

            foreach (HHTTag livingTag in livingTags)
            {
                newTrait.DeleteHHTTag(livingTag);
            }

            TimeSpan        endTime = timeLimitEntry.BeginTime;
            List <TraitTag> tags    = new List <TraitTag>
            {
                GetTraitTagByName(sim, "Living Pattern / Part Time Job"),
                GetTraitTagByName(sim, "Living Pattern / Retiree"),
                GetTraitTagByName(sim, "Living Pattern / Stay at Home / Regular"),
                GetTraitTagByName(sim, "Living Pattern / Two Shift Work"),
                GetTraitTagByName(sim, "Living Pattern / University / Student Independent"),
                GetTraitTagByName(sim, "Living Pattern / University / Student Living at Home")
            };

            if (endTime.Hours <= 7)
            {
                tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Early (5-7am)"));
                tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Medium (7-9am)"));
                tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Late (9-11am)"));
            }
            else if (endTime.Hours <= 8)
            {
                tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Medium (7-9am)"));
                tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Late (9-11am)"));
            }
            else
            {
                tags.Add(GetTraitTagByName(sim, "Living Pattern / Office Job / Late (9-11am)"));
            }
            foreach (TraitTag tag in tags)
            {
                if (tag == null)
                {
                    throw new LPGException("Tag not found");
                }
                newTrait.AddTag(tag);
            }
        }
        public void TimeLimitEntryTests1()
        {
            using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass()))
            {
                db.ClearTable(TimeLimit.TableName);
                db.ClearTable(TimeLimitEntry.TableName);
                var temperaturProfiles = db.LoadTemperatureProfiles();
                var timeLimits         = new ObservableCollection <TimeLimit>();
                var dateBasedProfiles  = db.LoadDateBasedProfiles();
                TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false);
                var geographicLocations = db.LoadGeographicLocations(out var holidays,
                                                                     timeLimits);
                (timeLimits.Count).Should().Be(0);
                var startTime = new DateTime(1900, 1, 1, 6, 0, 0);
                var endTime   = new DateTime(1900, 1, 1, 10, 0, 0);
                var dt        = new TimeLimitEntry(null, -1, startTime, endTime, PermissionMode.EveryWorkday, 1, 1, true,
                                                   true, true, true, true, true, true, 1, 1, 1, 1, 1, -100, 100, true, false, null,
                                                   AnyAllTimeLimitCondition.Any, startTime, endTime, null, 0, 0, false, false, false, false, 5, false,
                                                   dateBasedProfiles, db.ConnectionString, 0,
                                                   0, 0, Guid.NewGuid().ToStrGuid());
                var stepsize   = new TimeSpan(1, 0, 0);
                var arraystart = new DateTime(2013, 12, 28, 5, 0, 0);
                var arrayend   = new DateTime(2014, 1, 3, 9, 0, 0);
                geographicLocations[0].AddHoliday(holidays[0]);
                geographicLocations[0].AddHoliday(holidays[1]);
                geographicLocations[0].Holidays.Count.Should().BeGreaterThan(1);
                Logger.Info("Holidays:" + geographicLocations[0].Holidays.Count);
                var r          = new Random();
                var timeframes = new List <VacationTimeframe>();
                var br         = dt.GetOneYearArray(stepsize, arraystart, arrayend, temperaturProfiles[0],
                                                    geographicLocations[0], r, timeframes, "test", out _, 0, 0, 0, 0);
                var curr = arraystart;
                for (var i = 0; i < br.Length; i++)
                {
                    Logger.Info(curr.ToLongDateString() + " " + curr.ToShortTimeString() + " :" + br[i]);
                    curr = curr.Add(stepsize);
                }

                db.Cleanup();
            }
        }
        public void PermissionLineOnShowPreviewClicked([CanBeNull] object sender, [CanBeNull] EventArgs e)
        {
            if (LimitPresenter == null)
            {
                return;
            }

            if (e == null)
            {
                return;
            }

            var aca = (AddClickedEventArgs)e;

            _timeLimitEntry = aca.TimeLimitEntry;
            if (ImageShort.ActualHeight > LimitPresenter.ImageHeight &&
                Math.Abs(ImageShort.ActualHeight) > 0.00001)
            {
                LimitPresenter.ImageHeight = ImageShort.ActualHeight;
            }

            MakeNewImages();
        }
 public AddClickedEventArgs([NotNull] TimeLimitEntry tle) => TimeLimitEntry = tle;