Controller
public function fiyat_farki_proje_katsayilar($projesId = null)
{
$proje = FiyatFarkiProjeler::where('users_id', $this->musteri_id)->where('id', $projesId)->first();
if (!$proje) {
return response()->json(["success" => false, "message" => "Proje bulunamadı."]);
}
$katsayilar = FiyatFarkiProjeFiyatFarkiKatsayilar::where('projes_id', $proje->id)->get();
foreach ($katsayilar as $katsayi) {
$endeks = EndeksTip::find($katsayi->endeks_id);
if ($katsayi->endeks_id == -1){
$katsayi->endeks_adi = 'Akaryakıt Ağırlık Oranı';
$katsayi->endeks_liste = ['Kurşunsuz benzin 95 Oktan','Kurşunsuz benzin 95 Oktan(Diğer)','Motorin','Motorin(Diğer)','Kalorifer Yakıtı(Kükürt Oranı %0.1i geçen ancak %1i geçmeyenler)','Fuel oil(Kükürt Oranı %0.1i geçen ancak %1i geçmeyenler)','Yüksek Kükürtlü Fuel Oil(Kükürt Oranı %1i geçenler)','Gazyağı'];
} elseif ($katsayi->endeks_id !== null) {
$katsayi->endeks_adi = $endeks->ENDEKSADI;
$endeksler = EndeksTip::where('ENDEKSKODU', 'LIKE', $endeks->ENDEKSKODU . '%')->pluck('ENDEKSADI');
$katsayi->endeks_liste = $endeksler;
}
}
$toplam = round(collect($katsayilar)->sum('agirlik_orani'), 12);
return response()->json(["success" => true, "data" => $katsayilar, "toplam" => $toplam]);
}
*Js
$("#agirlik_oranlari_table").jqxGrid(
{
editable: true,
selectionmode: 'singlecell',
editmode: 'click',
source: agirlikOranlariAdapter,
localization: getLocalization(),
autoheight: true,
showstatusbar: true,
showaggregates: true,
width: 765,
columns: [
{
text: "",
dataField: "agokod",
width: 80,
align: "center",
cellsAlign: "center",
editable: true
}, {
text: "Kat Sayı",
dataField: "endeks_id",
align: "center",
cellsAlign: "left",
displayfield: "endeks_adi",
editable: !1,
aggregates: ["sum"],
aggregatesrenderer: function (aggregates, column, element, summaryData) {
var renderstring = "<div style='margin-top: 8px;margin-right: 3px' class='text-right m-r-5'>";
if (agirlikOranlariAdapter.loadedData.toplam != 1) {
renderstring += '<div class="text-danger text-right">Katsayıların toplamı bire (1,00) eşit değildir.</div>';
}
renderstring += "</div>";
return renderstring;
}
},
{
text: "Endeks Ekle",
dataField: "endeks_ekle",
width: 100,
align: "center",
cellsAlign: "center",
editable: !1,
cellsRenderer: function (row, column, value, rowData) {
var endeks_id = $("#agirlik_oranlari_table").jqxGrid('getcellvalue', row, 'endeks_id');
return '<div class="text-center" data-endeks-id="' + endeks_id + '""><i class="btn fas fa-plus" style="color: #f77d00; " onclick="endeksEkle(' + row + ')"></i></div>';
},
}, {
text: "Ağırlık Oranı",
dataField: "agirlik_orani",
width: 100,
align: "center",
cellsAlign: "right",
cellsFormat: "float",
columntype: "numberinput",
aggregates: ['sum'],
aggregatesrenderer: function (aggregates, column, element, summaryData) {
var renderstring = "<div style='margin-top: 8px;margin-right: 3px' class='text-right m-r-5'>";
renderstring += '<div class="' + (agirlikOranlariAdapter.loadedData.toplam != 1 && "text-danger") + '">' + agirlikOranlariAdapter.loadedData.toplam + '</div>';
renderstring += "</div>";
return renderstring;
}
},
{
text: 'Endeks Adı', dataField: 'endeks_liste', align: 'center', cellsAlign: 'center',
columntype: 'template',
createeditor: function (row, column, editor) {
var rowData = $("#agirlik_oranlari_table").jqxGrid('getrowdata', row); // Satır verisini al
var endeksListe = rowData.endeks_liste; // Satırdaki endeks listesini al
// Dropdown için uygun formatta doldur
var dropdownSource = [];
for (var i = 0; i < endeksListe.length; i++) {
dropdownSource.push({ label: endeksListe[i], value: endeksListe[i] });
}
editor.jqxDropDownList({
source: dropdownSource,
displayMember: 'label',
valueMember: 'value',
filterable: true,
dropDownHorizontalAlignment: 'left',
openDelay: 0,
width: '100%',
height: 25
});
}
},
],
});
Buradaki endeks_liste ile gelen verileri oluşan tablodaki satırlara basması gerekiyor ve verileri görmek için dropdown menuyu açtığımda ilgili satırın veirlerini görmem gerekiyor. Gelen verilerin listeside aşağıdaki gibidir.