Files
citrus-cms/resources/views/guide/wpq-follow-up-algorithm.md
T
2026-04-28 21:15:09 +03:00

4.4 KiB
Raw Blame History

WPQ Follow-up Datagrid Algoritması

Bu doküman, resources/views/admin/type/wpq-follow-up/datagrid-script.blade.php dosyasındaki DataGrid içerisinde yer alan Diameter (Çap) ve Thickness (Kalınlık) alanlarının değişim mantığını ve hesaplama algoritmasını açıklar.

Algoritma Özeti

Süreç iki ana kola ayrılır:

1. Diameter (Çap) Değişikliği Algoritması

  1. Kullanıcı Diameter değerini değiştirir.
  2. Sistem, satırdaki grade_1 değerini kullanarak sunucudan malzeme detayını (JSON) çeker.
  3. Gelen short_name (Kısa Ad) değerine göre malzeme tipi belirlenir:
    • Çelik (AS, SS, CS) veya Nikel (NI) ise:
      • Değer <= 25 ise: min = değer, max = değer * 2
      • 25 < Değer <= 150 ise: min = değer * 0.5, max = değer * 2
      • Değer > 150 ise: min = değer * 0.5, max = Boş
    • Alüminyum (AL) ise:
      • Değer <= 125 ise: min = değer * 0.5, max = değer * 2.5
      • Değer > 125 ise: min = 0.5 * değer, max = 2.5 * değer
  4. Hesaplanan min ve max değerleri tablodaki dia_min ve dia_max hücrelerine yazılır.

2. Thickness (Kalınlık) Değişikliği Algoritması

  1. Kullanıcı Thickness hücresine odaklandığında (FocusIn):
    • wps_no ile sunucudan veri çekilir, min/max_thick değerleri localStorage'a kaydedilir (Bu adım kodda var ancak hesaplamada doğrudan kullanılmamış gibi görünüyor, yine de akışta mevcuttur).
  2. Kullanıcı Thickness değerini değiştirdiğinde:
  3. Sistem grade_1 ile malzeme detayını sunucudan çeker.
  4. short_name değerine göre limitler hesaplanır:
    • Çelik (AS, SS, CS) veya Nikel (NI) ise:
      • Değer <= 3 ise: min = değer, max = değer * 2
      • 3 < Değer <= 12 ise: min = 3, max = değer * 2
      • Değer > 12 ise: min = 5, max = Boş
    • Alüminyum (AL) ise:
      • Değer <= 6 ise: min = değer * 0.7, max = değer * 2.5
      • 6 < Değer <= 15 ise: min = 6, max = 40
  5. Hesaplanan değerler thk_min ve thk_max hücrelerine yazılır.

Akış Şeması (Flowchart)

flowchart TD
    Start(("Başla")) --> CheckField{"Alan Hangisi?"}

    %% --- DIAMETER BRANCH ---
    CheckField -- "Diameter (Çap)" --> DiaFetch["Get JSON: materials/steel_grade (grade_1)"]
    DiaFetch --> CheckMaterialDia{"Malzeme Kısa Adı\n(short_name)"}

    %% Steel/Nickel Logic (Diameter)
    CheckMaterialDia -- "AS, SS, CS, NI" --> DiaSteelRange{"Değer Aralığı?"}
    DiaSteelRange -- "<= 25" --> DiaCalc1["Min = Değer\nMax = Değer * 2"]
    DiaSteelRange -- "25 < x <= 150" --> DiaCalc2["Min = 0.5 * Değer\nMax = Değer * 2"]
    DiaSteelRange -- "> 150" --> DiaCalc3["Min = 0.5 * Değer\nMax = Boş"]

    %% Aluminium Logic (Diameter)
    CheckMaterialDia -- "AL" --> DiaAlRange{"Değer Aralığı?"}
    DiaAlRange -- "<= 125" --> DiaCalc4["Min = Değer * 0.5\nMax = Değer * 2.5"]
    DiaAlRange -- "> 125" --> DiaCalc5["Min = 0.5 * Değer\nMax = 2.5 * Değer"]

    %% Finalize Diameter
    DiaCalc1 --> SetDiaCells["Tabloyu Güncelle:\ndia_min, dia_max"]
    DiaCalc2 --> SetDiaCells
    DiaCalc3 --> SetDiaCells
    DiaCalc4 --> SetDiaCells
    DiaCalc5 --> SetDiaCells

    %% --- THICKNESS BRANCH ---
    CheckField -- "Thickness (Kalınlık)" --> ThkFocus["On Focus: WPS detaylarını\nlocalStorage'a kaydet"]
    ThkFocus --> ThkChange["Kullanıcı Değer Değiştirdi"]
    ThkChange --> ThkFetch["Get JSON: materials/steel_grade (grade_1)"]
    ThkFetch --> CheckMaterialThk{"Malzeme Kısa Adı\n(short_name)"}

    %% Steel/Nickel Logic (Thickness)
    CheckMaterialThk -- "AS, SS, CS, NI" --> ThkSteelRange{"Değer Aralığı?"}
    ThkSteelRange -- "<= 3" --> ThkCalc1["Min = Değer\nMax = Değer * 2"]
    ThkSteelRange -- "3 < x <= 12" --> ThkCalc2["Min = 3\nMax = Değer * 2"]
    ThkSteelRange -- "> 12" --> ThkCalc3["Min = 5\nMax = Boş"]

    %% Aluminium Logic (Thickness)
    CheckMaterialThk -- "AL" --> ThkAlRange{"Değer Aralığı?"}
    ThkAlRange -- "<= 6" --> ThkCalc4["Min = Değer * 0.7\nMax = Değer * 2.5"]
    ThkAlRange -- "6 < x <= 15" --> ThkCalc5["Min = 6\nMax = 40"]

    %% Finalize Thickness
    ThkCalc1 --> SetThkCells["Tabloyu Güncelle:\nthk_min, thk_max"]
    ThkCalc2 --> SetThkCells
    ThkCalc3 --> SetThkCells
    ThkCalc4 --> SetThkCells
    ThkCalc5 --> SetThkCells

    SetDiaCells --> End(("Bitir"))
    SetThkCells --> End