Files
MYSOPHAL/front/articles.list.immo.php
2025-08-07 13:15:31 +01:00

377 lines
12 KiB
PHP
Raw Blame History

<?php
use Glpi\Event;
use function Sabre\Uri\split;
include ('../model_controller/articles.list.immo.php');
Session::checkLoginUser();
//Html::redirect($CFG_GLPI["root_doc"]."central.php");
if (Session::getCurrentInterface() == "helpdesk") {
Html::helpHeader("DRH", '', $_SESSION["glpiname"]);
} else {
Html::header("DRH", '', "", "");
}
$all = 0;
if(isset($_GET['all'])) {
if($_GET['all'] == 1)
$all = 1;
}
$results = getArticles($all);
$fams = getSFamille();
$sitesMap = getDepotsMap();
$zonesmap = getZonesMap();
$zones = getZONES();
echo "<div id='divImage' tabindex='-1'></div>";
echo "<div class='center'> <H3 id='articlescount'></H3>
<a class='vsubmit' id='addbtnart' href='article.add.php' title='Ajouter'>Ajouter Article</a>
<table border='0' id='tabcenter' class='tab_cadrehov js-dynamitable'>";
echo"
<tr class='tab_bg_2'>
<th>";
echo '
<label></label>
<select id="fam" name="Famille">';
echo '<option value="" selected>TOUS LES ZONES</option>';
foreach($zones as $row) {
echo '<option value="'.$row['ZONE'].'">'.$row['ZONE'].'</option>';
}
echo "</select>";
echo "</th>
<th ></th>
<th ></th>
<th ></th>
<th ></th>
<th><a id=link>Exporter Par Zone</a></th>";
echo'<th> </th><th> </th><th> </th><th> </th>
</tr>';
echo"
<tr class='tab_bg_2'>
<th> <input class='center' type='text' name='site' placeholder='Site' onchange='sitechange(this)'></th>
<th> <input class='center' type='text' name='zone' placeholder='Zone' onchange='zonechange(this)'></th>
<th> <input class='center' type='text' name='codearticle' placeholder='Code Article' onchange='codearticlechange(this)'></th>
<th ></th>
<th ></th>
<th> <input class='center' type='text' name='larticle' placeholder='Libelle Article' onchange='larticlechange(this)'></th>
<th> <input class='center' type='text' name='state' placeholder='Etat' onchange='statechange(this)'></th>
<th> <input class='center' type='text' name='famille' placeholder='Famille' onchange='famillechange(this)'></th>
<th> <input class='center' type='text' name='sfamille' placeholder='Sous Famille' onchange='sfamillechange(this)'></th>
<th> <input class='center' type='text' name='responsable' placeholder='Responsabilité' onchange='responsablechange(this)'></th>
<th> <input class='center' type='text' name='unite' placeholder='Unite' onchange='unitechange(this)'></th>
<th></th><th> </th><th> </th>
</tr>
<tr class='tab_bg_2'>
<th >Site</th>
<th >Zone</th>
<th >Code Article</th>
<th ></th>
<th ></th>
<th >Libelle Article</th>
<th >Etat</th>
<th >Famille</th>
<th >Sous Famille</th>
<th >Responsabilité</th>
<th >Unite</th>
<th >Export</th>
</tr>
";
if(isset($results)) {
} else {
echo "<tr style=' text-align: center;'><td colspan='3'>Aucune donn<6E>e trouv<75>e</td></tr>";
}
echo"
</table>
</div>";
Html::footer();
?>
<style type="text/css">
.modal {
display: none;
position: fixed;
padding-top: 50px;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgb(0, 0, 0);
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
}.modal-content {
position: relative;
background-color: white;
padding: 20px;
margin: auto;
width: 50%;
-webkit-animation-name: animatetop;
-webkit-animation-duration: 0.4s;
animation-name: animatetop;
animation-duration: 0.4s
}.close-btn {
float: right;
color: lightgray;
font-size: 24px;
font-weight: bold;
}.close-btn:hover {
color: darkgray;
cursor: pointer;
}@-webkit-keyframes animatetop {
from {top:-300px; opacity:0}
to {top:0; opacity:1}
}@keyframes animatetop {
from {top:-300px; opacity:0}
to {top:0; opacity:1}
}
.center {
margin-left: auto;
margin-right: auto;
}
/* Tooltip container */
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
}
/* Tooltip text */
.tooltip .tooltiptext {
visibility: hidden;
width: 120px;
background-color: black;
color: #fff;
text-align: center;
padding: 5px 0;
border-radius: 6px;
/* Position the tooltip text - see examples below! */
position: absolute;
z-index: 20;
}
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext {
visibility: visible;
}
</style>
<script>
var articles = <?php echo json_encode($results); ?>;
var sitesMap = <?php echo json_encode($sitesMap); ?>;
var zonesmap = <?php echo json_encode($zonesmap); ?>;
let localstream;
let camerastarted = false;
function loadtable(resultsP) {
$('#tabcenter tr').slice(3).remove();
if(resultsP.length > 0) {
for(var i = 0; i < resultsP.length; i++) {
var row = resultsP[i];
let link = "";
let img = '<td></td>';
let pic = '<td></td>';
// if(row['imgpath'] != ""){
// link = row['imgpath'];
// img = '<td valign="top" style="font-weight:bold"><img src="../pics/cam.png" name="'+link+'" onclick="showImagePopUp(this)" style="vertical-align:bottom;width:26px;height:18px;cursor: pointer;"/></td>';
// }
if(row['imgpath'] != "")
//img = '<td valign="top" style="font-weight:bold"><img src="../pics/pic_placeholder.png" name="'+row['imgpath']+'" onclick="showImagePopUp(this)" style="vertical-align:bottom;width:26px;height:18px"/></td>';
img = '<td valign="top" style="font-weight:bold"><i class="fas fa-file-image fa-2x" name="'+row['imgpath']+'" onclick="showImagePopUp(this)"/></td>';
//pic = '<td valign="top" style="font-weight:bold"><img src="../pics/cam.png" name="'+row['ART_CODE']+'" onclick="showImagePopUp(this)" style="vertical-align:bottom;width:26px;height:18px"/></td>';
pic = '<td valign="top" style="font-weight:bold"><i class="fas fa-camera fa-2x" name="'+row['ART_CODE']+'" onclick="showImagePopUp(this)"/></td>';
var resp = "";
if(row['STK_RESPONSABLE'] != null)
resp = row['STK_RESPONSABLE'];
$('#tabcenter').append(
"<tr class='tab_bg_1'><td valign='top' style='font-weight:bold'>"+sitesMap[row['DEP_CODE']]+"</td><td valign='top' style='font-weight:bold'><div class='tooltip'>"+row['STK_ZONE']+"<span class='tooltiptext'>"+zonesmap[row['STK_ZONE']]+"</span></div></td><td valign='top' style='font-weight:bold'><a href='articleqrgen.php?artcode="+row['ART_CODE']+"&artlib="+row['ART_LIB']+"'>"+row['ART_CODE']+"</a></td>"+pic+img+"<td valign='top' style='font-weight:bold'><a href='inventair.immo.noqr.php?artcode="+row['ART_CODE']+"'>"+row['ART_LIB']+"</a></td><td valign='top' style='font-weight:bold'>"+row['A_ETAT']+"</td><td valign='top' style='font-weight:bold'>"+row['FAR_LIB']+"</td><td valign='top' style='font-weight:bold'>"+row['SFA_LIB']+"</td><td valign='top' style='font-weight:bold'>"+resp+"</td><td valign='top' style='font-weight:bold'>"+row['ART_UB_STK']+"</td><td valign='top' style='font-weight:bold'><a href='qrcode.pdf.php?artcode="+row['ART_CODE']+"&artlib="+row['ART_LIB']+"'>&nbsp;&nbsp;Exporter en PDF</a></td></tr>"
);
}
}
document.getElementById("articlescount").innerHTML = resultsP.length + " article(s)";
}
loadtable(articles);
function showImagePopUp(e){
let link = $(e).attr('name');
let holder = '<div class="modal" id="imageHolder" tabindex="-1">'+
'<div class="modal-content" style="overflow-x:auto;">';
if(link.includes('/')){
holder = holder + buildImage(link)
$('#divImage').empty();
$('#divImage').append(holder+'</div></div>');
document.querySelector(".modal").style.display = "block";
}else{
holder = holder + buildCamera()
$('#divImage').empty();
$('#divImage').append(holder+'</div></div>');
document.querySelector(".modal").style.display = "block";
startCamera(link)
}
}
function buildImage(link){
return '<span class="close-btn" onclick="closeImagePopup();">&times;</span>'+
'<div><img id="output" src="'+link+'" style="width: 100%; height:400px;"/></div>'
}
function buildCamera(){
return '<span class="close-btn" onclick="closeImagePopup();">&times;</span>'+
'<table border="0" class="center">'+
'<tr>'+
'<td><video id="video" width="380" height="280" autoplay></video></td>'+
'<td><canvas id="canvas" width="380" height="280"></canvas></td>'+
'</tr>'+
'<tr>'+
'<td><button id="click-photo">Prendre Photo</button></td>'+
'<td><button id="save-photo" >Sauvgarder</button></td>'+
'</tr>'+
'</table>'
}
function getToken(){
return "<?php echo Session::getNewCSRFToken();?>";
}
async function startCamera(imgname) {
let click_button = document.querySelector("#click-photo");
let save_button = document.querySelector("#save-photo");
localstream = await navigator.mediaDevices.getUserMedia({ video: {
facingMode: 'environment'
}, audio: false });
camerastarted = true;
let image_data_url = "";
let token = getToken();
document.querySelector("#video").srcObject = localstream;
click_button.addEventListener('click', function() {
document.querySelector("#canvas").getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
image_data_url = canvas.toDataURL();
});
save_button.addEventListener('click', function() {
localstream.getTracks().forEach(function(track) {
track.stop();
});
camerastarted = false;
$.ajax({
type: "POST",
url: "article.list.savepic.php",
data: {
_glpi_csrf_token:token,
imgdata: image_data_url,
filename: imgname
}
})
.done(function( msg ) {
location.reload();
})
.fail(function(msg) {
console.log(msg);
});
closeImagePopup();
})
}
function closeImagePopup(){
if(camerastarted)
localstream.getTracks()[0].stop();
document.querySelector(".modal").style.display = "none";
}
function codearticlechange(e) {
var res = articles.filter(a => a.ART_CODE.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
function larticlechange(e) {
var res = articles.filter(a => a.ART_LIB.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
function famillechange(e) {
var res = articles.filter(a => a.FAR_LIB.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
function sfamillechange(e) {
var res = articles.filter(a => a.SFA_LIB.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
function sitechange(e){
var res = articles.filter(a => a.DEP_CODE.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
function zonechange(e){
var res = articles.filter(a => a.STK_ZONE.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
function responsablechange(e) {
console.log(e.value.toUpperCase());
var res = articles.filter(a => a.STK_RESPONSABLE.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
$("#fam").on("change", function () {
zonechange(this);
var holder = document.getElementById("link");
var v = this.value
if(v == "")
v = "all"
holder.innerHTML = holder.setAttribute('href', "qrcode.pdf.immo.php?bulk="+v);
holder.innerHTML = "Exporter Par Zone";
});
function unitechange(e) {
var res = articles.filter(a => a.ART_UB_STK.toUpperCase().includes(e.value.toUpperCase()));
loadtable(res);
}
$(document).ready(function(){
$("#c_ssmenu2").html('<ul>'+
'<li class="breadcrumb_item"><a href="central.php" title="Accueil">Accueil</a></li>'+
'<li class="breadcrumb_item"><a href="" title="">Articles</a></li>'+
'</ul>');
var selected = document.getElementById("fam");
var v = selected.value;
if(v == "")
v = "all"
var holder = document.getElementById("link");
holder.innerHTML = holder.setAttribute('href', "qrcode.pdf.immo.php?bulk="+v);
holder.innerHTML = "Exporter Par Zone";
});
</script>