# 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) ```mermaid 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 ```