add meter model for smart meter
This commit is contained in:
		
							parent
							
								
									02415f4dee
								
							
						
					
					
						commit
						68cf7761d7
					
				
					 3 changed files with 67 additions and 3 deletions
				
			
		| 
						 | 
					@ -20,7 +20,7 @@ class InstallationReportForm(forms.ModelForm):
 | 
				
			||||||
        model = InstallationReport
 | 
					        model = InstallationReport
 | 
				
			||||||
        fields = [
 | 
					        fields = [
 | 
				
			||||||
            'visited_date', 'new_water_meter_serial', 'seal_number',
 | 
					            'visited_date', 'new_water_meter_serial', 'seal_number',
 | 
				
			||||||
            'utm_x', 'utm_y', 'meter_type', 'meter_size',
 | 
					            'utm_x', 'utm_y', 'meter_type', 'meter_size', 'meter_model',
 | 
				
			||||||
            'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number',
 | 
					            'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number',
 | 
				
			||||||
            'motor_power', 'pre_calibration_flow_rate', 'post_calibration_flow_rate',
 | 
					            'motor_power', 'pre_calibration_flow_rate', 'post_calibration_flow_rate',
 | 
				
			||||||
            'water_meter_manufacturer', 'sim_number', 'driving_force',
 | 
					            'water_meter_manufacturer', 'sim_number', 'driving_force',
 | 
				
			||||||
| 
						 | 
					@ -62,6 +62,13 @@ class InstallationReportForm(forms.ModelForm):
 | 
				
			||||||
            'meter_size': forms.TextInput(attrs={
 | 
					            'meter_size': forms.TextInput(attrs={
 | 
				
			||||||
                'class': 'form-control'
 | 
					                'class': 'form-control'
 | 
				
			||||||
            }),
 | 
					            }),
 | 
				
			||||||
 | 
					            'meter_model': forms.Select(attrs={
 | 
				
			||||||
 | 
					                'class': 'form-select'
 | 
				
			||||||
 | 
					            }, choices=[
 | 
				
			||||||
 | 
					                ('', 'انتخاب کنید'),
 | 
				
			||||||
 | 
					                ('A', 'A'),
 | 
				
			||||||
 | 
					                ('B', 'B')
 | 
				
			||||||
 | 
					            ]),
 | 
				
			||||||
            'discharge_pipe_diameter': forms.NumberInput(attrs={
 | 
					            'discharge_pipe_diameter': forms.NumberInput(attrs={
 | 
				
			||||||
                'class': 'form-control',
 | 
					                'class': 'form-control',
 | 
				
			||||||
                'min': '0',
 | 
					                'min': '0',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,11 @@ class InstallationReport(BaseModel):
 | 
				
			||||||
        ('volumetric', 'حجمی'),
 | 
					        ('volumetric', 'حجمی'),
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
    meter_type = models.CharField(max_length=20, choices=METER_TYPE_CHOICES, null=True, blank=True, verbose_name='نوع کنتور')
 | 
					    meter_type = models.CharField(max_length=20, choices=METER_TYPE_CHOICES, null=True, blank=True, verbose_name='نوع کنتور')
 | 
				
			||||||
 | 
					    METER_MODEL_CHOICES = [
 | 
				
			||||||
 | 
					        ('A', 'A'),
 | 
				
			||||||
 | 
					        ('B', 'B'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					    meter_model = models.CharField(max_length=20, choices=METER_MODEL_CHOICES, null=True, blank=True, verbose_name='مدل کنتور')
 | 
				
			||||||
    meter_size = models.CharField(max_length=50, null=True, blank=True, verbose_name='سایز کنتور')
 | 
					    meter_size = models.CharField(max_length=50, null=True, blank=True, verbose_name='سایز کنتور')
 | 
				
			||||||
    discharge_pipe_diameter = models.PositiveIntegerField(null=True, blank=True, verbose_name='قطر لوله آبده (اینچ)')
 | 
					    discharge_pipe_diameter = models.PositiveIntegerField(null=True, blank=True, verbose_name='قطر لوله آبده (اینچ)')
 | 
				
			||||||
    USAGE_TYPE_CHOICES = [
 | 
					    USAGE_TYPE_CHOICES = [
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,7 +86,11 @@
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال جدید: {{ report.new_water_meter_serial|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال جدید: {{ report.new_water_meter_serial|default:'-' }}</p>
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ report.seal_number|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ report.seal_number|default:'-' }}</p>
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>نوع کنتور: {{ report.get_meter_type_display|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>نوع کنتور: {{ report.get_meter_type_display|default:'-' }}</p>
 | 
				
			||||||
 | 
					                  {% if report.meter_type == 'smart' %}
 | 
				
			||||||
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>مدل کنتور: {{ report.get_meter_model_display|default:'-' }}</p>
 | 
				
			||||||
 | 
					                  {% else %}
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-ruler bx-sm me-2"></i>سایز کنتور: {{ report.meter_size|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-ruler bx-sm me-2"></i>سایز کنتور: {{ report.meter_size|default:'-' }}</p>
 | 
				
			||||||
 | 
					                  {% endif %}
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-tachometer bx-sm me-2"></i>قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-tachometer bx-sm me-2"></i>قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}</p>
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-building bx-sm me-2"></i>سازنده کنتور: {{ report.water_meter_manufacturer|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-building bx-sm me-2"></i>سازنده کنتور: {{ report.water_meter_manufacturer|default:'-' }}</p>
 | 
				
			||||||
                  <p class="text-nowrap mb-2"><i class="bx bx-sim-card bx-sm me-2"></i>شماره سیمکارت: {{ report.sim_number|default:'-' }}</p>
 | 
					                  <p class="text-nowrap mb-2"><i class="bx bx-sim-card bx-sm me-2"></i>شماره سیمکارت: {{ report.sim_number|default:'-' }}</p>
 | 
				
			||||||
| 
						 | 
					@ -279,13 +283,20 @@
 | 
				
			||||||
                      <div class="invalid-feedback">{{ form.meter_type.errors.0 }}</div>
 | 
					                      <div class="invalid-feedback">{{ form.meter_type.errors.0 }}</div>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                  </div>
 | 
					                  </div>
 | 
				
			||||||
                  <div class="col-md-3">
 | 
					                  <div class="col-md-3" id="meter_size_wrapper">
 | 
				
			||||||
                    {{ form.meter_size.label_tag }}
 | 
					                    {{ form.meter_size.label_tag }}
 | 
				
			||||||
                    {{ form.meter_size }}
 | 
					                    {{ form.meter_size }}
 | 
				
			||||||
                    {% if form.meter_size.errors %}
 | 
					                    {% if form.meter_size.errors %}
 | 
				
			||||||
                      <div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
 | 
					                      <div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                  </div>
 | 
					                  </div>
 | 
				
			||||||
 | 
					                  <div class="col-md-3" id="meter_model_wrapper">
 | 
				
			||||||
 | 
					                    {{ form.meter_model.label_tag }}
 | 
				
			||||||
 | 
					                    {{ form.meter_model }}
 | 
				
			||||||
 | 
					                    {% if form.meter_model.errors %}
 | 
				
			||||||
 | 
					                      <div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
 | 
				
			||||||
 | 
					                    {% endif %}
 | 
				
			||||||
 | 
					                  </div>
 | 
				
			||||||
                  <div class="col-md-3">
 | 
					                  <div class="col-md-3">
 | 
				
			||||||
                    {{ form.discharge_pipe_diameter.label_tag }}
 | 
					                    {{ form.discharge_pipe_diameter.label_tag }}
 | 
				
			||||||
                    {{ form.discharge_pipe_diameter }}
 | 
					                    {{ form.discharge_pipe_diameter }}
 | 
				
			||||||
| 
						 | 
					@ -329,7 +340,7 @@
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                  </div>
 | 
					                  </div>
 | 
				
			||||||
                  <div class="col-md-3">
 | 
					                  <div class="col-md-3">
 | 
				
			||||||
                    {{ form.water_meter_manufacturer.label_tag }}
 | 
					                    {{ form.water_meter_manufacturer.label_tag }}حجمی
 | 
				
			||||||
                    <div class="input-group">
 | 
					                    <div class="input-group">
 | 
				
			||||||
                      {{ form.water_meter_manufacturer }}
 | 
					                      {{ form.water_meter_manufacturer }}
 | 
				
			||||||
                      {{ form.new_manufacturer }}
 | 
					                      {{ form.new_manufacturer }}
 | 
				
			||||||
| 
						 | 
					@ -759,6 +770,47 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Dynamic meter field visibility based on meter type
 | 
				
			||||||
 | 
					  (function() {
 | 
				
			||||||
 | 
					    const meterTypeSelect = document.getElementById('{{ form.meter_type.id_for_label }}');
 | 
				
			||||||
 | 
					    const meterSizeWrapper = document.getElementById('meter_size_wrapper');
 | 
				
			||||||
 | 
					    const meterModelWrapper = document.getElementById('meter_model_wrapper');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function updateMeterFields() {
 | 
				
			||||||
 | 
					      if (!meterTypeSelect) return;
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      const selectedType = meterTypeSelect.value;
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      if (selectedType === 'smart') {
 | 
				
			||||||
 | 
					        // Show meter_model, hide meter_size
 | 
				
			||||||
 | 
					        meterModelWrapper.style.display = '';
 | 
				
			||||||
 | 
					        meterSizeWrapper.style.display = 'none';
 | 
				
			||||||
 | 
					        // Clear meter_size value when hidden
 | 
				
			||||||
 | 
					        const meterSizeInput = meterSizeWrapper.querySelector('input, select');
 | 
				
			||||||
 | 
					        if (meterSizeInput) meterSizeInput.value = '';
 | 
				
			||||||
 | 
					      } else if (selectedType === 'volumetric') {
 | 
				
			||||||
 | 
					        // Show meter_size, hide meter_model
 | 
				
			||||||
 | 
					        meterSizeWrapper.style.display = '';
 | 
				
			||||||
 | 
					        meterModelWrapper.style.display = 'none';
 | 
				
			||||||
 | 
					        // Clear meter_model value when hidden
 | 
				
			||||||
 | 
					        const meterModelSelect = meterModelWrapper.querySelector('select');
 | 
				
			||||||
 | 
					        if (meterModelSelect) meterModelSelect.value = '';
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        // No selection: hide both
 | 
				
			||||||
 | 
					        meterSizeWrapper.style.display = 'none';
 | 
				
			||||||
 | 
					        meterModelWrapper.style.display = 'none';
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Initial update on page load
 | 
				
			||||||
 | 
					    updateMeterFields();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Update on change
 | 
				
			||||||
 | 
					    if (meterTypeSelect) {
 | 
				
			||||||
 | 
					      meterTypeSelect.addEventListener('change', updateMeterFields);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  })();
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue