187 lines
7.1 KiB
PHP
187 lines
7.1 KiB
PHP
<?php include('include/headscript.php');
|
|
|
|
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
|
|
die("Invalid template ID");
|
|
}
|
|
|
|
$id = intval($_GET['id']);
|
|
$db = DBHandlerSelect::getInstance();
|
|
$pdo = $db->getConnection();
|
|
$stmt = $pdo->prepare("SELECT name, header_row, start_column, target_table FROM excel_templates WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
$template = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$template) {
|
|
die("Template not found");
|
|
}
|
|
?>
|
|
<!doctype html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<!-- Required meta tags -->
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<!--favicon-->
|
|
<link rel="icon" href="assets/images/favicon-32x32.png" type="image/png" />
|
|
<?php include('cssinclude.php'); ?>
|
|
<title>Mapping XLS Template <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?></title>
|
|
</head>
|
|
|
|
<body>
|
|
<!--wrapper-->
|
|
<div class="wrapper">
|
|
<!--sidebar wrapper -->
|
|
<?php include('include/navbar.php'); ?>
|
|
<!--end sidebar wrapper -->
|
|
<!--start header -->
|
|
<?php include('include/topbar.php'); ?>
|
|
<!--end header -->
|
|
<!--start page wrapper -->
|
|
<div class="page-wrapper">
|
|
<div class="page-content">
|
|
|
|
<?php include('top_stat_widget.php'); ?>
|
|
|
|
|
|
<div class="card radius-10">
|
|
<div class="card-header">
|
|
<div class="d-flex align-items-center">
|
|
<div>
|
|
<h6 class="mb-0">Associate Columns - Template: <span id="templateName"><?php echo htmlspecialchars($template['name']); ?></h6>
|
|
<p>Header Row: <span id="headerRow"><?php echo $template['header_row']; ?></span> | Start Column: <span id="startColumn"><?php echo htmlspecialchars($template['start_column']); ?></span></p>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<!-- Upload Section -->
|
|
<div class="mb-4">
|
|
<label class="form-label">Upload XLS Example:</label>
|
|
<input type="file" id="xlsUpload" class="form-control">
|
|
</div>
|
|
|
|
<!-- Association Section -->
|
|
<div class="row">
|
|
<div class="col-md-5">
|
|
<h5>XLS Column</h5>
|
|
<ul id="xlsColumns" class="list-group border p-3" style="height: 300px; overflow-y: auto;"></ul>
|
|
</div>
|
|
<div class="col-md-2 text-center d-flex align-items-center justify-content-center">
|
|
<button class="btn btn-dark" id="addAssociation">➝ Add</button>
|
|
</div>
|
|
<div class="col-md-5">
|
|
<h5>Table Column</h5>
|
|
<ul id="tableColumns" class="list-group border p-3" style="height: 300px; overflow-y: auto;"></ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Associations List -->
|
|
<div class="mt-4">
|
|
<h5>Current Associations</h5>
|
|
<ul id="associationsList" class="list-group border p-3"></ul>
|
|
</div>
|
|
|
|
<!-- Save Button -->
|
|
<div class="mt-4 text-end">
|
|
<button class="btn btn-success" id="saveAssociations">Save Associations</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<!--end page wrapper -->
|
|
<!--start overlay-->
|
|
<div class="overlay toggle-icon"></div>
|
|
<!--end overlay-->
|
|
<!--Start Back To Top Button-->
|
|
<a href="javaScript:;" class="back-to-top"><i class='bx bxs-up-arrow-alt'></i></a>
|
|
<!--End Back To Top Button-->
|
|
<?php include('include/footer.php'); ?>
|
|
</div>
|
|
<!--end wrapper-->
|
|
|
|
|
|
<!-- search modal -->
|
|
<?php //include('include/searchmodal.php');
|
|
?>
|
|
<!-- end search modal -->
|
|
|
|
|
|
<!--start switcher-->
|
|
<?php //include('include/themeswitcher.php');
|
|
?>
|
|
<!--end switcher-->
|
|
<?php include('jsinclude.php'); ?>
|
|
<script>
|
|
document.getElementById('xlsUpload').addEventListener('change', function(event) {
|
|
let file = event.target.files[0];
|
|
if (!file) return;
|
|
|
|
let reader = new FileReader();
|
|
reader.onload = function(e) {
|
|
let data = new Uint8Array(e.target.result);
|
|
let workbook = XLSX.read(data, {
|
|
type: 'array'
|
|
});
|
|
let sheet = workbook.Sheets[workbook.SheetNames[0]];
|
|
|
|
let rowIndex = parseInt(document.getElementById('headerRow').textContent) || 1;
|
|
let startColumn = parseInt(document.getElementById('startColumn').textContent) || 1;
|
|
|
|
let headers = XLSX.utils.sheet_to_json(sheet, {
|
|
header: 1
|
|
})[rowIndex - 1];
|
|
|
|
if (!headers || headers.length === 0) {
|
|
console.error("No headers found in row:", rowIndex);
|
|
return;
|
|
}
|
|
|
|
// Rimuove le colonne prima di startColumn
|
|
let adjustedHeaders = headers.slice(startColumn - 1);
|
|
|
|
let xlsColumns = document.getElementById('xlsColumns');
|
|
xlsColumns.innerHTML = '';
|
|
|
|
adjustedHeaders.forEach(header => {
|
|
let li = document.createElement('li');
|
|
li.className = 'list-group-item';
|
|
li.textContent = header;
|
|
xlsColumns.appendChild(li);
|
|
});
|
|
};
|
|
reader.readAsArrayBuffer(file);
|
|
});
|
|
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
fetch('load_table_columns.php?table=<?php echo urlencode($template['target_table']); ?>')
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
if (!data.success) {
|
|
console.error("Error:", data.message);
|
|
return;
|
|
}
|
|
|
|
let tableColumns = document.getElementById('tableColumns');
|
|
tableColumns.innerHTML = '';
|
|
|
|
if (Array.isArray(data.columns)) {
|
|
data.columns.forEach(column => {
|
|
let li = document.createElement('li');
|
|
li.className = 'list-group-item';
|
|
li.textContent = column;
|
|
tableColumns.appendChild(li);
|
|
});
|
|
} else {
|
|
console.error("Unexpected data format:", data);
|
|
}
|
|
})
|
|
.catch(error => console.error('Error loading table columns:', error));
|
|
});
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|