@php $labName=$laboratory?->name?:'LABORATORIUM BAHAN DAN STRUKTUR'; $institution=$laboratory?->institution?:'PROGRAM STUDI TEKNIK SIPIL'; $header=function()use($setting,$labName,$institution,$laboratory){ return '
' .($setting->logo_left?'':'') .($setting->logo_right?'':'') .'

'.e($labName).'

'.e($institution).'

'.e($laboratory?->address).'

'; }; $footer=fn()=>''; $labels=[ 'test_number'=>'Nomor pengujian','sample_number'=>'Nomor sampel','tested_at'=>'Tanggal pengujian','received_at'=>'Tanggal diterima','technician'=>'Petugas pengujian','notes'=>'Catatan','brand'=>'Merek','producer'=>'Produsen','quarry'=>'Lokasi sumber','supplier'=>'Pemasok', 'moisture'=>'Kadar air','silt'=>'Kadar lumpur/lolos saringan No. 200','bulk_dry'=>'Berat jenis curah kering','bulk_ssd'=>'Berat jenis curah SSD','apparent'=>'Berat jenis semu','absorption'=>'Penyerapan','bulk_density'=>'Berat isi','voids'=>'Rongga','mass_total'=>'Total massa','mass_difference'=>'Selisih massa','fineness_modulus'=>'Modulus kehalusan','abrasion'=>'Keausan', 'fc'=>'Kuat tekan karakteristik','sd'=>'Deviasi standar','sd_additional'=>'Tambahan deviasi','test_count'=>'Jumlah hasil uji','deviation_factor'=>'Faktor pengali','margin'=>'Margin tambahan','fcr'=>'Kuat tekan rata-rata sasaran','slump_design'=>'Slump rencana','max_size'=>'Ukuran agregat maksimum','water'=>'Kebutuhan air','air_content'=>'Kadar udara','wc_ratio'=>'Rasio air-semen', 'cement'=>'Berat semen','fresh_density'=>'Berat beton segar','aggregate_mass_available'=>'Total berat agregat tersedia','coarse_ssd'=>'Agregat kasar SSD','fine_ssd'=>'Agregat halus SSD','fine_field'=>'Pasir kondisi lapangan','coarse_field'=>'Kerikil kondisi lapangan','water_added'=>'Air yang ditambahkan','total_fresh_mass'=>'Total massa beton segar', 'combined_fine_percent'=>'Persentase pasir gabungan','combined_coarse_percent'=>'Persentase kerikil gabungan','combined_total_percent'=>'Total agregat gabungan','combined_deviation'=>'Deviasi rata-rata gradasi','gradation_max_size'=>'Ukuran maksimum gradasi','gradation_curve'=>'Kurva gradasi','trial_volume_liter'=>'Volume campuran percobaan','waste'=>'Faktor kehilangan', 'cement_sg'=>'Berat jenis semen','coarse_sg'=>'Berat jenis kerikil','fine_sg'=>'Berat jenis pasir','coarse_density'=>'Berat isi kerikil','fine_fm'=>'Modulus kehalusan pasir','fine_moisture'=>'Kadar air pasir','coarse_moisture'=>'Kadar air kerikil','fine_absorption'=>'Penyerapan pasir','coarse_absorption'=>'Penyerapan kerikil','wc_ratio_calculated'=>'Rasio air-semen hasil perhitungan', 'fine_free_water'=>'Air bebas pasir','coarse_free_water'=>'Air bebas kerikil','vol_water'=>'Volume air','vol_cement'=>'Volume semen','vol_fine'=>'Volume pasir','vol_coarse'=>'Volume kerikil','vol_air'=>'Volume udara','ratio_cement'=>'Perbandingan semen','ratio_fine'=>'Perbandingan pasir','ratio_coarse'=>'Perbandingan kerikil','ratio_water'=>'Perbandingan air', 'trial_cement'=>'Semen untuk percobaan','trial_fine'=>'Pasir untuk percobaan','trial_coarse'=>'Kerikil untuk percobaan','trial_water'=>'Air untuk percobaan','sacks_per_m3'=>'Jumlah zak semen per m³','fine_per_sack'=>'Pasir per zak semen','coarse_per_sack'=>'Kerikil per zak semen','water_per_sack'=>'Air per zak semen', 'sample_mass'=>'Massa sampel awal','selected_zone'=>'Batas gradasi terpilih','r750'=>'Tertahan 75 mm','r375'=>'Tertahan 37,5 mm','r190'=>'Tertahan 19 mm','r095'=>'Tertahan 9,5 mm','r475'=>'Tertahan 4,75 mm','r236'=>'Tertahan 2,36 mm','r118'=>'Tertahan 1,18 mm','r060'=>'Tertahan 0,60 mm','r030'=>'Tertahan 0,30 mm','r015'=>'Tertahan 0,15 mm','pan'=>'Tertahan wadah dasar' ]; $pretty=fn($key)=>$labels[$key]??ucwords(str_replace('_',' ',$key)); $value=function($v){ if($v instanceof \Carbon\CarbonInterface)return $v->format('d/m/Y'); if(is_bool($v))return $v?'Ya':'Tidak'; if(is_numeric($v))return number_format((float)$v,3,',','.'); return ($v===null||$v==='')?'—':$v; }; $latestMix=$mixDesigns->last();$mixInput=$latestMix?->input_data??[];$mixResult=$latestMix?->result_data??[]; $latestStrength=$strengthTests->last();$strengthResult=$latestStrength?->result_data??[]; $latestRun=function($aggregate,$type)use($aggregateRuns){return $aggregateRuns->where('aggregate_type',$aggregate)->where('test_type',$type)->last();}; $fineSource=$materialSources->firstWhere('type','fine')??$materialSources->firstWhere('type','pasir'); $coarseSource=$materialSources->firstWhere('type','coarse')??$materialSources->firstWhere('type','kerikil'); $cementSource=$materialSources->firstWhere('type','cement')??$materialSources->firstWhere('type','semen'); $waterSource=$materialSources->firstWhere('type','water')??$materialSources->firstWhere('type','air'); $runLabels=['moisture'=>'Pemeriksaan Kadar Air','silt'=>'Pemeriksaan Kadar Lumpur/Lolos No. 200','specific-gravity'=>'Pemeriksaan Berat Jenis dan Penyerapan','bulk-density'=>'Pemeriksaan Berat Isi','sieve'=>'Analisis Saringan','abrasion'=>'Keausan Agregat dengan Mesin Los Angeles']; $sieveInfo=[ 'fine'=>[['No.4',4.75,'r475'],['No.8',2.36,'r236'],['No.16',1.18,'r118'],['No.30',.60,'r060'],['No.50',.30,'r030'],['No.100',.15,'r015'],['Wadah dasar',0,'pan']], 'coarse'=>[['3 in',75,'r750'],['1½ in',37.5,'r375'],['¾ in',19,'r190'],['⅜ in',9.5,'r095'],['No.4',4.75,'r475'],['Wadah dasar',0,'pan']] ]; $fineLimits=['r475'=>[[90,100],[90,100],[90,100],[95,100]],'r236'=>[[60,95],[75,100],[85,100],[95,100]],'r118'=>[[30,70],[55,90],[75,100],[90,100]],'r060'=>[[15,34],[35,59],[60,79],[80,100]],'r030'=>[[5,20],[8,30],[12,40],[15,50]],'r015'=>[[0,10],[0,10],[0,10],[0,15]]]; $coarseLimits=['r750'=>[[null,null],[null,null],[100,100]],'r375'=>[[null,null],[100,100],[95,100]],'r190'=>[[100,100],[95,100],[35,70]],'r095'=>[[50,85],[30,60],[10,40]],'r475'=>[[0,10],[0,10],[0,5]]]; $sieveRows=function($run,$kind)use($sieveInfo){ $obs=$run?->observations[0]??[];$sample=(float)($obs['sample_mass']??0); if($sample<=0)$sample=array_sum(array_map(fn($row)=>(float)($obs[$row[2]]??0),$sieveInfo[$kind])); $cumulative=0;$rows=[]; foreach($sieveInfo[$kind] as [$label,$mm,$key]){ $retained=(float)($obs[$key]??0);$percent=$sample>0?$retained/$sample*100:0;$cumulative+=$percent; $rows[$key]=compact('label','mm','retained','percent','cumulative')+['passing'=>max(0,100-$cumulative)]; } return [$sample,$rows]; }; $chart=function($run,$kind,$zone=null)use($sieveRows,$fineLimits,$coarseLimits){ [, $rows]=$sieveRows($run,$kind);$plot=array_values(array_filter($rows,fn($row)=>$row['mm']>0)); $w=700;$h=330;$left=48;$right=18;$top=18;$bottom=42;$pw=$w-$left-$right;$ph=$h-$top-$bottom;$count=max(2,count($plot)); $xy=function($i,$v)use($left,$top,$pw,$ph,$count){$x=$left+$i*$pw/($count-1);$y=$top+(100-$v)*$ph/100;return round($x,1).','.round($y,1);}; $svg=''; for($i=0;$i<=10;$i++){$y=$top+$i*$ph/10;$v=100-$i*10;$svg.=''.$v.'';} $svg.=''; $points=[];foreach($plot as $i=>$row){$points[]=$xy($i,$row['passing']);$x=explode(',',$xy($i,0))[0];$svg.=''.$row['label'].''.$row['mm'].' mm';} if($run)$svg.=''; $limits=$kind==='fine'?$fineLimits:$coarseLimits;$zones=$zone?[intval($zone)]:range(1,$kind==='fine'?4:3);$colors=['#1d63d5','#149447','#e67e22','#7048e8']; foreach($zones as $z){$lo=[];$hi=[];foreach($plot as $i=>$row){$pair=$limits[array_search($row,$rows,true)]??[null,null];$bounds=$pair[$z-1]??[null,null];if($bounds[0]!==null)$lo[]=$xy($i,$bounds[0]);if($bounds[1]!==null)$hi[]=$xy($i,$bounds[1]);}if(count($lo)>1)$svg.='';if(count($hi)>1)$svg.='';} $svg.='Persen lolos kumulatif (%)Ukuran saringan— Hasil pengujian'; return 'Grafik gradasi'; }; $preface=$setting->preface_template?:'Puji syukur ke hadirat Tuhan Yang Maha Esa, laporan desain campuran beton untuk pekerjaan [PROYEK] telah diselesaikan. Laporan ini memuat data umum, pemeriksaan bahan, perhitungan desain campuran menurut SNI 7656:2012, hasil kuat tekan, kesimpulan, dokumentasi, dan dasar teori. Seluruh bagian dihimpun dalam satu dokumen agar dapat diperiksa secara berurutan.'; $preface=str_replace(['[PROYEK]','[PERUSAHAAN]','[TANGGAL]'],[$project->name,$project->owner?:$project->contractor,$project->legalized_at?->format('d/m/Y')?:date('d/m/Y')],$preface); $missing='
Data pengujian belum tersedia pada proyek ini. Bagian tetap ditampilkan agar susunan laporan tidak terlewat.
'; @endphp
{!!$header()!!}

LAPORAN HASIL
DESAIN CAMPURAN BETON

METODE SNI 7656:2012

{{$project->name}}

{{$project->work_package?:'Paket pekerjaan belum diisi'}}
{{$project->location?:'Lokasi belum diisi'}}

{{$project->owner?:($project->contractor?:'Pemohon belum diisi')}}

Nomor laporan: {{$project->number}} • Revisi {{$project->report_revision}}

@if($qrDataUri)
Pindai untuk memeriksa keaslian laporan
@endif {!!$footer()!!}
{!!$header()!!}

KATA PENGANTAR

{{$preface}}

Penyusun menyadari bahwa laporan ini perlu dibaca bersama data sumber dan kondisi pelaksanaan di lapangan. Koreksi atau perubahan data harus dilakukan melalui revisi laporan yang tercatat pada sistem.

@php $prefaceApproval=$approvalQrCodes->firstWhere('approval_role','mengetahui')?:$approvalQrCodes->first(); @endphp @if($prefaceApproval)
{{$project->location?:'Lokasi penerbitan'}}, {{$prefaceApproval->approved_at?->format('d/m/Y')}}
{{strtoupper($prefaceApproval->approval_role)}}

{{$prefaceApproval->user->name}}
{{$prefaceApproval->user->position?:$prefaceApproval->user->role}}
Ditandatangani secara elektronik
@endif {!!$footer()!!}
{!!$header()!!}

DAFTAR ISI

@foreach($reportMixTypes as $tocMixType) @php $tocSuffix=count($reportMixTypes)>1?($loop->iteration===1?'A':'B'):''; $tocTitle=$tocMixType==='mix-design-2012-combined'?'Desain Campuran 2012 (Gradasi Gabungan)':'Desain Campuran 2012'; @endphp @endforeach
Kata Pengantari
Daftar Isiii
BAB I PENDAHULUAN1
1.1 Data Umum Pekerjaan1
1.2 Latar Belakang dan Lingkup Pekerjaan1
1.3 Maksud dan Tujuan2
1.4 Lokasi Pekerjaan2
1.5 Data Bahan2
1.6 Pemeriksaan dan Pengujian Laboratorium3
BAB II HASIL DAN PEMBAHASAN4
2.1{{$tocSuffix}} Lembar Hasil {{$tocTitle}}4
2.2{{$tocSuffix}} Pemakaian Bahan5
2.3{{$tocSuffix}} Perhitungan {{$tocTitle}}6
2.4 Hasil Pengujian Kuat Tekan8
BAB III PENUTUP9
3.1 Kesimpulan9
3.2 Saran9
LAMPIRAN HASIL PEMERIKSAAN MATERIALL-1
Grafik Gradasi Pasir dan KerikilL-9
Keausan Agregat KasarL-16
DokumentasiL-17
Dasar Teori dan Standar AcuanL-18
{!!$footer()!!}
{!!$header()!!}

BAB I
PENDAHULUAN

1.1 Data Umum Pekerjaan

Nomor proyek/laporan{{$project->number}}
Nama pekerjaan{{$project->name}}
Paket pekerjaan{{$project->work_package?:'—'}}
Pemilik pekerjaan{{$project->owner?:'—'}}
Kontraktor pelaksana{{$project->contractor?:'—'}}
Konsultan{{$project->consultant?:'—'}}
Nomor/tanggal kontrak{{$project->contract_number?:'—'}} / {{$project->contract_date?->format('d/m/Y')?:'—'}}
Jangka waktu{{$project->start_date?->format('d/m/Y')?:'—'}} s.d. {{$project->end_date?->format('d/m/Y')?:'—'}}
Mutu beton rencana{{$project->concrete_grade?:($mixInput['fc']??'—')}}
Jenis konstruksi{{$project->construction_type?:'—'}}

1.2 Latar Belakang dan Lingkup Pekerjaan

Desain campuran beton diperlukan untuk menentukan perbandingan bahan yang dapat mencapai kuat tekan, kelecakan, keawetan, dan kemudahan pelaksanaan sesuai kebutuhan pekerjaan. Lingkup laporan meliputi identifikasi bahan, pemeriksaan sifat bahan, analisis gradasi, perhitungan proporsi campuran, koreksi kadar air, campuran percobaan, dan evaluasi kuat tekan.

{!!$footer()!!}
{!!$header()!!}

BAB I
PENDAHULUAN (LANJUTAN)

1.3 Maksud dan Tujuan

  1. Memperoleh proporsi semen, air, pasir, dan kerikil untuk satu meter kubik beton.
  2. Memenuhi mutu beton dan slump rencana sesuai data proyek.
  3. Menetapkan koreksi bahan berdasarkan kadar air dan penyerapan agregat.
  4. Menyajikan dasar pemeriksaan dan evaluasi hasil campuran secara terdokumentasi.

1.4 Lokasi Pekerjaan

{{$project->location?:'Lokasi pekerjaan belum diisi pada data proyek.'}}

1.5 Data-data Bahan

@foreach([['Semen',$cementSource],['Air',$waterSource],['Agregat halus/pasir',$fineSource],['Agregat kasar/kerikil',$coarseSource]] as [$name,$source])@endforeach
BahanNama/MerekProdusen/SumberPemasok
{{$name}}{{$source?->brand?:($source?->name?:'Belum diisi')}}{{$source?->producer?:($source?->quarry?:'Belum diisi')}}{{$source?->supplier?:'—'}}

1.6 Pemeriksaan dan Pengujian di Laboratorium

Pemeriksaan mencakup kadar air, kadar lumpur, berat jenis dan penyerapan, berat isi, analisis saringan, modulus kehalusan, serta keausan agregat kasar. Hasil lengkap disajikan pada lampiran dan digunakan sebagai dasar perhitungan desain campuran.

{!!$footer()!!}
@foreach($reportMixTypes as $reportMixType) @php $latestMix=$mixDesigns->where('type',$reportMixType)->last(); $mixInput=$latestMix?->input_data??[]; $mixResult=$latestMix?->result_data??[]; $mixReportTitle=$reportMixType==='mix-design-2012-combined'?'DESAIN CAMPURAN 2012 (GRADASI GABUNGAN)':'DESAIN CAMPURAN 2012'; $mixSectionSuffix=count($reportMixTypes)>1?($loop->iteration===1?'A':'B'):''; @endphp
{!!$header()!!}

BAB II
HASIL DAN PEMBAHASAN

2.1{{$mixSectionSuffix}} Lembar Hasil {{$mixReportTitle}}

Kepada Yth.
{{$project->owner?:($project->contractor?:'Pemohon pekerjaan')}}
di tempat

Berdasarkan pemeriksaan bahan dan perhitungan desain campuran beton untuk pekerjaan {{$project->name}}, diperoleh komposisi rencana sebagai berikut.

@if($latestMix)
Nomor desain: {{$latestMix->number}} • Tanggal: {{$latestMix->work_date?->format('d/m/Y')}}
Komposisi bahan untuk 1 m³ beton
BahanKondisi SSD (kg)Kondisi lapangan (kg)Perbandingan berat
Semen{{$value($mixResult['cement']??null)}}{{$value($mixResult['cement']??null)}}1,000
Air{{$value($mixInput['water']??null)}}{{$value($mixResult['water_added']??null)}}{{$value($mixResult['ratio_water']??null)}}
Agregat halus/pasir{{$value($mixResult['fine_ssd']??null)}}{{$value($mixResult['fine_field']??null)}}{{$value($mixResult['ratio_fine']??null)}}
Agregat kasar/kerikil{{$value($mixResult['coarse_ssd']??null)}}{{$value($mixResult['coarse_field']??null)}}{{$value($mixResult['ratio_coarse']??null)}}
Jumlah{{$value($mixResult['total_fresh_mass']??null)}}
Mutu rencana: {{$value($mixInput['fc']??null)}} MPa
Slump rencana: {{$value($mixInput['slump_design']??null)}} mm
Ukuran agregat maksimum: {{$value($mixInput['max_size']??null)}} mm
Rasio air-semen: {{$value($mixResult['wc_ratio_calculated']??null)}}
Pasir optimum: {{$value($mixResult['combined_fine_percent']??null)}} %
Kerikil optimum: {{$value($mixResult['combined_coarse_percent']??null)}} %
@else {!!$missing!!} @endif

Catatan: Proporsi harus dikoreksi kembali apabila kadar air agregat, sumber bahan, gradasi, atau kondisi pelaksanaan berubah.

{!!$footer()!!}
{!!$header()!!}

2.2{{$mixSectionSuffix}} PEMAKAIAN BAHAN
{{$mixReportTitle}}

@if($latestMix) @php $usage=[ ['Berat beton segar rencana',$mixInput['fresh_density']??$mixResult['total_fresh_mass']??null,'kg/m³'], ['Berat semen',$mixResult['cement']??null,'kg/m³'],['Berat air desain',$mixInput['water']??null,'kg/m³'], ['Berat agregat tersedia (beton − semen − air)',$mixResult['aggregate_mass_available']??null,'kg/m³'], ['Agregat halus kondisi SSD',$mixResult['fine_ssd']??null,'kg/m³'],['Agregat kasar kondisi SSD',$mixResult['coarse_ssd']??null,'kg/m³'], ['Pasir kondisi lapangan',$mixResult['fine_field']??null,'kg/m³'],['Kerikil kondisi lapangan',$mixResult['coarse_field']??null,'kg/m³'], ['Air yang ditambahkan',$mixResult['water_added']??null,'kg/m³'],['Jumlah zak semen 50 kg',$mixResult['sacks_per_m3']??null,'zak/m³'], ['Pasir per zak semen',$mixResult['fine_per_sack']??null,'kg/zak'],['Kerikil per zak semen',$mixResult['coarse_per_sack']??null,'kg/zak'],['Air per zak semen',$mixResult['water_per_sack']??null,'liter/zak'] ]; @endphp @foreach($usage as $i=>$row)@endforeach
No.UraianNilaiSatuan
{{$i+1}}{{$row[0]}}{{$value($row[1])}}{{$row[2]}}

Komposisi Campuran Percobaan

Volume percobaanSemenAirPasirKerikil
{{$value($mixInput['trial_volume_liter']??20)}} liter{{$value($mixResult['trial_cement']??null)}} kg{{$value($mixResult['trial_water']??null)}} kg{{$value($mixResult['trial_fine']??null)}} kg{{$value($mixResult['trial_coarse']??null)}} kg
Berat agregat dihitung dari berat beton rencana dikurangi berat semen dan air, kemudian dibagi menurut persentase pasir dan kerikil hasil analisis gradasi gabungan.
@else {!!$missing!!} @endif {!!$footer()!!}
{!!$header()!!}

2.3{{$mixSectionSuffix}} PERHITUNGAN {{$mixReportTitle}}
SNI 7656:2012

@if($latestMix)

Nomor perhitungan: {{$latestMix->number}}

@php $steps=[ ['Kuat tekan karakteristik (f’c)',$mixInput['fc']??null,'MPa'],['Deviasi standar',$mixInput['sd']??null,'MPa'],['Margin tambahan',$mixResult['margin']??null,'MPa'],['Kuat tekan rata-rata sasaran (f’cr)',$mixResult['fcr']??null,'MPa'], ['Slump rencana',$mixInput['slump_design']??null,'mm'],['Ukuran maksimum agregat kasar',$mixInput['max_size']??null,'mm'],['Kebutuhan air',$mixInput['water']??null,'kg/m³'],['Kadar udara',$mixInput['air_content']??null,'%'], ['Rasio air-semen hasil interpolasi',$mixResult['wc_ratio_calculated']??null,''],['Berat semen = air ÷ rasio air-semen',$mixResult['cement']??null,'kg/m³'],['Berat beton segar',$mixInput['fresh_density']??null,'kg/m³'],['Berat agregat tersedia',$mixResult['aggregate_mass_available']??null,'kg/m³'], ['Persentase pasir gradasi gabungan',$mixResult['combined_fine_percent']??null,'%'],['Persentase kerikil gradasi gabungan',$mixResult['combined_coarse_percent']??null,'%'],['Deviasi rata-rata gradasi',$mixResult['combined_deviation']??null,''] ]; @endphp @foreach($steps as $i=>$row)@endforeach
No.Langkah PerhitunganNilai
{{$i+1}}{{$row[0]}}{{$value($row[1])}} {{$row[2]}}

Metode perhitungan menggunakan volume absolut dan/atau pembagian massa agregat berdasarkan hasil analisis gradasi gabungan, kemudian dilakukan koreksi kelembapan bahan.

@else {!!$missing!!} @endif {!!$footer()!!}
{!!$header()!!}

2.3{{$mixSectionSuffix}} PERHITUNGAN {{$mixReportTitle}}
(LANJUTAN)

@if($latestMix)

Volume Absolut dan Koreksi Kelembapan

KomponenMassa (kg/m³)Berat jenisVolume (m³)
Air{{$value($mixInput['water']??null)}}1,000{{$value($mixResult['vol_water']??null)}}
Semen{{$value($mixResult['cement']??null)}}{{$value($mixInput['cement_sg']??null)}}{{$value($mixResult['vol_cement']??null)}}
Pasir{{$value($mixResult['fine_ssd']??null)}}{{$value($mixInput['fine_sg']??null)}}{{$value($mixResult['vol_fine']??null)}}
Kerikil{{$value($mixResult['coarse_ssd']??null)}}{{$value($mixInput['coarse_sg']??null)}}{{$value($mixResult['vol_coarse']??null)}}
Udara{{$value($mixResult['vol_air']??null)}}
BahanKadar air (%)Penyerapan (%)Air bebas (kg)Berat lapangan (kg)
Pasir{{$value($mixInput['fine_moisture']??null)}}{{$value($mixInput['fine_absorption']??null)}}{{$value($mixResult['fine_free_water']??null)}}{{$value($mixResult['fine_field']??null)}}
Kerikil{{$value($mixInput['coarse_moisture']??null)}}{{$value($mixInput['coarse_absorption']??null)}}{{$value($mixResult['coarse_free_water']??null)}}{{$value($mixResult['coarse_field']??null)}}

Perbandingan Akhir

Semen : Pasir : Kerikil : Air = 1 : {{$value($mixResult['ratio_fine']??null)}} : {{$value($mixResult['ratio_coarse']??null)}} : {{$value($mixResult['ratio_water']??null)}}
@else {!!$missing!!} @endif {!!$footer()!!}
@endforeach @php $latestMix=$mixDesigns->last(); $mixInput=$latestMix?->input_data??[]; $mixResult=$latestMix?->result_data??[]; @endphp
{!!$header()!!}

2.4 HASIL PENGUJIAN KUAT TEKAN BETON

@if($latestStrength)

Nomor pengujian: {{$latestStrength->number}} • Sasaran: {{$value($latestStrength->input_data['target_fc']??null)}} MPa

@forelse(($latestStrength->result_data['detail_rows']??[]) as $row)@empty@endforelse
No.Tanggal buatTanggal ujiUmur (hari)Diameter/Tinggi (mm)Berat (kg)Beban (kN)Aktual (MPa)Perkiraan 28 hari (MPa)Mutu K (kg/cm²)
{{$row['number']}}{{$row['cast_date']}}{{$row['test_date']}}{{$row['age_days']}}{{$value($row['diameter'])}} / {{$value($row['height'])}}{{$value($row['weight'])}}{{$value($row['load_kn'])}}{{$value($row['actual_mpa'])}}{{$value($row['estimated_28_mpa'])}}{{$value($row['estimated_k_kgcm2'])}}
Rincian benda uji belum tersedia.
Jumlah benda uji{{$value($strengthResult['Jumlah benda uji']??null)}}
Rata-rata perkiraan umur 28 hari{{$value($strengthResult['Rata-rata perkiraan 28 hari (MPa)']??null)}} MPa
Standar deviasi sampel{{$value($strengthResult['Standar deviasi sampel (MPa)']??null)}} MPa
Kuat tekan karakteristik{{$value($strengthResult['Kuat tekan karakteristik (MPa)']??null)}} MPa
Status{{$strengthResult['Status']??'Belum dievaluasi'}}
@else {!!$missing!!} @endif {!!$footer()!!}
{!!$header()!!}

BAB III
PENUTUP

3.1 Kesimpulan

  1. Desain campuran beton untuk pekerjaan {{$project->name}} disusun menggunakan metode SNI 7656:2012 berdasarkan data bahan yang tersimpan pada proyek.
  2. @if($latestMix)
  3. Komposisi kondisi lapangan per meter kubik adalah semen {{$value($mixResult['cement']??null)}} kg, air {{$value($mixResult['water_added']??null)}} kg, pasir {{$value($mixResult['fine_field']??null)}} kg, dan kerikil {{$value($mixResult['coarse_field']??null)}} kg.
  4. Rasio air-semen hasil perhitungan sebesar {{$value($mixResult['wc_ratio_calculated']??null)}} dengan perbandingan berat 1 : {{$value($mixResult['ratio_fine']??null)}} : {{$value($mixResult['ratio_coarse']??null)}}.
  5. @else
  6. Data desain campuran belum tersedia sehingga kesimpulan komposisi belum dapat ditetapkan.
  7. @endif @if($latestStrength)
  8. Hasil evaluasi kuat tekan berstatus {{$strengthResult['Status']??'belum dievaluasi'}}, dengan kuat tekan karakteristik {{$value($strengthResult['Kuat tekan karakteristik (MPa)']??null)}} MPa.
  9. @else
  10. Hasil kuat tekan belum tersedia dan perlu dilengkapi setelah benda uji mencapai umur pengujian.
  11. @endif

3.2 Saran

  1. Lakukan pengendalian kadar air agregat setiap kali produksi agar jumlah air efektif tetap sesuai desain.
  2. Gunakan bahan dari sumber yang sama; perubahan sumber atau gradasi memerlukan pemeriksaan dan perhitungan ulang.
  3. Laksanakan penakaran, pengadukan, pemadatan, perawatan, dan pengujian beton sesuai standar yang berlaku.
  4. Campuran produksi harus dikonfirmasi melalui campuran percobaan dan evaluasi kuat tekan.
@if($approvalQrCodes->isNotEmpty())@endif {!!$footer()!!}
@foreach(['fine'=>'AGREGAT HALUS/PASIR','coarse'=>'AGREGAT KASAR/KERIKIL'] as $aggregate=>$aggregateName) @foreach(['moisture','silt','specific-gravity','bulk-density'] as $testType) @php $run=$latestRun($aggregate,$testType); @endphp
{!!$header()!!}

LAMPIRAN
{{$runLabels[$testType]}}
{{$aggregateName}}

@if($run)
Nomor pengujian{{$run->test_number}}Nomor sampel{{$run->sample_number}}
Tanggal{{$run->tested_at?->format('d/m/Y')}}Petugas{{$run->technician}}
@php $fieldKeys=collect($run->observations??[])->flatMap(fn($o)=>array_keys($o))->reject(fn($k)=>str_starts_with($k,'zone_')||str_ends_with($k,'_sieve_mass')||str_ends_with($k,'_combined_mass'))->unique()->values(); @endphp @foreach($run->observations??[] as $i=>$obs)@endforeach @foreach($fieldKeys as $key)@foreach($run->observations??[] as $obs)@endforeach@endforeach
Parameter pengamatanObservasi {{$i+1}}
{{$pretty($key)}}{{$value($obs[$key]??null)}}

Hasil Perhitungan

@foreach(($run->results['observations']??[]) as $obs)@endforeach @forelse(($run->results['averages']??[]) as $key=>$avg)@foreach(($run->results['observations']??[]) as $obs)@endforeach@empty@endforelse
Parameter hasilObservasi {{$obs['number']??$loop->iteration}}Rata-rata
{{$pretty($key)}}{{$value($obs['values'][$key]??null)}}{{$value($avg)}}
Hasil perhitungan belum tersedia.

Metode: {{$run->results['formula']??'Sesuai metode pemeriksaan agregat yang berlaku.'}}

@else {!!$missing!!} @endif {!!$footer()!!}
@endforeach @endforeach @foreach(['Pemeriksaan Semen','Pemeriksaan Air'] as $sectionName) @php $tests=$materialTests[$sectionName]??collect(); $test=$tests->first(); @endphp
{!!$header()!!}

LAMPIRAN
{{strtoupper($sectionName)}}

@if($test)
Nomor pengujian{{$test->test_number}}
Nomor sampel{{$test->sample_number}}
Tanggal pengujian{{$test->tested_at?->format('d/m/Y')}}
Petugas{{$test->technician}}
@foreach($test->getAttributes() as $key=>$raw)@if(!in_array($key,['id','project_id','test_number','sample_number','tested_at','technician','created_by','updated_by','deleted_at','created_at','updated_at','status'])&&$raw!==null)@endif @endforeach
ParameterHasil
{{$pretty($key)}}{{$value($raw)}}
@else {!!$missing!!} @endif {!!$footer()!!}
@endforeach @foreach(['fine'=>'AGREGAT HALUS/PASIR','coarse'=>'AGREGAT KASAR/KERIKIL'] as $aggregate=>$aggregateName) @php $run=$latestRun($aggregate,'sieve'); $sieveResult=$sieveRows($run,$aggregate); $sampleMass=$sieveResult[0]; $rows=$sieveResult[1]; @endphp
{!!$header()!!}

LAMPIRAN
ANALISIS SARINGAN {{$aggregateName}}

@if($run)

Nomor: {{$run->test_number}} • Massa sampel: {{$value($sampleMass)}} g

@else {!!$missing!!} @endif @foreach($rows as $row)@endforeach
SaringanUkuran (mm)Massa tertahan (g)% Tertahan% Kumulatif% Lolos
{{$row['label']}}{{$value($row['mm'])}}{{$run?$value($row['retained']):'—'}}{{$run?$value($row['percent']):'—'}}{{$run?$value($row['cumulative']):'—'}}{{$run?$value($row['passing']):'—'}}
{!!$chart($run,$aggregate)!!}

Garis merah menunjukkan hasil pengujian; garis berwarna menunjukkan batas bawah dan atas gradasi.

{!!$footer()!!}
@endforeach @for($zone=1;$zone<=4;$zone++) @php $run=$latestRun('fine','sieve'); @endphp
{!!$header()!!}

LAMPIRAN
BATAS GRADASI PASIR ZONA {{$zone}}

{!!$chart($run,'fine',$zone)!!} @foreach($sieveInfo['fine'] as [$label,$mm,$key])@if($mm>0)@endif @endforeach
SaringanBatas bawah (%)Batas atas (%)
{{$label}} ({{$value($mm)}} mm){{$value($fineLimits[$key][$zone-1][0]??null)}}{{$value($fineLimits[$key][$zone-1][1]??null)}}
{!!$footer()!!}
@endfor @foreach([1=>'10 mm',2=>'20 mm',3=>'40 mm'] as $zone=>$sizeName) @php $run=$latestRun('coarse','sieve'); @endphp
{!!$header()!!}

LAMPIRAN
BATAS GRADASI KERIKIL MAKSIMUM {{$sizeName}}

{!!$chart($run,'coarse',$zone)!!} @foreach($sieveInfo['coarse'] as [$label,$mm,$key])@if($mm>0)@endif @endforeach
SaringanBatas bawah (%)Batas atas (%)
{{$label}} ({{$value($mm)}} mm){{$value($coarseLimits[$key][$zone-1][0]??null)}}{{$value($coarseLimits[$key][$zone-1][1]??null)}}
{!!$footer()!!}
@endforeach @php $abrasionRun=$latestRun('coarse','abrasion'); @endphp
{!!$header()!!}

LAMPIRAN
KEKERASAN/KEAUSAN AGREGAT KASAR
MESIN LOS ANGELES

@if($abrasionRun)
Nomor pengujian{{$abrasionRun->test_number}}
Nomor sampel{{$abrasionRun->sample_number}}
Tanggal{{$abrasionRun->tested_at?->format('d/m/Y')}}
@foreach($abrasionRun->observations??[] as $i=>$obs)@endforeach @php $abrasionKeys=collect($abrasionRun->observations??[])->flatMap(fn($o)=>array_keys($o))->unique(); @endphp @foreach($abrasionKeys as $key)@foreach($abrasionRun->observations??[] as $obs)@endforeach@endforeach @foreach(($abrasionRun->results['averages']??[]) as $key=>$avg)@endforeach
ParameterObservasi {{$i+1}}
{{$pretty($key)}}{{$value($obs[$key]??null)}}
{{$pretty($key)}} rata-rata{{$value($avg)}}

Kesimpulan: Nilai keausan hasil pengujian harus dibandingkan dengan persyaratan spesifikasi teknis pekerjaan.

@else {!!$missing!!} @endif {!!$footer()!!}
@if($documents->isNotEmpty()) @foreach($documents as $module=>$photos)@foreach($photos->chunk(2) as $chunk)
{!!$header()!!}

LAMPIRAN DOKUMENTASI
{{\App\Http\Controllers\TestDocumentationController::MODULES[$module]??$pretty($module)}}

@foreach($chunk as $photo)
{{$photo->title}}
{{$photo->documented_at?->format('d/m/Y')}} • {{$photo->description}}
@endforeach {!!$footer()!!}
@endforeach @endforeach @else
{!!$header()!!}

LAMPIRAN DOKUMENTASI

{!!$missing!!}
Tempat foto dokumentasi pemeriksaan bahan
Tempat foto dokumentasi campuran dan benda uji
{!!$footer()!!}
@endif
{!!$header()!!}

LAMPIRAN
DASAR TEORI DAN STANDAR ACUAN

A. Pengertian Desain Campuran Beton

Desain campuran beton adalah proses penentuan proporsi bahan penyusun beton agar diperoleh sifat beton segar dan beton keras yang memenuhi kebutuhan struktur dengan penggunaan bahan yang wajar.

B. Tujuan

C. Bahan Penyusun

Semen berfungsi sebagai bahan pengikat; air memicu hidrasi dan memberi kelecakan; agregat halus mengisi rongga; agregat kasar membentuk kerangka utama; bahan tambah digunakan hanya bila direncanakan dan dikendalikan.

D. Parameter Penting

Kuat tekan rencana, deviasi standar, slump, ukuran agregat maksimum, gradasi, berat jenis, penyerapan, kadar air, berat isi, kadar udara, dan rasio air-semen merupakan parameter yang saling memengaruhi.

{!!$footer()!!}
{!!$header()!!}

LAMPIRAN
METODE PELAKSANAAN DAN DAFTAR ACUAN

E. Urutan Penerapan di Lapangan

  1. Verifikasi sumber dan kondisi bahan sebelum produksi.
  2. Ukur kadar air pasir dan kerikil, kemudian lakukan koreksi berat bahan dan air.
  3. Takar bahan berdasarkan berat, bukan perkiraan volume, kecuali sudah dikalibrasi.
  4. Aduk hingga homogen, periksa slump, suhu, dan berat isi beton segar.
  5. Buat, padatkan, identifikasi, dan rawat benda uji.
  6. Uji kuat tekan pada umur yang ditetapkan dan evaluasi hasil terhadap sasaran.

F. Standar Acuan

StandarRuang Lingkup
SNI 7656:2012Tata cara pemilihan campuran beton normal, beton berat, dan beton massa.
SNI ASTM C136:2012Metode uji analisis saringan agregat halus dan agregat kasar.
SNI 1970 dan SNI 1969Berat jenis dan penyerapan agregat halus serta agregat kasar.
SNI 2417Keausan agregat dengan mesin Los Angeles.
SNI 1972Metode uji slump beton.
SNI 1974Metode pengujian kuat tekan beton dengan benda uji silinder.
Gunakan edisi standar dan spesifikasi kontrak yang berlaku pada tanggal pelaksanaan. Apabila terdapat perbedaan, persyaratan proyek yang disahkan menjadi dasar evaluasi.
{!!$footer()!!}