Prechádzať zdrojové kódy

- dodanie wyświetlenia okienka sweetAlert2 do uploadu pliku CSV
- dodanie możliwości dodania pliku SCV do wysłania
- sparsowanie pliku CSV i zwrócenie formularza z inputami

dariusz.andryskowski 7 rokov pred
rodič
commit
4d9a00a21f
2 zmenil súbory, kde vykonal 190 pridanie a 12 odobranie
  1. 70 4
      tools/Bocian.php
  2. 120 8
      tools/Bocian.php.view.js

+ 70 - 4
tools/Bocian.php

@@ -32,7 +32,8 @@ class Bocian extends RouteToolBase {
 			'URL_GENERATE_BI_AUDIT_RAPORT_AJAX' => $this->getLink('generateBiAuditRaportAjax'),
 			'DBG' => V::get('DBG', 0, $_GET),
 			'VIEW_KONTRAHENCI' => $this->defaultViewFormBiAudit([], 'KONTRAHENCI'),
-			'VIEW_PRACOWNICY' => $this->defaultViewFormBiAudit([], 'PRACOWNICY')
+			'VIEW_PRACOWNICY' => $this->defaultViewFormBiAudit([], 'PRACOWNICY'),
+			'URL_PARSE_CSV_FILE_AJAX' => $this->getLink('parseCsvFileAjax'),
 
 		]);
 
@@ -40,6 +41,56 @@ class Bocian extends RouteToolBase {
 		UI::dol();
 	}
 
+	public function parseCsvFileAjaxAction() {
+		Response::sendTryCatchJson(array($this, 'parseCsvFileAjax')); // , $args = 'JSON_FROM_REQUEST_BODY');
+	}
+
+public function parseCsvFileAjax() {
+
+	if (!file_exists($_FILES['file']['tmp_name'])) throw new Exception("Wybierz plik do przesłania.");
+
+		$file = file($_FILES['file']['tmp_name']);
+
+		// nagłowki csv
+		$headCsv = array();
+		// wiersze CSV(poza pierwszym)
+		$arrayRows = array();
+		$i = 0;
+
+		$viewFormHtml = '<form method="POST" >';
+		foreach ($file as $line) {
+			 if ( $i == 0 ) {
+			 	$headCsv =  explode(';', $line);
+
+			 } else {
+
+			 	$arrayRows = explode(';', $line);
+
+			 	foreach ($arrayRows as $keyData => $rowData) {
+						// sprawdzenie czy ustawiony naglówek - jeśli nie to wyświetl komunikat
+						if ($headCsv[$keyData]) throw new Exception("Brak nagłówka w kolumnie " . ($keyData + 1) . "w pliku CSV.");
+
+						$viewFormHtml .= '<input type="text" name="item["'.$i.'"]["'.$headCsv[$keyData].'"]" value="'.trim($rowData).'" />';
+					}
+			 }
+			 $i++;
+
+		}
+		$viewFormHtml .= '</form>';
+
+		//return $viewFormHtml;
+		return [
+			'type' => 'success',
+			'msg' => 'OK',
+			'__req_args' => $_REQUEST,
+			'__args' => $args,
+			'body' => [
+				'view' => $viewFormHtml,
+			]
+		];
+	//	if (!isset($_FILES['fileData'])) throw new Exception("Błąd formularza ");
+	}
+
 	public function fetchEnergaRumKontrahenciPowiazaniaAjaxAction() {
 		Response::sendTryCatchJson(array($this, 'fetchEnergaRumKontrahenciPowiazaniaAjax')); // , $args = 'JSON_FROM_REQUEST_BODY');
 	}
