Esempio n. 1
0
 public AutomaticJobContext(ChannelProgramData channelProgramData, ChannelData channelData)
 {
     ChannelProgramData = channelProgramData;
     Name                  = channelData.Name;
     ChannelId             = channelData.ChannelId;
     HumiditySensorEnabled = channelData.HumiditySensorEnabled;
     HumiditySensor        = channelData.HumiditySensor;
 }
Esempio n. 2
0
        private static bool IsInvalid(ChannelProgramData data)
        {
            if (ChannelProgramData.Weekdays.None == (ChannelProgramData.Weekdays.None & data.ChoosenWeekdays))
            {
                return(true);
            }

            if (data.Duration == TimeSpan.Zero)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        public ChannelProgrammPage(ChannelProgramData channelProgram, ChannelPage parentChannelPage, bool isMasterChannel) : base("div")
        {
            const int labelSize = 235;

            _channelProgram    = channelProgram;
            _parentChannelPage = parentChannelPage;

            #region Initialize Grid

            Grid grid = new Grid(this);
            grid.AddStyling(StylingOption.MarginRight, 2);
            grid.AddStyling(StylingOption.MarginLeft, 2);
            grid.AddStyling(StylingOption.MarginTop, 2);
            grid.AddStyling(StylingOption.MarginBottom, 2);

            #endregion Initialize Grid

            #region TextInputGroup ProgrammName

            _programmNameInputGroup = new TextInputGroup("ProgrammName", "N/A", labelSize, centeredText: true);
            _programmNameInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _programmNameInputGroup.TextInput.Value = channelProgram.Name;
            _deleteProgrammButton        = new MyOoui.HtmlElements.Button(StylingColor.Danger, asOutline: true, text: "Programm Löschen", fontAwesomeIcon: "trash");
            _deleteProgrammButton.Click += DeleteProgrammButtonOnClick;
            _programmNameInputGroup.AddFormElement(_deleteProgrammButton);
            grid.AddRow().AppendCollum(_programmNameInputGroup);

            #endregion TextInputGroup ProgrammName

            #region InputGroup > TwoStateButtonGroup ProgrammStatus

            MultiInputGroup programmEnabledMultiInputGroup = new MultiInputGroup();
            programmEnabledMultiInputGroup.AppendLabel("Programmstatus", labelSize);
            programmEnabledMultiInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _programmEnabled = programmEnabledMultiInputGroup.AppendCustomElement(new TwoStateButtonGroup("Aktiv", "Inaktiv", channelProgram.Enabled, !channelProgram.Enabled), false);
            grid.AddRow().AppendCollum(programmEnabledMultiInputGroup, autoSize: true);

            #endregion InputGroup > TwoStateButtonGroup ProgrammStatus

            #region TextInputGroup StartZeit

            _startTimeInputGroup = new TextInputGroup("StartZeit", "N/A", labelSize, "", "Das angegebene Zeitformat passt nicht. Bitte Zeiten im Format  hh:mm:ss  angeben.");
            _startTimeInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _startTimeInputGroup.TextInput.Value = channelProgram.StartTime.ToString();
            grid.AddRow().AppendCollum(_startTimeInputGroup);

            #endregion TextInputGroup StartZeit

            #region TextInputGroup Dauer

            _durationInputGroup = new TextInputGroup("Dauer", "N/A", labelSize, "", "Das angegebene Zeitformat passt nicht. Bitte Zeiten im Format  hh:mm:ss  angeben.");
            _durationInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _durationInputGroup.TextInput.Value = channelProgram.Duration.ToString();
            grid.AddRow().AppendCollum(_durationInputGroup);

            #endregion TextInputGroup Dauer

            #region Row Declaration

            Row downRow = new Row();
            grid.AddRow().AppendCollum(downRow);
            Row weekDaysRow = new Row();
            downRow.AppendCollum(weekDaysRow, sizing: 4);
            Row otherRow = new Row();
            downRow.AppendCollum(otherRow, sizing: 8);

            #endregion Row Declaration

            #region Weekdays

            _weekdaysMoMiFrRadioButtonLabeledInputGroup = new RadioButtonLabeledInputGroup(GetCheckedWeekdays(channelProgram.ChoosenWeekdays) == 1, "Mo, Mi, Fr");
            //_weekdaysMoMiFrRadioButtonLabeledInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _weekdaysMoMiFrRadioButtonLabeledInputGroup.AddStyling(StylingOption.MarginLeft, 2);
            weekDaysRow.AppendCollum(_weekdaysMoMiFrRadioButtonLabeledInputGroup);
            weekDaysRow.AddNewLine();

            _weekdaysDiDoRadioButtonLabeledInputGroup = new RadioButtonLabeledInputGroup(GetCheckedWeekdays(channelProgram.ChoosenWeekdays) == 2, "Di, Do", _weekdaysMoMiFrRadioButtonLabeledInputGroup.RadioButtonGroupName);
            //_weekdaysDiDoRadioButtonLabeledInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _weekdaysDiDoRadioButtonLabeledInputGroup.AddStyling(StylingOption.MarginLeft, 2);
            weekDaysRow.AppendCollum(_weekdaysDiDoRadioButtonLabeledInputGroup);
            weekDaysRow.AddNewLine();

            _weekdaysSaSoRadioButtonLabeledInputGroup = new RadioButtonLabeledInputGroup(GetCheckedWeekdays(channelProgram.ChoosenWeekdays) == 3, "Sa, So", _weekdaysMoMiFrRadioButtonLabeledInputGroup.RadioButtonGroupName);
            //_weekdaysSaSoRadioButtonLabeledInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _weekdaysSaSoRadioButtonLabeledInputGroup.AddStyling(StylingOption.MarginLeft, 2);
            weekDaysRow.AppendCollum(_weekdaysSaSoRadioButtonLabeledInputGroup);
            weekDaysRow.AddNewLine();

            _weekdaysChoosenToggleButtonGroup = new ToggleButtonGroup(StylingColor.Primary, StylingColor.Secondary);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("Mo", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Montag) == ChannelProgramData.Weekdays.Montag);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("Di", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Dienstag) == ChannelProgramData.Weekdays.Dienstag);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("Mi", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Mittwoch) == ChannelProgramData.Weekdays.Mittwoch);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("Do", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Donnerstag) == ChannelProgramData.Weekdays.Donnerstag);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("Fr", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Freitag) == ChannelProgramData.Weekdays.Freitag);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("Sa", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Samstag) == ChannelProgramData.Weekdays.Samstag);
            _weekdaysChoosenToggleButtonGroup.AddToggleButton("So", (channelProgram.ChoosenWeekdays & ChannelProgramData.Weekdays.Sonntag) == ChannelProgramData.Weekdays.Sonntag);
            _weekDaysChoosenRadioButtonInputGroup = new RadioButtonInputGroup(GetCheckedWeekdays(channelProgram.ChoosenWeekdays) == 4, _weekdaysChoosenToggleButtonGroup, _weekdaysMoMiFrRadioButtonLabeledInputGroup.RadioButtonGroupName, false);
            _weekDaysChoosenRadioButtonInputGroup.AddStyling(StylingOption.MarginLeft, 2);
            grid.AddRow().AppendCollum(_weekDaysChoosenRadioButtonInputGroup, autoSize: true);

            #endregion Weekdays

            #region InputGroup > TwoStateButtonGroup WetterInfos

            MultiInputGroup weatherEnabledMultiInputGroup = new MultiInputGroup();
            weatherEnabledMultiInputGroup.AppendLabel("WetterInfos verwenden", labelSize);
            weatherEnabledMultiInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _weatherInfo = weatherEnabledMultiInputGroup.AppendCustomElement(new TwoStateButtonGroup("Aktiv", "Inaktiv", channelProgram.ActivateWeatherInfo, !channelProgram.ActivateWeatherInfo), false);
            otherRow.AppendCollum(weatherEnabledMultiInputGroup, autoSize: true);

            #endregion InputGroup > TwoStateButtonGroup WetterInfos

            otherRow.AddNewLine();

            #region InputGroup > TwoStateButtonGroup Master Kanal

            MultiInputGroup activateMasterMultiInputGroup = new MultiInputGroup();
            activateMasterMultiInputGroup.AppendLabel("Master Kanal auch Einschalten", labelSize);
            _activateMasterChannel = activateMasterMultiInputGroup.AppendCustomElement(new TwoStateButtonGroup("Aktiv", "Inaktiv", channelProgram.EnableMasterChannel, !channelProgram.EnableMasterChannel), false);
            otherRow.AppendCollum(activateMasterMultiInputGroup, autoSize: true);

            #endregion InputGroup > TwoStateButtonGroup Master Kanal

            #region TextAreaInputGroup Notizen

            _descriptionInputGroup = new TextAreaInputGroup("Notizen", "", labelSize);
            _descriptionInputGroup.AddStyling(StylingOption.MarginBottom, 2);
            _descriptionInputGroup.AddStyling(StylingOption.MarginTop, 2);
            _descriptionInputGroup.TextArea.Value = channelProgram.Description;
            grid.AddRow().AppendCollum(_descriptionInputGroup);

            #endregion TextAreaInputGroup Notizen

            if (isMasterChannel)
            {
                _activateMasterChannel.IsDisabled = true;
            }
        }
