641 lines
24 KiB
PHP
641 lines
24 KiB
PHP
|
<?php include('techsyn_header.php'); ?>
|
||
|
<!-- Main Content Container for side bar and body-->
|
||
|
<div class="main-container ace-save-state" id="main-container">
|
||
|
<script type="text/javascript">
|
||
|
try {
|
||
|
ace.settings.loadState('main-container')
|
||
|
} catch (e) {}
|
||
|
</script>
|
||
|
<?php include('techsyn_sidebar.php'); ?>
|
||
|
|
||
|
<!--breadcrumb-->
|
||
|
<div class="main-content">
|
||
|
<div class="main-content-inner">
|
||
|
<div class="breadcrumbs ace-save-state" id="breadcrumbs">
|
||
|
<ul class="breadcrumb">
|
||
|
<li>
|
||
|
<i class="ace-icon fa fa-home home-icon"></i>
|
||
|
<a href="#">Home</a>
|
||
|
</li>
|
||
|
<li class="active">HIRA Form</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
<!-- End of breadcrumb -->
|
||
|
|
||
|
<div class="page-content">
|
||
|
<div class="box box-primary center" style="padding: 10px; margin-top: 1px; width: 99.5%; ">
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<div class="main-container ace-save-state" id="main-container">
|
||
|
<script type="text/javascript">
|
||
|
try {
|
||
|
ace.settings.loadState('main-container')
|
||
|
} catch (e) {}
|
||
|
</script>
|
||
|
|
||
|
<!--breadcrumb-->
|
||
|
<div class="main-content">
|
||
|
<div class="main-content-inner">
|
||
|
<!-- End of breadcrumb -->
|
||
|
<div class="page-content" style="margin-top: -47px">
|
||
|
<div id="flexigridDiv" class="table-responsive">
|
||
|
<form name="f1" method="post" id="flex_hira_form" action="hira_excel.php">
|
||
|
<div id="flex1" style="width:100%">
|
||
|
<input type="hidden" name="flex_hira_id" id="flex_hira_id" />
|
||
|
</div>
|
||
|
</form>
|
||
|
<form name="export_form" method="post" id="export_form" action="">
|
||
|
<input type="hidden" name="pdf_actions" id="pdf_actions" value="hira_pdf.php" />
|
||
|
<input type="hidden" name="excel_actions" id="excel_actions" value="hira_excel.php" />
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div><!-- /.main-content -->
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
$(function() {
|
||
|
var w = screen.width * .90;
|
||
|
var h = 0;
|
||
|
h = (window.innerHeight - ($("#navbar").height() + $(".breadcrumbs").height())) * .75;
|
||
|
$("#flex1").flexigrid({
|
||
|
url: 'add_hazard_report_form_script.php',
|
||
|
dataType: 'json',
|
||
|
colModel: [{
|
||
|
display: '',
|
||
|
name: '',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Sr',
|
||
|
name: 'id',
|
||
|
width: w * .04,
|
||
|
sortable: false,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Reference ID',
|
||
|
name: 'ref_id',
|
||
|
width: w * .1,
|
||
|
sortable: false,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Activity/Situation',
|
||
|
name: 'activity_situation',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Hazard Category',
|
||
|
name: 'hazard_category',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Hazard Identified',
|
||
|
name: 'hazard_identified',
|
||
|
width: w * .2,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Activity Type',
|
||
|
name: 'activity_type',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Hazard Condition',
|
||
|
name: 'hazard_condition',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Risk Exposure',
|
||
|
name: 'risk_exposure',
|
||
|
width: w * .2,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Date and Time',
|
||
|
name: 'date_time',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Department',
|
||
|
name: 'department',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Location',
|
||
|
name: 'location',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Identified By',
|
||
|
name: 'identified_by',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Remarks',
|
||
|
name: 'remarks',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left'
|
||
|
},
|
||
|
{
|
||
|
display: 'Status',
|
||
|
name: 'status',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Reviewed by',
|
||
|
name: 'reviewed_by',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Reviewed Date Time',
|
||
|
name: 'reviewed_date_time',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
|
||
|
|
||
|
{
|
||
|
display: 'Reviewed remarks',
|
||
|
name: 'reviewed_remarks',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
|
||
|
{
|
||
|
display: 'S/5',
|
||
|
name: 'severity',
|
||
|
width: w * .04,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'O/5',
|
||
|
name: 'occurrence',
|
||
|
width: w * .05,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'S*O',
|
||
|
name: 'calculate_SO',
|
||
|
width: w * .05,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Legal',
|
||
|
name: 'legal',
|
||
|
width: w * .05,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Acceptable',
|
||
|
name: 'acceptable',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Significant',
|
||
|
name: 'significant',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Risk Control Measures',
|
||
|
name: 'risk_control_measures',
|
||
|
width: w * .2,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
{
|
||
|
display: 'Target Date',
|
||
|
name: 'target_date',
|
||
|
width: w * .1,
|
||
|
sortable: true,
|
||
|
align: 'left',
|
||
|
|
||
|
},
|
||
|
],
|
||
|
buttons: [
|
||
|
{
|
||
|
name: 'Add New Hazards' ,
|
||
|
bclass: 'add',
|
||
|
onpress: add
|
||
|
},
|
||
|
|
||
|
{
|
||
|
name: 'PDF',
|
||
|
bclass: 'print',
|
||
|
onpress: pdf
|
||
|
},
|
||
|
{
|
||
|
separator: true
|
||
|
},
|
||
|
{
|
||
|
name: 'Excel',
|
||
|
bclass: 'print_excel',
|
||
|
onpress: excel
|
||
|
},
|
||
|
{
|
||
|
separator: true
|
||
|
}
|
||
|
],
|
||
|
searchitems: [{
|
||
|
display: 'Hazard Category',
|
||
|
name: 'hazard_category',
|
||
|
isdefault: true
|
||
|
},
|
||
|
{
|
||
|
display: 'Identified By',
|
||
|
name: 'identified_by'
|
||
|
},
|
||
|
{
|
||
|
display: 'Location',
|
||
|
name: 'location'
|
||
|
},
|
||
|
],
|
||
|
sortname: "id",
|
||
|
sortorder: "asc",
|
||
|
usepager: true, //pagination
|
||
|
useRp: true,
|
||
|
rp: 50, //records per page
|
||
|
showTableToggleBtn: false, //toggle button for the whole table
|
||
|
resizable: true,
|
||
|
height: h,
|
||
|
singleSelect: true
|
||
|
});
|
||
|
});
|
||
|
function addDirect() {
|
||
|
location.href = "hazard_risk_assesment_form.php";
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function add() {
|
||
|
location.href = "hazard_risk_assesment_form.php";
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function delete_hazard(id) {
|
||
|
$("#flex_hira_id").val(id);
|
||
|
|
||
|
BootstrapDialog.confirm('Are you sure to delete the Hazard?', function(result) {
|
||
|
if (result) {
|
||
|
$.ajax({
|
||
|
url: 'delete_hira.php',
|
||
|
type: "POST",
|
||
|
data: {
|
||
|
id: id
|
||
|
}, // Directly sending the id as POST data
|
||
|
success: function(data) {
|
||
|
if (data.indexOf("SUCCESS") != -1) {
|
||
|
BootstrapDialog.alert('Hazard Deleted Successfully.');
|
||
|
$("#flex1").flexReload();
|
||
|
} else {
|
||
|
BootstrapDialog.alert('Error Deleting Hazard');
|
||
|
}
|
||
|
},
|
||
|
error: function(data) {
|
||
|
BootstrapDialog.alert('Error Deleting Hazard');
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function open_hazard(hazard_id, action) {
|
||
|
|
||
|
$.ajax({
|
||
|
url: 'select_hazard_form.php', // Replace 'fetch_hazard_data.php' with the endpoint that fetches hazard data
|
||
|
type: 'POST',
|
||
|
|
||
|
data: { hazard_id: hazard_id },
|
||
|
success: function(data) {
|
||
|
$("#hazard_id").val(data.hazard_id);
|
||
|
$("#ref_id").val(data.ref_id);
|
||
|
$("#activity_situation").val(data.activity_situation);
|
||
|
$("#hazard_category").val(data.hazard_category);
|
||
|
|
||
|
if (data.hazard_identified != null) {
|
||
|
var hazard_identified = data.hazard_identified
|
||
|
dataarray = hazard_identified.split(",");
|
||
|
$("#hazard_identified").val(dataarray);
|
||
|
$('#hazard_identified').trigger('chosen:updated');
|
||
|
}
|
||
|
$("#activity_type").val(data.activity_type);
|
||
|
$("#hazard_condition").val(data.hazard_condition);
|
||
|
|
||
|
if (data.risk_exposure != null) {
|
||
|
var risk_exposure = data.risk_exposure
|
||
|
dataarray = risk_exposure.split(",");
|
||
|
$("#risk_exposure").val(dataarray);
|
||
|
$('#risk_exposure').trigger('chosen:updated');
|
||
|
}
|
||
|
$("#date_time").val(data.date_time);
|
||
|
$("#department").val(data.department);
|
||
|
$("#location").val(data.location);
|
||
|
$("#identified_by").val(data.identified_by);
|
||
|
$("#remarks").val(data.remarks);
|
||
|
$("#status").val(data.status);
|
||
|
$("#reviewed_by").val(data.reviewed_by);
|
||
|
$("#reviewed_date_time").val(data.reviewed_date_time);
|
||
|
$("#reviewed_remarks").val(data.reviewed_remarks);
|
||
|
|
||
|
|
||
|
// Populate other form fields as needed
|
||
|
|
||
|
// After populating the form fields, submit the form
|
||
|
$("#hazard_report_form").attr('action', 'add_hazard_report_form.php');
|
||
|
$("#hazard_report_form").attr('method', 'POST');
|
||
|
$("#hazard_report_form").submit();
|
||
|
},
|
||
|
error: function() {
|
||
|
alert('Error fetching hazard data');
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function pdf() {
|
||
|
window.open('hira_pdf.php', 'Report List');
|
||
|
}
|
||
|
|
||
|
function excel() {
|
||
|
window.open('hira_excel.php', 'Report List');
|
||
|
}
|
||
|
|
||
|
$("#new_button").on("click", function() {
|
||
|
$("id").val("");
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<?php include('techsyn_footer.php'); ?>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<!-- End of page-content -->
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<script>
|
||
|
function getLikelihoodValue(likelihood) {
|
||
|
switch (likelihood) {
|
||
|
case 'rare':
|
||
|
return 1;
|
||
|
case 'unlikely':
|
||
|
return 2;
|
||
|
case 'possible':
|
||
|
return 3;
|
||
|
case 'likely':
|
||
|
return 4;
|
||
|
case 'almost certain':
|
||
|
return 5;
|
||
|
default:
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getSeverityValue(severity) {
|
||
|
switch (severity) {
|
||
|
case 'negligible':
|
||
|
return 1;
|
||
|
case 'minor':
|
||
|
return 2;
|
||
|
case 'moderate':
|
||
|
return 3;
|
||
|
case 'major':
|
||
|
return 4;
|
||
|
case 'catastrophic':
|
||
|
return 5;
|
||
|
default:
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function calculateRiskScore() {
|
||
|
var likelihood = $('#likelihood').val();
|
||
|
var severity = $('#severity').val();
|
||
|
|
||
|
var likelihoodValue = getLikelihoodValue(likelihood);
|
||
|
var severityValue = getSeverityValue(severity);
|
||
|
|
||
|
var riskScore = likelihoodValue * severityValue;
|
||
|
$('#risk_score').val(riskScore);
|
||
|
|
||
|
var riskLevel = getRiskLevel(riskScore);
|
||
|
$('#risk_level').val(riskLevel);
|
||
|
}
|
||
|
|
||
|
function getRiskLevel(riskScore) {
|
||
|
if (riskScore <= 5) return 'Low';
|
||
|
if (riskScore <= 10) return 'Moderate';
|
||
|
if (riskScore <= 15) return 'High';
|
||
|
return 'Very High';
|
||
|
}
|
||
|
|
||
|
function validate() {
|
||
|
var hazard_category = $('#hazard_category').val();
|
||
|
if (hazard_category == '') {
|
||
|
BootstrapDialog.alert('Please Enter Hazard Category.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var hazard_description = $('#hazard_description').val();
|
||
|
if (hazard_description == '') {
|
||
|
BootstrapDialog.alert('Please Enter Hazard Description.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var location = $('#location').val();
|
||
|
if (location == '') {
|
||
|
BootstrapDialog.alert('Please Enter Location.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var identification_date = $('#identification_date').val();
|
||
|
if (identification_date == '') {
|
||
|
BootstrapDialog.alert('Please Enter Identification Date.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var likelihood = $('#likelihood').val();
|
||
|
if (likelihood == '') {
|
||
|
BootstrapDialog.alert('Please Select Likelihood.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var severity = $('#severity').val();
|
||
|
if (severity == '') {
|
||
|
BootstrapDialog.alert('Please Select Severity.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
calculateRiskScore(); // Automatically calculate the risk score before submission
|
||
|
|
||
|
var risk_score = $('#risk_score').val();
|
||
|
if (risk_score == '' || risk_score == '0') {
|
||
|
BootstrapDialog.alert('Invalid Risk Score.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var risk_level = $('#risk_level').val();
|
||
|
if (risk_level == '') {
|
||
|
BootstrapDialog.alert('Invalid Risk Level.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var control_measures = $('#control_measures').val();
|
||
|
if (control_measures == '') {
|
||
|
BootstrapDialog.alert('Please Enter Control Measures.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var control_date = $('#control_date').val();
|
||
|
if (control_date == '') {
|
||
|
BootstrapDialog.alert('Please Enter Control Date.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var review_date = $('#review_date').val();
|
||
|
if (review_date == '') {
|
||
|
BootstrapDialog.alert('Please Enter Review Date.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
var status = $('#status').val();
|
||
|
if (status == '') {
|
||
|
BootstrapDialog.alert('Please Select Status.');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
save_hazard();
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style>
|
||
|
#modal-add-hazard {
|
||
|
overflow-y: scroll;
|
||
|
}
|
||
|
</style>
|
||
|
|
||
|
|
||
|
<?php include('techsyn_footer.php'); ?>
|
||
|
<script type="text/javascript">
|
||
|
|
||
|
function save_hazard() {
|
||
|
$.ajax({
|
||
|
url: 'save_hazard_form.php',
|
||
|
type: 'POST',
|
||
|
data: $("#hazard_report_form").serialize(),
|
||
|
success: function(data) {
|
||
|
BootstrapDialog.alert('Hazard Saved Successfully');
|
||
|
$("#flex1").flexReload(); // Reload data in flex grid, if applicable
|
||
|
return;
|
||
|
},
|
||
|
error: function(data) {
|
||
|
BootstrapDialog.alert('Error Saving Hazard');
|
||
|
return;
|
||
|
}
|
||
|
});
|
||
|
$('.close').click();
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<!-- bootstrap & fontawesome -->
|
||
|
<link rel="stylesheet" href="assets/font-awesome/4.5.0/css/font-awesome.min.css" />
|
||
|
<!-- page specific plugin styles -->
|
||
|
<link rel="stylesheet" href="assets/css/jquery-ui.custom.min.css" />
|
||
|
<link rel="stylesheet" href="assets/css/chosen.min.css" />
|
||
|
<link rel="stylesheet" href="assets/css/bootstrap-datepicker3.min.css" />
|
||
|
<link rel="stylesheet" href="assets/css/bootstrap-timepicker.min.css" />
|
||
|
<link rel="stylesheet" href="assets/css/daterangepicker.min.css" />
|
||
|
<link rel="stylesheet" href="assets/css/bootstrap-datetimepicker.min.css" />
|
||
|
<link rel="stylesheet" href="assets/css/bootstrap-colorpicker.min.css" />
|
||
|
<script type="text/javascript" src="js/typeahead.bundle.js"></script>
|
||
|
<script src="assets/js/jquery-ui.custom.min.js"></script>
|
||
|
<script src="assets/js/jquery.ui.touch-punch.min.js"></script>
|
||
|
<script src="assets/js/chosen.jquery.min.js"></script>
|
||
|
<script src="assets/js/spinbox.min.js"></script>
|
||
|
<script src="assets/js/bootstrap-datepicker.min.js"></script>
|
||
|
<script src="assets/js/bootstrap-timepicker.min.js"></script>
|
||
|
<script src="assets/js/jquery.dataTables.min.js"></script>
|
||
|
<script src="assets/js/jquery.dataTables.bootstrap.min.js"></script>
|
||
|
<script src="assets/js/dataTables.buttons.min.js"></script>
|
||
|
<script src="assets/js/buttons.flash.min.js"></script>
|
||
|
<script src="assets/js/buttons.html5.min.js"></script>
|
||
|
<script src="assets/js/buttons.print.min.js"></script>
|
||
|
<script src="assets/js/buttons.colVis.min.js"></script>
|
||
|
<script src="assets/js/dataTables.select.min.js"></script>
|
||
|
|
||
|
|
||
|
<script src="assets/js/moment.min.js"></script>
|
||
|
<script src="assets/js/daterangepicker.min.js"></script>
|
||
|
<script src="assets/js/bootstrap-datetimepicker.min.js"></script>
|
||
|
<script src="assets/js/bootstrap-colorpicker.min.js"></script>
|
||
|
<script src="assets/js/jquery.knob.min.js"></script>
|
||
|
<script src="assets/js/autosize.min.js"></script>
|
||
|
<script src="assets/js/jquery.inputlimiter.min.js"></script>
|
||
|
<script src="assets/js/jquery.maskedinput.min.js"></script>
|
||
|
<script src="assets/js/bootstrap-tag.min.js"></script>
|
||
|
<script src="assets/js/ace-elements.min.js"></script>
|