@@ -907,8 +958,11 @@ public function fetchGroupKontrahenciAjax() {
 
 		switch($type) {
 				case 'KONTRAHENCI':
+
 					$activeFormStepsKontrahent = 'complete';
+
 					$titleHeader = 'KONTRAHENCI';
+
 					$groupFilterList = '
 					<div class="menu-item">
 							<ul class="padding-0">
@@ -918,22 +972,35 @@ public function fetchGroupKontrahenciAjax() {
 					<div id="group-kontrahenci" class="btn-group">
 							<button class="btn btn-default active" title="Wszyscy" data-group-filter="0">Wszyscy</button>
 					</div>';
+
+					$formAddNewData ='
+					<li><a  title="IMPORT KONTRAHENCI" onClick="showViewUploadFile(event, \'Import kontrahentów\' )" class="btn btn-info">IMPORT KONTRAHENCI</a></li>
+					<!--<li><a href="#" title="DODAJ KONTRAHENCI" class="btn btn-info">+ DODAJ KONTRAHENCI</a></li>-->'; //todo: dodać obsługe doddawania kontrahentow
+
 					$showButtonNextStep = '<button type="button" class="btn btn-primary" onClick="generateBiAuditRaport(event)" id="button-generate-reaport">SZUKAJ POWIĄZAŃ</button>';
+
 					$pagination_form = '<div id="pagination-kontrahenci"></div>';
 				break;
 
 				case 'PRACOWNICY':
 					$titleHeader = 'PRACOWNICY';
+
 					$groupFilterList = '
 					<div class="menu-item">
 							<ul class="padding-0">
-									<li><a href="#" title="STWÓRZ GRUPĘ" class="btn btn-default" onClick="createGroupPracownicy(event)" data-color-noactive="">+ STWÓRZ GRUPĘ</a></li>
+									<li><a href="#" title="STWÓRZ GRUPĘ" class="btn btn-default" onClick="createGroupPracownicy(event)" >+ STWÓRZ GRUPĘ</a></li>
 							</ul>
 					</div>
 					<div id="group-pracownicy" class="btn-group">
 							<button class="btn btn-default active" title="Wszyscy" data-group-filter="0">Wszyscy</button>
 					</div>';
+
+					$formAddNewData ='
+					<li><a href="#" title="IMPORT PRACOWNIKÓW" class="btn btn-info">IMPORT PRACOWNIKÓW</a></li>
+					<!--<li><a href="#" title="DODAJ PRACOWNIKÓW" class="btn btn-info" >+ DODAJ PRACOWNIKÓW</a></li>-->'; //todo: dodać obsługe doddawania pracownikow
+
 					$showButtonNextStep = '<a href="index.php?_route=UrlAction_Bocian#KONTRAHENCI"  title="DODAJ DO ANALIZY" class="btn btn-primary">DODAJ DO ANALIZY</a>';
+
 					$pagination_form = '<div id="pagination-pracownicy"></div>';
 
 					break;
@@ -1039,8 +1106,7 @@ public function fetchGroupKontrahenciAjax() {
 											<div class="menu-items">
 													<div class="menu-item">
 															<ul class="padding-0">
-																	<li><a href="#" title="IMPORT PRACOWNIKÓW" class="btn btn-info data-color-noactive="">IMPORT PRACOWNIKÓW</a></li>
-																	<li><a href="#" title="DODAJ PRACOWNIKÓW" class="btn btn-info" data-color-noactive="">+ DODAJ PRACOWNIKÓW</a></li>
+																	'.$formAddNewData.'
 															</ul>
 													</div>
 											</div>

+ 120 - 8
tools/Bocian.php.view.js

@@ -106,6 +106,114 @@ function initLocalStorage() {
 	}
 }
 
+/**
+ * Funkcja pozwala na wyświetlenie okienka importu
+ */
+function showViewUploadFile( event, headerTitle ) {
+	event.preventDefault();
+
+	swal({
+		title: headerTitle,
+		//input: 'file',
+		html: '<div><input id="file-csv-upload" type="file" name="files[]" enctype="multipart/form-data" style="margin: 0 10% 0 auto;"></div>',
+
+	  showCancelButton: true,
+	  confirmButtonText: 'Zapisz',
+	  showLoaderOnConfirm: true,
+		preConfirm: function (file) {
+		  return new Promise(function (resolve, reject) {
+
+				if (!file ) reject('Proszę wybrać plik csv');
+
+				 var fileInputData = $('#file-csv-upload').prop('files')[0];
+
+		     var formData = new FormData();
+		     formData.append('file', fileInputData);
+		     console.log('uploadowany plik: ',formData);
+				 var responseViewForm = parseCsvFile( formData );
+				 console.log('dane po przeparsowaniu', responseViewForm);
+		  })
+			.then(function(response) {
+				return response.text();
+			})
+			.then(function(responseText) {
+
+				try {
+					return JSON.parse(responseText);
+				} catch (e) {
+					throw responseText;
+				}
+			})
+			.then(function(result) {
+
+				if (result.type == 'success') {
+					p5UI__notifyAjaxCallback(result);
+					resolve(result.msg);
+				} else {
+					reject(result.msg);
+				}
+			})
+			.catch(function(error) {
+				console.log('request failed', error)
+			});
+		},
+	  allowOutsideClick: false
+	}).then(function (responseData) {
+
+	}).catch(function(error) {
+		console.log('request failed', error)
+	});
+
+}
+
+
+/**
+ * Funkcja przekazuje dane z pliku csv do przeparsowania
+ */
+function parseCsvFile( fileData ) {
+	event.preventDefault();
+
+	fetch(URL_PARSE_CSV_FILE_AJAX, {
+	  method: 'POST',
+		credentials: 	'same-origin',
+	  body: fileData
+	})
+	.then(function(response) {
+	 return response.json()
+ }).then(function(json) {
+	 console.log('parsed json', json)
+	 return json;
+ }).catch(function(ex) {
+	 console.log('parsing failed', ex)
+ })
+
+	// window.fetch(URL_PARSE_CSV_FILE_AJAX, {
+	// 	method: 			'POST',
+	// 	credentials: 	'same-origin',
+	// 	body:  				file
+	// })
+	// .then(function(response) {
+	// 	return response.text();
+	// })
+	// .then(function(responseText) {
+	//
+	// 	console.log(responseText);
+	// })
+	// .then(function(result) {
+	// 	result
+	// 	if (result.type == 'success') {
+	// 		p5UI_notifyAjaxCallback(result);
+	// 		resolve(result.msg);
+	// 	} else {
+	// 		reject(result.msg);
+	// 	}
+	// })
+	// .catch(function(error) {
+	// 	console.log('request failed', error)
+	// });
+
+}
+
 
 function defaultBIAuditLocalStorage() {
 	localStorage.removeItem('Bocian.biAuditForm.pracownicyIds');
@@ -157,7 +265,7 @@ function generateBiAuditRaport(event) {
 					}
 				})
 				.then(function(result) {
-					result
+
 					if (result.type == 'success') {
 
 						p5UI__notifyAjaxCallback(result);
@@ -229,7 +337,7 @@ function addPracownikToGroup(event) {
 					}
 				})
 				.then(function(result) {
-					result
+
 					if (result.type == 'success') {
 						p5UI__notifyAjaxCallback(result);
 						resolve(result.msg);
@@ -354,7 +462,7 @@ function createGroupKontrahenci(event) {
 					}
 				})
 				.then(function(result) {
-					result
+
 					if (result.type == 'success') {
 						p5UI_notifyAjaxCallback(result);
 						resolve(result.msg);
@@ -409,15 +517,15 @@ function createGroupPracownicy(event) {
 					}
 				})
 				.then(function(result) {
-					result
+
 					if (result.type == 'success') {
 						p5UI_notifyAjaxCallback(result);
 						resolve(result.msg);
 					} else {
 						reject(result.msg);
 					}
-				})
-				;
+				});
+
 	    })
 	  },
 	  allowOutsideClick: false
