diff --git a/Layout/default/Pipework/Index.php b/Layout/default/Pipework/Index.php index c9b22c776..dbb111c54 100644 --- a/Layout/default/Pipework/Index.php +++ b/Layout/default/Pipework/Index.php @@ -30,7 +30,7 @@

Filter

-
"> + ">
@@ -91,10 +91,23 @@
-
+
">Filter zurücksetzen
+
+ isAdmin()): ?> +
+
+ +
+
+ + +
@@ -293,6 +306,105 @@ $('select[name=wfitem_pipework_finished]').each(function() { }); }); + + var export_uid = ""; + var export_progress = 0; + var downloadUrl; + + $('#filterform').change(function() { + downloadUrl = ""; + }); + + /* + * Eport button click + */ + function exportButtonClick() { + if(downloadUrl) { + document.location.href = '?uid=' + export_uid + return; + } + + + var form = $('#filterform'); + var actionUrl = ''; + + $.ajax({ + type: "POST", + url: actionUrl, + data: form.serialize(), + dataType: "json", + success: function(success) { + if(success.status = "OK") { + if(success.uid) { + export_uid = success.uid; + export_progress = success.progress; + //$('#progress-bar-wrapper').show(); + $('#export-button-label').hide(); + $('#progress-bar').show(); + setTimeout(updateExportProgress, 200); + $('#export-button').addClass("bg-dark"); + $('#export-button').prop("onclick", null).off("click"); + //$('#export-button').prop("disabled", true); + } else { + console.log("no uid returned"); + } + } + } + + }); + } + + function updateExportProgress() { + if(!export_uid) { + return false; + } + + $.get("", + { + uid: export_uid + }, + function(success) { + if(success.status == "OK") { + updateProgressBar(success.progress); + if(success.progress >= 100) { + downloadUrl = '?uid=' + export_uid; + setTimeout(() => {document.location.href = '?uid=' + export_uid}, 200); + setTimeout(clearProgressBar, 5000); + } else { + setTimeout(updateExportProgress, 500); + } + } + }, + "json" + ); + } + + function updateProgressBar(progress) { + $('#progress-bar').css("width", progress + "%"); + $('#progress-bar').text("Bitte warten... " + progress + "%"); + + /*if(progress > 50) { + $('#progress-bar').removeClass("text-secondary"); + }*/ + + if(progress >= 100) { + $('#progress-bar').addClass("bg-success").removeClass("bg-primary"); + } + + } + + function clearProgressBar() { + //$('#progress-bar-wrapper').hide(); + $('#progress-bar').css("width", "0%"); + $('#progress-bar').text("Bitte warten... 0%"); + $('#progress-bar').addClass("bg-primary").removeClass("bg-success"); + $('#export-button').prop("disabled", false); + $('#progress-bar').hide(); + $('#export-button').removeClass("bg-dark"); + $('#export-button').click(exportButtonClick); + $('#export-button-label').show(); + } + diff --git a/Layout/default/Pipework/export_progress.xls.php b/Layout/default/Pipework/export_progress.xls.php new file mode 100644 index 000000000..af6ce3923 --- /dev/null +++ b/Layout/default/Pipework/export_progress.xls.php @@ -0,0 +1,440 @@ +loadByUid($export_uid); + $progress->filename = $filename; +} + + +$col = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ','BA', + 'BB','BC','BD','BE','BF','BG','BH','BI','BJ','BK','BL','BM','BN','BO','BP','BQ','BR','BS','BT','BU','BV','BW','BX','BY','BZ' + ); + +use PhpOffice\PhpSpreadsheet\Spreadsheet; +use PhpOffice\PhpSpreadsheet\Writer\Xlsx; +use PhpOffice\PhpSpreadsheet\Style\Alignment; +use PhpOffice\PhpSpreadsheet\Style\Border; +use PhpOffice\PhpSpreadsheet\Style\Color; + +$lightgreen = "f5ffeb"; + +$xls = new Spreadsheet(); +$sheet = $xls->getActiveSheet(); + +// header +$i = 0; + +$sheet->setCellValue($col[$i++].'1', "id"); +$sheet->setCellValue($col[$i++].'1', "Netzgebiet"); +$sheet->setCellValue($col[$i++].'1', "PLZ"); +$sheet->setCellValue($col[$i++].'1', "Ort"); +$sheet->setCellValue($col[$i++].'1', "Bauabschnitt"); +$sheet->setCellValue($col[$i++].'1', "Straße"); +$sheet->setCellValue($col[$i++].'1', "Gebäudecode"); +$sheet->setCellValue($col[$i++].'1', "GPS Breite"); +$sheet->setCellValue($col[$i++].'1', "GPS Länge"); +$sheet->setCellValue($col[$i++].'1', "Gebäudestatus Code"); +$sheet->setCellValue($col[$i++].'1', "Gebäudestatus"); + +$sheet->setCellValue($col[$i++].'1', "Kontakt"); +$sheet->setCellValue($col[$i++].'1', "Telefon"); +$sheet->setCellValue($col[$i++].'1', "Email"); + +$sheet->setCellValue($col[$i++].'1', "Baufreigabe"); + +$sheet->setCellValue($col[$i++].'1', "AP-Typ (Planung)"); +$sheet->setCellValue($col[$i++].'1', "AP-Typ (Ist-Zustand)"); +$sheet->setCellValue($col[$i++].'1', "AP-Name (Planung)"); +$sheet->setCellValue($col[$i++].'1', "AP-Name (Ist-Zustand)"); +$sheet->setCellValue($col[$i++].'1', "AP GPS Breite (Planung)"); +$sheet->setCellValue($col[$i++].'1', "AP GPS Länge (Planung)"); +$sheet->setCellValue($col[$i++].'1', "AP GPS Breite (Ist-Zustand)"); +$sheet->setCellValue($col[$i++].'1', "AP GPS Länge (Ist-Zustand)"); +$sheet->setCellValue($col[$i++].'1', "Rohrverband (Planung)"); +$sheet->setCellValue($col[$i++].'1', "Rohrverband (Ist-Zustand)"); +$sheet->setCellValue($col[$i++].'1', "Rohrtyp (Planung)"); +$sheet->setCellValue($col[$i++].'1', "Rohrtyp (Ist-Zustand)"); +$sheet->setCellValue($col[$i++].'1', "Rohrfarbe (Planung)"); +$sheet->setCellValue($col[$i++].'1', "Rohrfarbe (Ist-Zustand)"); + +$sheet->setCellValue($col[$i++].'1', "Kommentar Tiefbau"); +//$sheet->setCellValue($col[$i++].'1', "Kommentar Leitungsbau"); + +$sheet->getStyle("A1:".$col[$i]."1")->getFont()->setBold(true); + +$sheet->getRowDimension(1)->setRowHeight(16); + + +$line = 2; + +foreach($networks as $networkname => $buildings) { + + foreach($buildings as $building) { + $i = 0; + + $sheet->setCellValue($col[$i].$line, $building->id)->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $networkname); + $i++; + $sheet->setCellValue($col[$i].$line, $building->zip); + $i++; + $sheet->setCellValue($col[$i].$line, $building->city); + $i++; + $sheet->setCellValue($col[$i].$line, $building->networksection->name); + $i++; + $sheet->setCellValue($col[$i].$line, $building->street); + $i++; + $sheet->setCellValue($col[$i].$line, $building->code)->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $building->gps_lat)->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); + $i++; + $sheet->setCellValue($col[$i].$line, $building->gps_long)->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); + $i++; + $sheet->setCellValue($col[$i].$line, $building->status->code)->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $building->status->name)->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $i++; + + $sheet->setCellValue($col[$i].$line, $building->contact); + $i++; + $sheet->setCellValue($col[$i].$line, $building->phone); + $i++; + $sheet->setCellValue($col[$i].$line, $building->email); + $i++; + $sheet->setCellValue($col[$i].$line, $building->pipework_enabled); + $i++; + + + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue("anschlusspunkt_typ"))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue("ist_anschlusspunkt_typ"))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue('anschlusspunkt_name'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue('ist_anschlusspunkt_name'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + + $gps = explode(";", $building->getWorkflowvalue('anschlusspunkt_gps')); + if(is_array($gps) & count($gps) == 2) { + $sheet->setCellValue($col[$i].$line, $gps[0])->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + } + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); + if(is_array($gps) & count($gps) == 2) { + $sheet->setCellValue($col[$i+1].$line, $gps[1])->getStyle($col[$i+1].$line)->getFont()->setName("monospace")->setSize(10); + } + $sheet->getStyle($col[$i+1].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i+1].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); + $i += 2; + + $gps = explode(";", $building->getWorkflowvalue('ist_anschlusspunkt_gps')); + if(is_array($gps) & count($gps) == 2) { + $sheet->setCellValue($col[$i].$line, $gps[0])->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + } + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); + if(is_array($gps) & count($gps) == 2) { + $sheet->setCellValue($col[$i+1].$line, $gps[1])->getStyle($col[$i+1].$line)->getFont()->setName("monospace")->setSize(10); + } + $sheet->getStyle($col[$i+1].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $sheet->getStyle($col[$i+1].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i+1].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); + $i += 2; + + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue('rohrverband_name'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue('ist_rohrverband_name'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue('rohrtype'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + $sheet->setCellValue($col[$i].$line, $building->getWorkflowvalue('ist_rohrtype'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + $i++; + + + $color = $building->getWorkflowvalue('rohrfarbe'); + if($color) { + if(TT_CABLE_COLORS[$color]["mark"]) { + $sheet->setCellValue($col[$i].$line, "----- ".ucfirst($color)." -----"); + } else { + $sheet->setCellValue($col[$i].$line, ucfirst($color)); + } + $sheet->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10)->getColor()->setARGB(TT_CABLE_COLORS[$color]["hexfg"]); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB(TT_CABLE_COLORS[$color]["hex"]); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + } + $i++; + + $color = $building->getWorkflowvalue('ist_rohrfarbe'); + if($color) { + if(TT_CABLE_COLORS[$color]["mark"]) { + $sheet->setCellValue($col[$i].$line, "----- ".ucfirst($color)." -----"); + } else { + $sheet->setCellValue($col[$i].$line, ucfirst($color)); + } + $sheet->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10)->getColor()->setARGB(TT_CABLE_COLORS[$color]["hexfg"]); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB(TT_CABLE_COLORS[$color]["hex"]); + $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); + $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + } + $i++; + + +// +// /* +// * Linework data +// */ +// $sheet->setCellValue($col[$i].$line, ($term->getWorkflowvalue('pop_id')) ? (new Pop($term->getWorkflowvalue('pop_id')))->name : ""); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); +// $i++; +// $sheet->setCellValue($col[$i].$line, ($term->getWorkflowvalue('ist_pop_id')) ? (new Pop($term->getWorkflowvalue('ist_pop_id')))->name : ""); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('schrank'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_schrank'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('baugruppe'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_baugruppe'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('modul'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_modul'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ports'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_ports'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('abschlusstyp'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_abschlusstyp'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('bb_kabel'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_bb_kabel'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('bb_kabel_steps'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_bb_kabel_steps'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('bb_fasern'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_bb_fasern'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('kundenkabel_typ'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_kundenkabel_typ'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('kundenkabel_fasern'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ist_kundenkabel_fasern'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('backbone_finished'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('backbone_setup_date'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('customer_setup_date'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('bep_deployed'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('customer_cable_injected'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('spliced_network'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('spliced_customer'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ont_deployed'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('ont_sn'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// +// $sheet->setCellValue($col[$i].$line, $term->getWorkflowvalue('customer_passive_finished'))->getStyle($col[$i].$line)->getFont()->setName("monospace")->setSize(10); +// $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER); +// $sheet->getStyle($col[$i].$line)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); +// $i++; +// + + $sheet->setCellValue($col[$i].$line, $building->workflow_comment); + $sheet->getStyle($col[$i].$line)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB($lightgreen); + $i++; + + $sheet->getRowDimension($line)->setRowHeight(16); + $line++; + + + // progress + if($progress) { + $progress_percent = floor(($line * 100) / $lineMax); + $progress->progress = $progress_percent; + if($progress_percent >= 100) { + $progress->progress = 99; + } + $progress->save(); + } + } +} + +$sheet->getColumnDimension($col[$i-1])->setWidth(6, "in"); + +$sheet->getStyle("A2:".$col[$i].$line)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_HAIR)->setColor(new Color("C0C0C0")); +$sheet->freezePane("A2"); + + +for($c = 0; $c < $i-1; $c++) { + $sheet->getColumnDimension($col[$c])->setAutoSize(true); +} + + +//$writer = new Xls($xls); +$writer = new Xlsx($xls); + +//header("Content-type: application/vnd.ms-excel"); +//header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + +//header('Content-disposition: attachment; filename="leitungsbau-'.date('Y-m-d_H-i-s').'-'.uniqid().'.xlsx"'); +$writer->save($path."/".$filename); + +$progress->progress = 100; +$progress->save(); + +exit; + diff --git a/application/Linework/LineworkController.php b/application/Linework/LineworkController.php index 77a2bc8c8..786ccb715 100644 --- a/application/Linework/LineworkController.php +++ b/application/Linework/LineworkController.php @@ -210,6 +210,9 @@ class LineworkController extends mfBaseController { $cmd = BASEDIR."/scripts/start_workflow_export.php"; $args = ""; + $filter['type'] = "Pipework"; + $filter['user_id'] = $this->me->id; + foreach($get['filter'] as $key => $value) { $args .= " ".escapeshellarg("--$key")." ". escapeshellarg($value); } diff --git a/application/Pipework/PipeworkController.php b/application/Pipework/PipeworkController.php index 28e0261d2..7da2b0875 100644 --- a/application/Pipework/PipeworkController.php +++ b/application/Pipework/PipeworkController.php @@ -4,8 +4,12 @@ class PipeworkController extends mfBaseController { protected function init() { $this->needlogin=true; - $me = new User(); - $me->loadMe(); + $me = mfValuecache::singleton()->get("me"); + if(!$me) { + $me = new User(); + $me->loadMe(); + mfValuecache::singleton()->set("me", $this->me); + } $this->me = $me; $this->layout()->set("me",$me); @@ -33,6 +37,19 @@ class PipeworkController extends mfBaseController { $pagination['start'] = intval($this->request->s); } + if($this->request->export) { + $this->layout()->setTemplate("Pipework/export.xls"); + $pagination = []; + } + if($this->request->export_progress) { + $this->layout()->setTemplate("Pipework/export_progress.xls"); + if($this->request->uid) { + $this->layout()->set("export_uid", $this->request->uid); + $this->layout()->set("path", BASEDIR."/var/temp/export"); + } + $pagination = []; + } + $my_networks = []; // get allowed networks @@ -149,6 +166,119 @@ class PipeworkController extends mfBaseController { return $new_filter; } + public function startExport($request) { + $this->request = new mfRequest($request); + //var_dump($request);exit; + return $this->indexAction(); + } + + protected function exportAction() { + $uid = "wfExport_".uniqid()."-".mt_rand(10000,99999); + + $method = "http"; + if($_SERVER['HTTPS'] == "on") { + $method = "https"; + } + + $get = $this->request->get(); + unset($get['mod']); + unset($get['action']); + $get['export_progress'] = 1; + $get['uid'] = $uid; + $url = $method."://".$_SERVER['HTTP_HOST'].$this->getUrl("Pipework", "Index", $get); + $url = escapeshellarg($url); + //var_dump($url);exit; + + $progress = new WorkflowExport(); + $progress->uid = $uid; + $progress->create_by = $this->me->id; + $progress->edit_by = $this->me->id; + $progress->save(); + /* + $cmd = "nohup curl ".$url." >/dev/null 2>&1 &"; + var_dump($cmd);exit; + // start excel generation in background and dont wait + exec($cmd); + */ + + $cmd = BASEDIR."/scripts/start_workflow_export.php"; + $args = ""; + + $get['filter']['type'] = "Pipework"; + $get['filter']['user_id'] = $this->me->id; + + foreach($get['filter'] as $key => $value) { + $args .= " ".escapeshellarg("--$key")." ". escapeshellarg($value); + } + + + $cmd = "$cmd --uid ". escapeshellarg($uid)." $args >/dev/null 2>&1 &"; + $this->log->debug($cmd); + exec($cmd); + + // return progress + $this->returnJson(['status' => "OK", 'uid' => $uid, "progress" => 0]); + } + + protected function exportProgressAction() { + $uid = $this->request->uid; + if(!$uid) { + $this->returnJson(['status' => "error", "msg" => "no uid"]); + } + + $progress = new WorkflowExport(); + $progress->loadByUid($this->request->uid); + if(!$progress->id) { + $this->returnJson(['status' => "error", "msg" => "export not found"]); + } + + $this->returnJson(['status' => "OK", 'export_uid ' => $uid, 'progress' => $progress->progress]); + } + + protected function downloadExportAction() { + $uid = $this->request->uid; + if(!$uid) { + $this->returnJson(['status' => "error", "msg" => "no uid"]); + } + + $progress = new WorkflowExport(); + $progress->loadByUid($this->request->uid); + if(!$progress->id) { + $this->returnJson(['status' => "error", "msg" => "export not found"]); + } + + $file = BASEDIR."/var/temp/export/".$progress->filename; + + if (!$fh = fopen($file, 'r')) { + $this->layout()->setFlash("Fehler beim Export.", "error"); + $this->redirect("Linework"); + return false; + } + + set_time_limit(36000); + header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + header('Content-disposition: attachment; filename="' . $progress->filename . '"'); + + $size = exec('stat -c %s '.escapeshellarg($file)); + + $this->log->debug("filename: ".$file); + $this->log->debug("filesize: ".$size); + + if(strlen($size)) { + if($size < (pow(2,31))-1) { + header('Content-Length: ' . $size); + } + } + + while (!feof($fh)) { + $data = fread($fh, 8192); + echo $data; + } + exit; + + } + + protected function saveAction() { $r = $this->request; //var_dump($r->get());exit; diff --git a/scripts/start_workflow_export.php b/scripts/start_workflow_export.php index bf4171b1c..3eecd8d16 100755 --- a/scripts/start_workflow_export.php +++ b/scripts/start_workflow_export.php @@ -11,8 +11,7 @@ require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php"); require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php"); require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php"); -$me = new User(1); -mfValuecache::singleton()->set("me", $me); + $request=array(); @@ -30,6 +29,14 @@ if(count($argv)) { } } + +if(!$request['user_id']) { + die("User id missing"); +} + +$me = new User($request['user_id']); +mfValuecache::singleton()->set("me", $me); + //var_dump($request);exit; @@ -45,7 +52,14 @@ if(array_key_exists("uid", $request)) { $filter = []; +$type = false; + foreach($request as $key => $value) { + if($key == "user_id") continue; + if($key == "type") { + $type = $value; + continue; + } if(strlen($value)) { $filter[$key] = $value; } else { @@ -59,9 +73,16 @@ $params = ['export_progress' => 1, 'uid' => $uid, 'filter' => $filter]; //var_dump($uid, $filter);exit; -$Layout=Layout::singleton(); +$Layout = Layout::singleton(); -$lc = new LineworkController(); -$lc->startExport($params); +if($type == "Linework") { + $app = new LineworkController(); + $app->startExport($params); +} + +if($type == "Pipework") { + $app = new PipeworkController(); + $app->startExport($params); +} $Layout->display(); \ No newline at end of file