Ejemplo n.º 1
0
        //private ModelEnergyProperties ModelEnergyProperties { get; set; }
        public Dialog_IdealAirLoad(ref HoneybeeSchema.ModelEnergyProperties libSource, IdealAirSystemAbridged hvac = default, bool lockedMode = false)
        {
            var sys = hvac ?? new IdealAirSystemAbridged($"IdealAirSystem_{Guid.NewGuid().ToString().Substring(0, 8)}");
            var vm  = new IdealAirLoadViewModel(libSource, sys, this);

            //Padding = new Padding(4);
            Title       = $"Ideal Air Load - {DialogHelper.PluginName}";
            WindowStyle = WindowStyle.Default;
            Width       = 450;
            this.Icon   = DialogHelper.HoneybeeIcon;

            var layout = new DynamicLayout()
            {
                DataContext = vm
            };

            layout.DefaultSpacing = new Size(4, 4);
            layout.Padding        = new Padding(10);


            // string displayName = null,
            // EconomizerType economizerType = EconomizerType.DifferentialDryBulb,
            // bool demandControlledVentilation = false,
            // double sensibleHeatRecovery = 0,
            // double latentHeatRecovery = 0,
            // double heatingAirTemperature = 50,
            // double coolingAirTemperature = 13,
            // AnyOf<Autosize, NoLimit, double> heatingLimit = null,
            // AnyOf<Autosize, NoLimit, double> coolingLimit = null,
            // string heatingAvailability = null,
            // string coolingAvailability

            var nameText   = new TextBox();
            var economizer = new DropDown();
            var DCV        = new CheckBox()
            {
                Text = "Demand Controlled Ventilation"
            };

            var sensible = new NumericStepper()
            {
                MinValue = 0, MaxValue = 1, MaximumDecimalPlaces = 2, Increment = 0.1
            };
            var latent = new NumericStepper()
            {
                MinValue = 0, MaxValue = 1, MaximumDecimalPlaces = 2, Increment = 0.1
            };

            var heatingAirT = new NumericStepper()
            {
                MinValue = -50, MaxValue = 100, MaximumDecimalPlaces = 2
            };
            var coolingAirT = new NumericStepper()
            {
                MinValue = -50, MaxValue = 100, MaximumDecimalPlaces = 2
            };

            var heatingLimitAuto = new RadioButton()
            {
                Text = "Autosize"
            };
            var heatingLimitNoLimit = new RadioButton()
            {
                Text = "No Limit"
            };
            var heatingLimitNumber = new RadioButton();
            var heatingLimit       = new NumericStepper();

            var coolingLimitAuto = new RadioButton()
            {
                Text = "Autosize"
            };
            var coolingLimitNoLimit = new RadioButton()
            {
                Text = "No Limit"
            };
            var coolingLimitNumber = new RadioButton();
            var coolingLimit       = new NumericStepper();

            var heatingAvailability = new OptionalButton();

            heatingAvailability.TextBinding.Bind(vm, _ => _.HeatingAvaliabilitySchedule.BtnName);
            heatingAvailability.Bind(_ => _.Command, vm, _ => _.HeatingAvaliabilityCommand);
            heatingAvailability.Bind(_ => _.RemoveCommand, vm, _ => _.RemoveHeatingAvaliabilityCommand);
            heatingAvailability.Bind(_ => _.IsRemoveVisable, vm, _ => _.HeatingAvaliabilitySchedule.IsRemoveVisable);

            var coolingAvailability = new OptionalButton();

            coolingAvailability.TextBinding.Bind(vm, _ => _.CoolingAvaliabilitySchedule.BtnName);
            coolingAvailability.Bind(_ => _.Command, vm, _ => _.CoolingAvaliabilityCommand);
            coolingAvailability.Bind(_ => _.RemoveCommand, vm, _ => _.RemoveCoolingAvaliabilityCommand);
            coolingAvailability.Bind(_ => _.IsRemoveVisable, vm, _ => _.CoolingAvaliabilitySchedule.IsRemoveVisable);


            nameText.TextBinding.BindDataContext((IdealAirLoadViewModel m) => m.Name);

            economizer.BindDataContext(c => c.DataStore, (IdealAirLoadViewModel m) => m.Economizers);
            economizer.SelectedKeyBinding.BindDataContext((IdealAirLoadViewModel m) => m.Economizer);

            DCV.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.DCV);

            sensible.BindDataContext(c => c.Value, (IdealAirLoadViewModel m) => m.SensibleHR);
            latent.BindDataContext(c => c.Value, (IdealAirLoadViewModel m) => m.LatentHR);

            heatingAirT.BindDataContext(c => c.Value, (IdealAirLoadViewModel m) => m.HeatingAirTemperature);
            coolingAirT.BindDataContext(c => c.Value, (IdealAirLoadViewModel m) => m.CoolingAirTemperature);

            heatingLimitAuto.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.HeatingLimitAutosized);
            heatingLimitNoLimit.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.HeatingLimitNoLimit);
            heatingLimitNumber.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.HeatingLimitNumber);
            heatingLimit.BindDataContext(c => c.Value, (IdealAirLoadViewModel m) => m.HeatingLimit);
            heatingLimit.BindDataContext(c => c.Enabled, (IdealAirLoadViewModel m) => m.HeatingLimitNumber);

            coolingLimitAuto.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.CoolingLimitAutosized);
            coolingLimitNoLimit.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.CoolingLimitNoLimit);
            coolingLimitNumber.BindDataContext(c => c.Checked, (IdealAirLoadViewModel m) => m.CoolingLimitNumber);
            coolingLimit.BindDataContext(c => c.Value, (IdealAirLoadViewModel m) => m.CoolingLimit);
            coolingLimit.BindDataContext(c => c.Enabled, (IdealAirLoadViewModel m) => m.CoolingLimitNumber);

            layout.AddRow("Name:");
            layout.AddRow(nameText);
            layout.AddRow("Economizer:");
            layout.AddRow(economizer);
            layout.AddSeparateRow(DCV);
            layout.AddRow("Sensible Heat Recovery: [0-1]");
            layout.AddRow(sensible);
            layout.AddRow("Latent Heat Recovery: [0-1]");
            layout.AddRow(latent);
            layout.AddRow("Heating Supply Air Temperature: [C]");
            layout.AddRow(heatingAirT);
            layout.AddRow("Cooling Supply Air Temperature: [C]");
            layout.AddRow(coolingAirT);

            layout.AddRow("Heating Capacity Limit: [Watts]");
            layout.AddRow(heatingLimitAuto);
            layout.AddRow(heatingLimitNoLimit);
            layout.AddSeparateRow(heatingLimitNumber, heatingLimit);

            layout.AddRow("Cooling Capacity Limit: [Watts]");
            layout.AddRow(coolingLimitAuto);
            layout.AddRow(coolingLimitNoLimit);
            layout.AddSeparateRow(coolingLimitNumber, coolingLimit);

            layout.AddRow("Heating Availability");
            layout.AddRow(heatingAvailability);
            layout.AddRow("Cooling Availability");
            layout.AddRow(coolingAvailability);

            var locked = new CheckBox()
            {
                Text = "Locked", Enabled = false
            };

            locked.Checked = lockedMode;

            var OKButton = new Button {
                Text = "OK", Enabled = !lockedMode
            };

            OKButton.Click += (sender, e) => OkCommand.Execute(vm.GreateHvac(hvac));

            AbortButton = new Button {
                Text = "Cancel"
            };
            AbortButton.Click += (sender, e) => Close();

            var hbData = new Button {
                Text = "Schema Data"
            };

            hbData.Click += (sender, e) => Dialog_Message.Show(this, vm.GreateHvac(hvac).ToJson(true), "Schema Data");

            layout.AddSeparateRow(locked, null, OKButton, this.AbortButton, null, hbData);
            layout.AddRow(null);
            Content = layout;
        }