Added export button to Pipework

This commit is contained in:
Frank Schubert
2022-06-21 14:22:36 +02:00
parent 478ab13805
commit e3438bc96c
5 changed files with 715 additions and 9 deletions

View File

@@ -30,7 +30,7 @@
<div class="card-body mb-3">
<h4 class="header-title mb-3">Filter</h4>
<form method="get" action="<?=self::getUrl("Pipework")?>">
<form method="get" id="filterform" action="<?=self::getUrl("Pipework")?>">
<div class="row">
<div class="col-1">
<label class="form-label" for="filter_network_id">Netzgebiet</label>
@@ -91,10 +91,23 @@
</div>
<div class="row mt-2">
<div class="col">
<div>
<button type="submit" class="btn btn-primary">Filter anwenden</button>
<a class="btn btn-secondary" href="<?=self::getUrl("Pipework")?>">Filter zurücksetzen</a>
</div>
<div style="width: 512px;">
<?php if($me->isAdmin()): ?>
<div class="row">
<div class="col-6">
<button type="button" id="export-button" class="form-control btn btn-outline-success ml-2" onclick="exportButtonClick()">
<div id="export-button-label"><i class="fas fa-download mr-1"></i> Download als .xls</div>
<div id="progress-bar" class="progress-bar progress-bar-striped progress-bar-animated bg-primary hidden" style="width: 0%;">Bitte warten... 0%</div>
</button>
</div>
</div>
<?php endif; ?>
</div>
</div>
</form>
@@ -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 = '<?=self::getUrl("Pipework","downloadExport")?>?uid=' + export_uid
return;
}
var form = $('#filterform');
var actionUrl = '<?=self::getUrl("Pipework", "export")?>';
$.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("<?=self::getUrl("Pipework", "exportProgress")?>",
{
uid: export_uid
},
function(success) {
if(success.status == "OK") {
updateProgressBar(success.progress);
if(success.progress >= 100) {
downloadUrl = '<?=self::getUrl("Pipework","downloadExport")?>?uid=' + export_uid;
setTimeout(() => {document.location.href = '<?=self::getUrl("Pipework","downloadExport")?>?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();
}
</script>

View File

@@ -0,0 +1,440 @@
<?php
// progress
$lineMax = 0;
foreach($networks as $terminations) {
$lineMax += count($terminations);
}
$filename = "tiefbau-".date('Y-m-d_H-i-s')."-".uniqid().".xlsx";
if($export_uid) {
$progress = new WorkflowExport();
$progress->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;

View File

@@ -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);
}

View File

@@ -4,8 +4,12 @@ class PipeworkController extends mfBaseController {
protected function init() {
$this->needlogin=true;
$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;

View File

@@ -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();