{%- for each_pid in pid if each_pid.unique_id == order -%}
{{form_mod_pid_base.csrf_token}} {{form_mod_pid_base.function_id(value=each_pid.unique_id)}} {{form_mod_pid_base.function_type(class_='form-control', value='pid')}}
{{form_mod_pid_base.name(class_='form-control', value=each_pid.name, **{'title': dict_translation['name']['phrase']})}}
{%- if each_pid.is_activated %}
{{form_mod_pid_base.pid_deactivate(class_='form-control btn btn-sm')}}
{%- if each_pid.is_paused or each_pid.is_held %}
{{form_mod_pid_base.pid_resume(class_='form-control btn btn-sm')}}
{%- else %}
{{form_mod_pid_base.pid_pause(class_='form-control btn btn-sm')}}
{{form_mod_pid_base.pid_hold(class_='form-control btn btn-sm')}}
{%- endif -%} {%- else %}
{{form_mod_pid_base.pid_activate(class_='form-control btn btn-sm')}}
{%- endif -%}
{{form_mod_pid_base.pid_mod(class_='form-control btn btn-sm')}}
{{form_mod_pid_base.pid_delete(class_='form-control btn btn-sm',**{'onclick':'return confirm("Are you sure you want to delete this?")'})}}
{{form_mod_pid_base.order_up(class_='form-control btn btn-sm')}}
{{form_mod_pid_base.order_down(class_='form-control btn btn-sm')}}
{{form_mod_pid_base.measurement.label(class_='control-label')}}
{{form_mod_pid_base.direction.label(class_='control-label')}}
{{form_mod_pid_base.period.label(class_='control-label')}}
{{form_mod_pid_base.period(class_='form-control', value=each_pid.period, **{'title':_('The duration between calculating a new PID output to power the raise and lower outputs.')})}}
{{form_mod_pid_base.start_offset.label(class_='control-label')}}
{{form_mod_pid_base.start_offset(class_='form-control', value=each_pid.start_offset, **{'title':_('The duration (seconds) to wait before the first operation')})}}
{{form_mod_pid_base.max_measure_age.label(class_='control-label')}}
{{form_mod_pid_base.max_measure_age(class_='form-control', value=each_pid.max_measure_age, **{'title':_('Maximum allowable measurement age (to allow the PID controller to manipulate outputs, the measurement must have occurred in the past x seconds)')})}}
{{form_mod_pid_base.setpoint.label(class_='control-label')}}
{{form_mod_pid_base.setpoint(class_='form-control', value=each_pid.setpoint, **{'title':_('This is the desired state of a perticular environmental condition. For instance, this could be the desired temperature in Celsius.')})}}
{{form_mod_pid_base.band.label(class_='control-label')}}
{{form_mod_pid_base.band(class_='form-control', value=each_pid.band, **{'title':_('The control hysteresis surounding the setpoint, with a band that is the setpoint plus and minus the band value. 0 is disabled.')})}}
{{form_mod_pid_base.store_lower_as_negative.label(class_='control-label')}}
{{form_mod_pid_base.k_p.label(class_='control-label')}}
{{form_mod_pid_base.k_p(class_='form-control', value=each_pid.p, **{'title':_('Proportional gain')})}}
{{form_mod_pid_base.k_i.label(class_='control-label')}}
{{form_mod_pid_base.k_i(class_='form-control', value=each_pid.i, **{'title':_('Integral gain')})}}
{{form_mod_pid_base.k_d.label(class_='control-label')}}
{{form_mod_pid_base.k_d(class_='form-control', value=each_pid.d, **{'title':_('Derivative gain')})}}
{{form_mod_pid_base.integrator_max.label(class_='control-label')}}
{{form_mod_pid_base.integrator_max(class_='form-control', value=each_pid.integrator_min, **{'title':_('Limit the integrator minimum, for calculating Ki_total: (Ki_total = Ki * integrator; and PID output = Kp_total + Ki_total + Kd_total)')})}}
{{form_mod_pid_base.integrator_min.label(class_='control-label')}}
{{form_mod_pid_base.integrator_min(class_='form-control', value=each_pid.integrator_max, **{'title':_('Limit the integrator maximum, for calculating Ki_total: (Ki_total = Ki * integrator; and PID output = Kp_total + Ki_total + Kd_total)')})}}
{{form_mod_pid_base.raise_output_id.label(class_='control-label')}}
{% for each_output in output if each_pid.raise_output_id == each_output.unique_id %} {% if each_output.output_type in ['pwm', 'command_pwm'] %} {% include 'pages/function_options/pid_options/pwm_raise.html' %} {% else %} {% include 'pages/function_options/pid_options/output_raise.html' %} {% endif %} {% endfor %}
{{form_mod_pid_base.lower_output_id.label(class_='control-label')}}
{% for each_output in output if each_pid.lower_output_id == each_output.unique_id %} {% if each_output.output_type in ['pwm', 'command_pwm'] %} {% include 'pages/function_options/pid_options/pwm_lower.html' %} {% else %} {% include 'pages/function_options/pid_options/output_lower.html' %} {% endif %} {% endfor %}
{{form_mod_pid_base.method_id.label(class_='control-label')}}
{{_('Autotune')}}
{{form_mod_pid_base.pid_autotune_noiseband.label(class_='control-label')}}
{{form_mod_pid_base.pid_autotune_noiseband(class_='form-control', value=each_pid.autotune_noiseband, **{'title':_('Autotune Only: How much above and below the setpoint the process variable must reach before changing direction.')})}}
{{form_mod_pid_base.pid_autotune_outstep.label(class_='control-label')}}
{{form_mod_pid_base.pid_autotune_outstep(class_='form-control', value=each_pid.autotune_outstep, **{'title':_('Autotune Only: How many seconds to turn the output on each PID cycle. For instance, if this equals the PID Period, it will be on 100%% of the time.')})}}
{{form_mod_pid_base.pid_autotune(class_='form-control btn btn-sm')}}
{%- endfor -%}