Esempio n. 4
0
        public ChannelPage(ChannelData channel, ChannelsPage parentChannelsPage, bool isMasterChannel) : base("div")
        {
            _channel            = channel;
            _parentChannelsPage = parentChannelsPage;
            _isMasterChannel    = isMasterChannel;
            SetBorder(BorderKind.Rounded, StylingColor.Secondary);

            #region Initialize Grid

            Grid grid = new Grid(this);
            grid.AddStyling(StylingOption.MarginRight, 2);
            grid.AddStyling(StylingOption.MarginLeft, 2);
            grid.AddStyling(StylingOption.MarginTop, 4);
            grid.AddStyling(StylingOption.MarginBottom, 2);

            #endregion Initialize Grid

            #region TextInputGroup ProgrammName

            MultiInputGroup channelNameMultiInputGroup = new MultiInputGroup();
            channelNameMultiInputGroup.AppendLabel("Kanal:");
            channelNameMultiInputGroup.AppendLabel(channel.ChannelId.ToString());
            channelNameMultiInputGroup.AppendLabel("  Name:");
            _channelNameTextInput = channelNameMultiInputGroup.AppendTextInput("Kanalname?", true, channel.Name);

            channelNameMultiInputGroup.AddStyling(StylingOption.MarginBottom, 2);

            if (!isMasterChannel)
            {
                _deleteChannelButton        = new Button(StylingColor.Danger, asOutline: true, text: "Kanal Löschen", fontAwesomeIcon: "trash");
                _deleteChannelButton.Click += DeleteChannelButtonOnClick;
                channelNameMultiInputGroup.AppendCustomElement(_deleteChannelButton, false);
            }
            else
            {
                _channelNameTextInput.IsDisabled = true;
            }
            grid.AddRow().AppendCollum(channelNameMultiInputGroup);

            #endregion TextInputGroup ProgrammName

            #region add TabNavigate

            _tabNavigation = new TabNavigation(true, true);
            _tabNavigation.AddButton.Click += (sender, args) =>
            {
                ChannelProgramData channelProgramData = ChannelProgramData.CreateNew(channel.ProgramList.Count > 0 ? channel.ProgramList.Max(data => int.TryParse(data.Name, out int parsedInt) ? parsedInt : 1) + 1 : 1);
                channel.ProgramList.Add(channelProgramData);
                ChannelProgrammPage channelProgrammPage = new ChannelProgrammPage(channelProgramData, this, isMasterChannel);
                _channelProgrammPages.Add(channelProgrammPage);
                _tabDictionary.Add(channelProgramData, _tabNavigation.AddTab(channelProgramData.Id.ToString(), channelProgrammPage, channelProgramData.Id == 1));
            };
            grid.AddRow().AppendCollum(_tabNavigation);

            #endregion add TabNavigate

            #region add ChannelProgrammPages

            foreach (ChannelProgramData channelProgramData in channel.ProgramList)
            {
                ChannelProgrammPage channelProgrammPage = new ChannelProgrammPage(channelProgramData, this, isMasterChannel);
                _channelProgrammPages.Add(channelProgrammPage);
                _tabDictionary.Add(channelProgramData, _tabNavigation.AddTab(channelProgramData.Id.ToString(), channelProgrammPage, channelProgramData.Id == channel.ProgramList.First().Id));
                ApplyName(channelProgramData);
            }

            #endregion add ChannelProgrammPages

            #region AddHumiditySensor

            AddHumiditySensor(channel, grid);

            _humiditySensorDropdown.Button.IsDisabled            = _isMasterChannel;
            _humiditySensorEnabledTwoStateButtonGroup.IsDisabled = _isMasterChannel;

            #endregion AddHumiditySensor

            #region SaveChannel Button

            Button saveButton = new Button(StylingColor.Success, true, Button.ButtonSize.Normal, false, "Speichern", fontAwesomeIcon: "save");
            saveButton.AddStyling(StylingOption.MarginTop, 4);
            saveButton.AddStyling(StylingOption.MarginLeft, 4);
            saveButton.AddStyling(StylingOption.MarginBottom, 1);
            saveButton.AddStyling(StylingOption.PaddingLeft, 5);
            saveButton.AddStyling(StylingOption.PaddingRight, 5);
            saveButton.Click += SaveButton_Click;
            grid.AddRow().AppendCollum(saveButton);

            #endregion SaveChannel Button
        }
Esempio n. 5
0
 public void RemoveProgramm(ChannelProgrammPage channelProgrammPage, ChannelProgramData channelProgram)
 {
     _channelProgrammPages.Remove(channelProgrammPage);
     _channel.ProgramList.Remove(channelProgram);
     _tabNavigation.RemoveTab(channelProgram.Id.ToString(), channelProgrammPage);
 }
Esempio n. 6
0
 public void ApplyName(ChannelProgramData channelProgram)
 {
     _tabDictionary[channelProgram].Text = channelProgram.Name.Substring(0, Math.Min(channelProgram.Name.Length, 20));
 }