4.4 KiB
4.4 KiB
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ı
- Kullanıcı Diameter değerini değiştirir.
- Sistem, satırdaki
grade_1değerini kullanarak sunucudan malzeme detayını (JSON) çeker. - 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ş
- Değer <= 25 ise:
- 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
- Değer <= 125 ise:
- Çelik (AS, SS, CS) veya Nikel (NI) ise:
- Hesaplanan
minvemaxdeğerleri tablodakidia_minvedia_maxhücrelerine yazılır.
2. Thickness (Kalınlık) Değişikliği Algoritması
- Kullanıcı Thickness hücresine odaklandığında (FocusIn):
wps_noile sunucudan veri çekilir,min/max_thickdeğerlerilocalStorage'a kaydedilir (Bu adım kodda var ancak hesaplamada doğrudan kullanılmamış gibi görünüyor, yine de akışta mevcuttur).
- Kullanıcı Thickness değerini değiştirdiğinde:
- Sistem
grade_1ile malzeme detayını sunucudan çeker. short_namedeğ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ş
- Değer <= 3 ise:
- 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
- Değer <= 6 ise:
- Çelik (AS, SS, CS) veya Nikel (NI) ise:
- Hesaplanan değerler
thk_minvethk_maxhü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