@@ -474,7 +582,7 @@ console.log('URL', valueUrl);
 		case '#PRACOWNICY':
 		$( ".container-bi_audit_form_pracownicy_raport" ).html( VIEW_PRACOWNICY );
 			urlFetchPracownicy(1);
-			fetchGroupPracownicy()
+			fetchGroupPracownicy();
 			$( ".container-bi_audit_form_kontrahenci_raport" ).hide();
 			$( ".container-bi_audit_form_pracownicy_raport" ).show();
 		break;
@@ -488,8 +596,9 @@ console.log('URL', valueUrl);
 		// break;
 
 		default:
+		$( ".container-bi_audit_form_pracownicy_raport" ).html( VIEW_PRACOWNICY );
 			urlFetchPracownicy(1);
-			fetchGroupPracownicy()
+			fetchGroupPracownicy();
 			$( ".container-bi_audit_form_kontrahenci_raport" ).hide();
 			$( ".container-bi_audit_form_pracownicy_raport" ).show();
 		break;
@@ -1245,3 +1354,6 @@ global.removeItemInArray = removeItemInArray;
 global.removeItemArrayInArray = removeItemArrayInArray;
 
 global.addPracownikToGroup = addPracownikToGroup;
+
+global.showViewUploadFile = showViewUploadFile;
+global.parseCsvFile = parseCsvFile;