Skip to content

Commit

Permalink
solution for uploading csv to glos/var. has bug with variables.
Browse files Browse the repository at this point in the history
  • Loading branch information
TimoBoer committed Nov 30, 2022
1 parent 5037dff commit 4dedc81
Show file tree
Hide file tree
Showing 2 changed files with 141 additions and 13 deletions.
104 changes: 91 additions & 13 deletions editor/js/toolbox.js
Expand Up @@ -1615,18 +1615,8 @@ var EDITOR = (function ($, parent) {
var thisGrid = this;
// Get the data for this grid
var data = lo_data[options.key].attributes[options.name];
var rows = [];
$.each(data.split('||'), function(j, row){
var records = row.split('|');
var record = {};
record['col_0'] = j+1;
$.each(records, function(k, field)
{
var colnr = k+1;
record['col_' + colnr] = field;
});
rows.push(record);
});

var rows = readyLocalJgGridData(options.key, options.name);

var gridoptions = options.options;
var key = options.key;
Expand Down Expand Up @@ -1949,7 +1939,24 @@ var EDITOR = (function ($, parent) {
});
},

checkRowIds = function (grid) {
readyLocalJgGridData = function(key, name){
var data_lo = lo_data[key].attributes[name];
var rows = [];
$.each(data_lo.split('||'), function(j, row){
var records = row.split('|');
var record = {};
record['col_0'] = j+1;
$.each(records, function(k, field)
{
var colnr = k+1;
record['col_' + colnr] = field;
});
rows.push(record);
});
return rows;
},

checkRowIds = function (grid) {
var rows = grid.find('tr.jqgrow, tr.jqgfirstrow');
for (var i=0; i<rows.length; i++) {
var row = $(rows[i]);
Expand Down Expand Up @@ -4609,6 +4616,77 @@ var EDITOR = (function ($, parent) {
.attr('id', id + '_addcolumns')
.addClass('jqgridAddColumnsContainer'));

var form_id = "excel_upload_" + name;
excel_form = $("<form method='post' enctype='multipart/form-data' id =" + form_id + "></form>")
excel_form.append('<input type="file" name="fileToUpload" id="fileToUpload" accept=".csv" required>');
excel_form.append('<input type="submit" value="Upload Image" name="submit" >');
excel_form.append('<input type="hidden" name="colNum" value=' + options.columns + '>');
excel_form.append('<input type="hidden" name="type" value=' + name + '>');
excel_form.append('<input type="hidden" name="gridId" value=' + id + '>');

html.append(excel_form);

//called if user has uploaded a file to populate a grid
$('#excel_upload_glossary').submit(function (e){
e.preventDefault();
//TODO add translation support?
if(confirm("Let op dit overschrijft de huidige tabel")) {
var form_data = new FormData(this);
$.ajax({
type: 'POST',
dataType: 'text',
url: 'editor/upload_file_to_jqgrid_template.php',
data: form_data,
contentType: false,
processData: false,
success: data => {
return_data = JSON.parse(data);
var gridId = '#' + return_data.gridId + '_jqgrid';
$(gridId).jqGrid('clearGridData');
//TODO check ik key can be used like this
setAttributeValue(key, [return_data.type], [return_data.csv]);
var rows = readyLocalJgGridData(key, return_data.type);
$(gridId).jqGrid('setGridParam', {data: rows});
$(gridId).trigger('reloadGrid');
},
error: () => {
// error message here.
}

});
}
})
$('#excel_upload_variables').submit(function (e){
e.preventDefault();
//TODO add translation support?
if(confirm("Let op dit overschrijft de huidige tabel")) {
var form_data = new FormData(this);
$.ajax({
type: 'POST',
dataType: 'text',
url: 'editor/upload_file_to_jqgrid_template.php',
data: form_data,
contentType: false,
processData: false,
success: data => {
return_data = JSON.parse(data);
var gridId = '#' + return_data.gridId + '_jqgrid';
$(gridId).jqGrid('clearGridData');
//TODO check ik key can be used like this
setAttributeValue(key, [return_data.type], [return_data.csv]);
var rows = readyLocalJgGridData(key, return_data.type);
$(gridId).jqGrid('setGridParam', {data: rows});
$(gridId).trigger('reloadGrid');
},
error: () => {
// error message here.
}

});
}
})
//send file to php
//return xml
datagrids.push({id: id, key: key, name: name, options: options});
break;
case 'datefield':
Expand Down
50 changes: 50 additions & 0 deletions editor/upload_file_to_jqgrid_template.php
@@ -0,0 +1,50 @@
<?php
/**
*
* upload file to jqgrid template, allows the site to add a csv to a local jqgrid
*
* @author Timo Boer
* @version 1.0
* @package
*/

require_once(dirname(__FILE__) . "/../config.php");

// Check for a valid logged in user
if (!isset($_SESSION['toolkits_logon_username']) && !is_user_admin()) {
_debug("Session is invalid or expired");
die('{"status": "error", "message": "Session is invalid or expired"}');
}
//TODO test for file
if ($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
} else {
$file = $_FILES['fileToUpload'];
$file_content = file_get_contents($file['tmp_name']);
$csv = array_map('str_getcsv', file($file['tmp_name']));
$csv_parsed = '';
$nr_columns = $_POST['colNum'];

//check if supplied file has correct size, if not drop or add cells and add to csv_parced
foreach ($csv as $key => $row) {
if(count($row) < $nr_columns){
for ($i = 0; $i < $nr_columns - count($row); $i++) {
$csv[$key][] = " ";
}
$row = $csv[$key];
}
elseif(count($row) > $nr_columns) {
for ($i = 0; $i < count($row) - $nr_columns; $i++) {
array_pop($csv[$key]);
}
$row = $csv[$key];
}
foreach ($row as $value){
if ($value === ""){$value = " ";}
$csv_parsed .= $value. "|";
}
$csv_parsed .= "|";
}
$csv_parsed = substr($csv_parsed, 0 , -2);
}
echo json_encode(array('type' => $_POST["type"], 'csv' => $csv_parsed, 'gridId' => $_POST["gridId"] ));

0 comments on commit 4dedc81

Please sign in to comment.