huge fix
This commit is contained in:
		
							parent
							
								
									810c87e2e0
								
							
						
					
					
						commit
						b5bf3a5dbe
					
				
					 51 changed files with 2397 additions and 326 deletions
				
			
		| 
						 | 
				
			
			@ -63,7 +63,7 @@
 | 
			
		|||
        <div class="bs-stepper-content">
 | 
			
		||||
          {% if report and not edit_mode %}
 | 
			
		||||
          <div class="mb-3 text-end">
 | 
			
		||||
            {% if user_is_installer %}
 | 
			
		||||
            {% if user_is_installer and not report.approved %}
 | 
			
		||||
              <a href="?edit=1" class="btn btn-primary">
 | 
			
		||||
                <i class="bx bx-edit bx-sm me-2"></i>
 | 
			
		||||
                ویرایش گزارش نصب
 | 
			
		||||
| 
						 | 
				
			
			@ -86,11 +86,23 @@
 | 
			
		|||
                  <p class="text-nowrap mb-2"><i class="bx bx-calendar-event bx-sm me-2"></i>تاریخ مراجعه: {{ report.visited_date|to_jalali|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-chip bx-sm me-2"></i>نوع کنتور: {{ report.get_meter_type_display|default:'-' }}</p>
 | 
			
		||||
                  <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-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-sim-card bx-sm me-2"></i>شماره سیمکارت: {{ report.sim_number|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-cog bx-sm me-2"></i>نیرو محرکه چاه: {{ report.driving_force|default:'-' }}</p>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="col-md-6">
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ report.utm_x|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-map-pin bx-sm me-2"></i>UTM Y: {{ report.utm_y|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع مصرف: {{ report.get_usage_type_display|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-id-card bx-sm me-2"></i>شماره پروانه بهرهبرداری: {{ report.exploitation_license_number|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>(کیلووات ساعت)قدرت موتور: {{ report.motor_power|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>(لیتر/ثانیه) دبی قبل کالیبراسیون: {{ report.pre_calibration_flow_rate|default:'-' }}</p>
 | 
			
		||||
                  <p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>(لیتر/ثانیه) دبی بعد کالیبراسیون: {{ report.post_calibration_flow_rate|default:'-' }}</p>
 | 
			
		||||
                  
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
              {% if report.description %}
 | 
			
		||||
| 
						 | 
				
			
			@ -155,11 +167,18 @@
 | 
			
		|||
          <div class="card border mt-2">
 | 
			
		||||
            <div class="card-header d-flex justify-content-between align-items-center">
 | 
			
		||||
              <h6 class="mb-0">وضعیت تاییدها</h6>
 | 
			
		||||
              {% if user_can_approve %}
 | 
			
		||||
              <div class="d-flex gap-2">
 | 
			
		||||
                <button type="button" class="btn btn-success btn-sm" data-bs-toggle="modal" data-bs-target="#approveModal">تایید</button>
 | 
			
		||||
                <button type="button" class="btn btn-danger btn-sm" data-bs-toggle="modal" data-bs-target="#rejectModal">رد</button>
 | 
			
		||||
              </div>
 | 
			
		||||
              {% if can_approve_reject %}
 | 
			
		||||
                {% if current_user_has_decided %}
 | 
			
		||||
                <div class="d-flex gap-2">
 | 
			
		||||
                  <button type="button" class="btn btn-success btn-sm" disabled>تایید</button>
 | 
			
		||||
                  <button type="button" class="btn btn-danger btn-sm" disabled>رد</button>
 | 
			
		||||
                </div>
 | 
			
		||||
                {% else %}
 | 
			
		||||
                <div class="d-flex gap-2">
 | 
			
		||||
                  <button type="button" class="btn btn-success btn-sm" data-bs-toggle="modal" data-bs-target="#approveModal">تایید</button>
 | 
			
		||||
                  <button type="button" class="btn btn-danger btn-sm" data-bs-toggle="modal" data-bs-target="#rejectModal">رد</button>
 | 
			
		||||
                </div>
 | 
			
		||||
                {% endif %}
 | 
			
		||||
              {% endif %}
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="card-body py-3">
 | 
			
		||||
| 
						 | 
				
			
			@ -213,41 +232,149 @@
 | 
			
		|||
          {% if user_is_installer %}
 | 
			
		||||
          <!-- Installation Report Form -->
 | 
			
		||||
          <form method="post" enctype="multipart/form-data" id="installation-report-form">
 | 
			
		||||
            {% csrf_token %}
 | 
			
		||||
            {% csrf_token %}         
 | 
			
		||||
            <div class="mb-3">
 | 
			
		||||
              <div class="">
 | 
			
		||||
                <div class="row g-3">
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    <label class="form-label">تاریخ مراجعه</label>
 | 
			
		||||
                    <input type="text" id="id_visited_date_display" class="form-control" placeholder="انتخاب تاریخ" {% if not user_is_installer %}disabled{% endif %} readonly required value="{% if report and edit_mode and report.visited_date %}{{ report.visited_date|date:'Y/m/d' }}{% endif %}">
 | 
			
		||||
                    <input type="hidden" id="id_visited_date" name="visited_date" value="{% if report and edit_mode and report.visited_date %}{{ report.visited_date|date:'Y-m-d' }}{% endif %}">
 | 
			
		||||
                    {{ form.visited_date.label_tag }}
 | 
			
		||||
                    <!-- Custom date picker handling -->
 | 
			
		||||
                    <input type="text" id="id_visited_date_display" class="form-control{% if form.visited_date.errors %} is-invalid{% endif %}" placeholder="انتخاب تاریخ" {% if not user_is_installer %}disabled{% endif %} readonly required value="{% if report and edit_mode and report.visited_date %}{{ report.visited_date|date:'Y/m/d' }}{% elif form.visited_date.value %}{{ form.visited_date.value|date:'Y/m/d' }}{% endif %}">
 | 
			
		||||
                    <input type="hidden" id="id_visited_date" name="visited_date" value="{% if report and edit_mode and report.visited_date %}{{ report.visited_date|date:'Y-m-d' }}{% elif form.visited_date.value %}{{ form.visited_date.value }}{% endif %}">
 | 
			
		||||
                    {% if form.visited_date.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.visited_date.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    <label class="form-label">سریال کنتور جدید</label>
 | 
			
		||||
                    <input type="text" class="form-control" name="new_water_meter_serial" value="{% if report and edit_mode %}{{ report.new_water_meter_serial|default_if_none:'' }}{% endif %}" {% if not user_is_installer %}readonly{% endif %}>
 | 
			
		||||
                    {{ form.new_water_meter_serial.label_tag }}
 | 
			
		||||
                    {{ form.new_water_meter_serial }}
 | 
			
		||||
                    {% if form.new_water_meter_serial.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.new_water_meter_serial.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    <label class="form-label">شماره پلمپ</label>
 | 
			
		||||
                    <input type="text" class="form-control" name="seal_number" value="{% if report and edit_mode %}{{ report.seal_number|default_if_none:'' }}{% endif %}" {% if not user_is_installer %}readonly{% endif %}>
 | 
			
		||||
                    {{ form.seal_number.label_tag }}
 | 
			
		||||
                    {{ form.seal_number }}
 | 
			
		||||
                    {% if form.seal_number.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.seal_number.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.utm_x.label_tag }}
 | 
			
		||||
                    {{ form.utm_x }}
 | 
			
		||||
                    {% if form.utm_x.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.utm_x.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.utm_y.label_tag }}
 | 
			
		||||
                    {{ form.utm_y }}
 | 
			
		||||
                    {% if form.utm_y.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.utm_y.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.meter_type.label_tag }}
 | 
			
		||||
                    {{ form.meter_type }}
 | 
			
		||||
                    {% if form.meter_type.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.meter_type.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.meter_size.label_tag }}
 | 
			
		||||
                    {{ form.meter_size }}
 | 
			
		||||
                    {% if form.meter_size.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.discharge_pipe_diameter.label_tag }}
 | 
			
		||||
                    {{ form.discharge_pipe_diameter }}
 | 
			
		||||
                    {% if form.discharge_pipe_diameter.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.discharge_pipe_diameter.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.usage_type.label_tag }}
 | 
			
		||||
                    {{ form.usage_type }}
 | 
			
		||||
                    {% if form.usage_type.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.usage_type.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.exploitation_license_number.label_tag }}
 | 
			
		||||
                    {{ form.exploitation_license_number }}
 | 
			
		||||
                    {% if form.exploitation_license_number.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.exploitation_license_number.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.motor_power.label_tag }}
 | 
			
		||||
                    {{ form.motor_power }}
 | 
			
		||||
                    {% if form.motor_power.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.motor_power.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.pre_calibration_flow_rate.label_tag }}
 | 
			
		||||
                    {{ form.pre_calibration_flow_rate }}
 | 
			
		||||
                    {% if form.pre_calibration_flow_rate.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.pre_calibration_flow_rate.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.post_calibration_flow_rate.label_tag }}
 | 
			
		||||
                    {{ form.post_calibration_flow_rate }}
 | 
			
		||||
                    {% if form.post_calibration_flow_rate.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.post_calibration_flow_rate.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.water_meter_manufacturer.label_tag }}
 | 
			
		||||
                    <div class="input-group">
 | 
			
		||||
                      {{ form.water_meter_manufacturer }}
 | 
			
		||||
                      {{ form.new_manufacturer }}
 | 
			
		||||
                      {% if user_is_installer %}
 | 
			
		||||
                      <button class="btn btn-outline-primary" type="button" id="btnToggleManufacturer"><i class="bx bx-plus"></i></button>
 | 
			
		||||
                      {% endif %}
 | 
			
		||||
                    </div>
 | 
			
		||||
                    {% if form.water_meter_manufacturer.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.water_meter_manufacturer.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                    {% if form.new_manufacturer.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.new_manufacturer.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.sim_number.label_tag }}
 | 
			
		||||
                    {{ form.sim_number }}
 | 
			
		||||
                    {% if form.sim_number.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.sim_number.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    {{ form.driving_force.label_tag }}
 | 
			
		||||
                    {{ form.driving_force }}
 | 
			
		||||
                    {% if form.driving_force.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.driving_force.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3 d-flex align-items-end">
 | 
			
		||||
                    <div class="form-check">
 | 
			
		||||
                      <input class="form-check-input" type="checkbox" name="is_meter_suspicious" id="id_is_meter_suspicious" {% if not user_is_installer %}disabled{% endif %} {% if report and edit_mode and report.is_meter_suspicious %}checked{% endif %}>
 | 
			
		||||
                      <label class="form-check-label" for="id_is_meter_suspicious">کنتور مشکوک است</label>
 | 
			
		||||
                      {{ form.is_meter_suspicious }}
 | 
			
		||||
                      {{ form.is_meter_suspicious.label_tag }}
 | 
			
		||||
                    </div>
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    <label class="form-label">UTM X</label>
 | 
			
		||||
                    <input type="number" step="1" class="form-control" name="utm_x" value="{% if report and edit_mode and report.utm_x %}{{ report.utm_x }}{% elif instance.well.utm_x %}{{ instance.well.utm_x }}{% endif %}" {% if not user_is_installer %}readonly{% endif %}>
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="col-md-3">
 | 
			
		||||
                    <label class="form-label">UTM Y</label>
 | 
			
		||||
                    <input type="number" step="1" class="form-control" name="utm_y" value="{% if report and edit_mode and report.utm_y %}{{ report.utm_y }}{% elif instance.well.utm_y %}{{ instance.well.utm_y }}{% endif %}" {% if not user_is_installer %}readonly{% endif %}>
 | 
			
		||||
                    {% if form.is_meter_suspicious.errors %}
 | 
			
		||||
                      <div class="invalid-feedback">{{ form.is_meter_suspicious.errors.0 }}</div>
 | 
			
		||||
                    {% endif %}
 | 
			
		||||
                  </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="my-3">
 | 
			
		||||
                  <label class="form-label">توضیحات (اختیاری)</label>
 | 
			
		||||
                  <textarea class="form-control" rows="3" name="description" {% if not user_is_installer %}readonly{% endif %}>{% if report and edit_mode %}{{ report.description|default_if_none:'' }}{% endif %}</textarea>
 | 
			
		||||
                  {{ form.description.label_tag }}
 | 
			
		||||
                  {{ form.description }}
 | 
			
		||||
                  {% if form.description.errors %}
 | 
			
		||||
                    <div class="invalid-feedback">{{ form.description.errors.0 }}</div>
 | 
			
		||||
                  {% endif %}
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="mb-3">
 | 
			
		||||
                  <div class="d-flex justify-content-between align-items-center">
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +411,7 @@
 | 
			
		|||
              </div>
 | 
			
		||||
              <div class="card-body">
 | 
			
		||||
                <div class="row g-3">
 | 
			
		||||
                  <div class="col-12 mb-4">
 | 
			
		||||
                  <div class="col-12 mb-4 d-none">
 | 
			
		||||
                    <h6 class="mb-2">اقلام انتخابشده قبلی <small class="text-muted">(برای حذف در نصب تیک بزنید)</small></h6>
 | 
			
		||||
                    <div class="table-responsive">
 | 
			
		||||
                      <table class="table table-sm align-middle">
 | 
			
		||||
| 
						 | 
				
			
			@ -321,7 +448,6 @@
 | 
			
		|||
                      </table>
 | 
			
		||||
                    </div>
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <hr>
 | 
			
		||||
                  <div class="col-12">
 | 
			
		||||
                    <h6 class="mb-2">افزودن اقلام جدید</h6>
 | 
			
		||||
                    <div class="table-responsive">
 | 
			
		||||
| 
						 | 
				
			
			@ -513,6 +639,20 @@
 | 
			
		|||
        display.scrollIntoView({behavior:'smooth', block:'center'});
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      // Require at least one photo: either existing (not marked for deletion) or newly added
 | 
			
		||||
      try {
 | 
			
		||||
        var keptExisting = 0;
 | 
			
		||||
        document.querySelectorAll('input[id^="del-photo-"]').forEach(function(inp){
 | 
			
		||||
          if (String(inp.value) !== '1') keptExisting += 1;
 | 
			
		||||
        });
 | 
			
		||||
        var newFiles = document.querySelectorAll('#photoInputs input[type="file"]').length;
 | 
			
		||||
        if ((keptExisting + newFiles) <= 0) {
 | 
			
		||||
          ev.preventDefault(); ev.stopPropagation();
 | 
			
		||||
          showToast('بارگذاری حداقل یک عکس الزامی است', 'danger');
 | 
			
		||||
          (document.getElementById('btnAddPhoto') || form).scrollIntoView({behavior:'smooth', block:'center'});
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
      } catch(_) {}
 | 
			
		||||
      try { sessionStorage.setItem('install_report_saved', '1'); } catch(_) {}
 | 
			
		||||
    }, false);
 | 
			
		||||
    // on load, if saved flag exists, show toast
 | 
			
		||||
| 
						 | 
				
			
			@ -568,6 +708,36 @@
 | 
			
		|||
    if (btnAddPhoto) btnAddPhoto.addEventListener('click', createPhotoInput);
 | 
			
		||||
  })();
 | 
			
		||||
 | 
			
		||||
  // Toggle manufacturer select/input (like request_list)
 | 
			
		||||
  (function(){
 | 
			
		||||
    const $select = $('#id_water_meter_manufacturer');
 | 
			
		||||
    const $input = $('#id_new_manufacturer');
 | 
			
		||||
    const $btn = $('#btnToggleManufacturer');
 | 
			
		||||
    if (!$select.length || !$btn.length) return;
 | 
			
		||||
    $btn.on('click', function(){
 | 
			
		||||
      if ($select.is(':visible')) {
 | 
			
		||||
        $select.hide();
 | 
			
		||||
        $input.show().focus();
 | 
			
		||||
        $btn.html('<i class="bx bx-check"></i>');
 | 
			
		||||
      } else {
 | 
			
		||||
        // When switching back, if input has value, append it as selected option
 | 
			
		||||
        const val = ($input.val() || '').trim();
 | 
			
		||||
        if (val) {
 | 
			
		||||
          // Add a temporary option with value prefixed 'new:' to be handled server-side
 | 
			
		||||
          const exists = $select.find('option').filter(function(){ return $(this).text().trim() === val; }).length > 0;
 | 
			
		||||
          if (!exists) {
 | 
			
		||||
            const opt = $('<option></option>').val('').text(val);
 | 
			
		||||
            $select.append(opt);
 | 
			
		||||
          }
 | 
			
		||||
          $select.val('');
 | 
			
		||||
        }
 | 
			
		||||
        $input.hide();
 | 
			
		||||
        $select.show();
 | 
			
		||||
        $btn.html('<i class="bx bx-plus"></i>');
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  })();
 | 
			
		||||
 | 
			
		||||
  // Mark delete for existing photos
 | 
			
		||||
  function markDeletePhoto(id){
 | 
			
		||||
    const hidden = document.getElementById('del-photo-' + id);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue