Commit 3f6ed735 authored by Indra Raja's avatar Indra Raja

menambahkan fitur pemanggilan antrian

parent 98b4b32f
......@@ -1025,7 +1025,7 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
$result = new Result();
try {
$sql = "SELECT antrian_pasien.no_antrian, antrian_pasien.nama, dokter_to_poli.kode_dokter , dokter_to_poli.nama_dokter, dokter_to_poli.id_dokter,poli.kode_poli, poli.nama_poli , counter_status.status_name
$sql = "SELECT antrian_pasien.no_antrian, antrian_pasien.nama, dokter_to_poli.kode_dokter , dokter_to_poli.nama_dokter, dokter_to_poli.id_dokter,poli.kode_poli, poli.nama_poli , counter_status.status_name, ruang.nama_ruang
FROM antrian_pasien
INNER JOIN poli
ON poli.id_poli = antrian_pasien.id_poli
......@@ -1033,6 +1033,8 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
ON dokter_to_poli.id_dokter = antrian_pasien.id_dokter
INNER JOIN counter_status
ON counter_status.status_code = antrian_pasien.status_code
INNER JOIN ruang
on ruang.id_ruang = antrian_pasien.id_ruang
" ;
if ($id){
......@@ -1122,12 +1124,14 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
$result = new Result();
try {
$sql = "SELECT antrian_pasien.no_antrian, antrian_pasien.id_dokter, dokter_to_poli.kode_dokter, counter_status.status_name,counter_status.status_code
$sql = "SELECT antrian_pasien.no_antrian, antrian_pasien.id_dokter, dokter_to_poli.kode_dokter, counter_status.status_name,counter_status.status_code, ruang.nama_ruang
FROM antrian_pasien
INNER JOIN counter_status
ON counter_status.status_code = antrian_pasien.status_code
INNER JOIN dokter_to_poli
ON dokter_to_poli.id_dokter = antrian_pasien.id_dokter
INNER JOIN ruang
ON ruang.id_ruang = antrian_pasien.id_ruang
" ;
if ($id){
$sql .= "WHERE antrian_pasien.id_pasien IS NOT NULL AND dokter_to_poli.id_dokter = $id AND antrian_pasien.status_code=10 or dokter_to_poli.id_dokter = $id and antrian_pasien.status_code=30 or dokter_to_poli.id_dokter = $id and antrian_pasien.status_code=40 ORDER BY no_antrian ASC";
......
......@@ -15,7 +15,7 @@
<!-- <button type="button" id="pilihno" class="btn btn-primary" > Daftar Antrian</button> -->
</form>
</div>
<div><span style="visibility:hidden" id="nama_ruang"></span></div>
<div class="row col-lg-12">
<div class="col-lg-6 ">
......@@ -24,10 +24,12 @@
<h6 class="panel-title"><i class="icon-cog3 position-left"></i> Nomor Antrian</h6>
</div>
<div class="text-center content-group">
<div><input type="hidden" value="nomer antrian" id="text-to-speech" placeholder="Enter text to speak..."/></div>
<h1 class="error-title" style=" font-weight: bold;font-size:250px;font-family: Times New Roman, Times, serif;color: #808080"><span id="no_antrian"></span></h1>
<h5></h5>
</div>
<div><input type="hidden" value="no_antrian" id="no_antrian" /></div>
<div><input type="hidden" value="nama_ruang" id="nama_ruang" /><span style="visibility:hidden" id="nama_ruang"></span></div>
</div>
</div>
......@@ -104,3 +106,4 @@
</div>
</div>
</div>
<section class="warn"></section>
<select name="voice" id="voices" disabled>
</select><br><br>
<textarea disabled></textarea>
<button id="submit" onclick="speaker.speak();" disabled>Text to Speech</button>
\ No newline at end of file
......@@ -8,7 +8,46 @@ const STATUS_MISSED = 60;
/* JS comes here */
/* JS comes here */
function textToAudio() {
// let msg1 = "nomor antrian";
let no_antrian = document.getElementById("no_antrian").innerHTML;
let voice = "nomor antrian " + no_antrian;
console.log(voice)
let speech = new SpeechSynthesisUtterance();
speech.lang = "id";
speech.text = voice;
speech.volume = 1;//como estas jol
speech.rate = 0.70;
speech.pitch = 1;
window.speechSynthesis.speak(speech);
}
function textToAudioRuang() {
// let msg1 = "nomor antrian";
let ruang = document.getElementById("nama_ruang").innerHTML;
let voice = "silahkan masuk ke " + ruang;
let speech = new SpeechSynthesisUtterance();
speech.lang = "id";
console.log(voice);
speech.text = voice;
speech.volume = 1;//como estas jol
speech.rate = 0.70;
speech.pitch = 1;
window.speechSynthesis.speak(speech);
}
loadpoli();
$('#poli').on('change', function () {
......@@ -112,19 +151,19 @@ function loadantrian() {
if (result.code == 0) {
let data = result.data;
// console.log(data);
console.log(data);
let counter = 1;
for (var i = 0; i < data.length; i++) {
for (x in data) {
var newRow = $("<tr>");
var cols = "";
// onClick="openmyprofile('+reg[x].userid+',\''+reg[x].named+'\')">
cols = '<td class="">' + counter + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].no_antrian + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].nama + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].nama_dokter + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].nama_poli + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].status_name + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].no_antrian + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].nama + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].nama_dokter + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].nama_poli + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].status_name + '</td>';
newRow.append(cols);
$("#antrianadmin").append(newRow);
......@@ -173,13 +212,15 @@ function tampilangka() {
if (result.data) {
var res = result['data'][0];
var valTemp = res['kode_dokter'] + '' + res['no_antrian'];
var Ruang = res['nama_ruang'];
noantrian = res['no_antrian'];
iddok = res['id_dokter'];
if (res['status_code'] == 30) {
$('#no_antrian').empty();
$('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', false);
$('#btnServed').prop('disabled', false);
......@@ -188,6 +229,8 @@ function tampilangka() {
} else if (res['status_code'] == 40) {
$('#no_antrian').empty();
$('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', true);
$('#btnServed').prop('disabled', true);
......@@ -196,6 +239,8 @@ function tampilangka() {
} else if (res['status_code'] == 10) {
$('#no_antrian').empty();
$('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', false);
$('#btnServed').prop('disabled', true);
......@@ -204,6 +249,8 @@ function tampilangka() {
} else if (res['status_code'] == 10) {
$('#no_antrian').empty();
$('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', false);
$('#btnCall').prop('disabled', true);
$('#btnServed').prop('disabled', false);
......@@ -297,13 +344,27 @@ function actionqueue(antrianno, status) {
} else if (status == 30) {
// SOound call
// swal({
// title: "Call!",
// text: "Sedang Melakukan Panggilan",
// type: "success",
// showConfirmButton: false,
// timer: 5000
// });
swal({
title: "Call!",
text: "Sedang Melakukan Panggilan",
type: "success",
showConfirmButton: false,
timer: 8000
});
var flush = new Audio('../../data/tone/a1.mp3');
setTimeout(function() {
flush.play(); }, 1000)
flush.onended = function() {
textToAudio()
setTimeout(function() {
textToAudioRuang() }, 3000)
};
$('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', false);
......
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
var recognition = new SpeechRecognition();
recognition.onresult = function(event) {
if (event.results.length > 0) {
query.value = event.results[0][0].transcript;
query.form.submit();
}
}
var Speaker = function () {
var synth
var utterance
var voices
this.init = function () {
// CHECK FOR SPEECHSYNTHESIS API
if (!(window.speechSynthesis)) {
warn("Your browser is not capable of speech synthesis.")
return
}
// INITIALIZE SPEECH SYNTHESIS API ELEMENTS
synth = window.speechSynthesis
voices = synth.getVoices()
utterance = new SpeechSynthesisUtterance("Hello World!");
// CHECK FOR AVAILABLE VOICES
if (voices.length <= 0) {
warn("No voices are provided by either your browser or system.")
return
}
// ADD VOICE INDICES
voices.forEach(function (voice, a) {
voice.voice_index = a
})
// POPULATE VOICES LIST AND ENABLE INPUT ELEMENTS
populateVoicesList();
$(".warn").css("display", "none");
$("button#submit").removeAttr("disabled");
$("textarea").removeAttr("disabled");
$("select#voices").removeAttr("disabled");
// SET AN ENGLISH VOICE AS DEFAULT
var englishes = voices.filter(function (voice) { return voice.default && voice.lang.substr(0, 2) == "en" })
if (englishes.length > 0) {
$("#voices option[value=\"" + englishes[0].voice_index + "\"]").prop("selected", true)
}
clearInterval(timer)
}
function addVoices(languageName, filterBy) {
// Filter voices by filterBy function
var filteredVoices = voices.filter(filterBy)
// Add group only if there is at least one voice
if (filteredVoices.length > 0) {
// Add optgroup
$("#voices").append('<optgroup label="' + languageName + '">')
// Add option for each voice
filteredVoices.forEach(function (el, idx, arr) {
$("#voices").append('<option value="' + el.voice_index + '">' + el.name + ' (' + el.lang + ')' + '</option>')
})
// End optgroup
$("#voices").append('</optgroup>')
}
}
function warn(str) {
$(".warn").css("display", "block");
// $(".reason").append(str);
$("button#submit").attr("disabled");
$("textarea").attr("disabled");
$("select#voices").attr("disabled");
}
function getSelectedVoice() {
return voices[$("#voices option:selected").val()]
}
this.speak = function () {
// Cancel current voice if it's currently talking so new text can be read immediately
synth.cancel();
// CREATE NEW UTTERANCE AND SPEAK IF VOICE IS AVAILABLE
utterance = new SpeechSynthesisUtterance($("textarea").val());
var selectedVoice = getSelectedVoice()
if (selectedVoice) {
utterance.voice = selectedVoice
}
synth.speak(utterance);
}
}
var speaker = new Speaker()
var timer
$(document).ready(function () {
$(".warn").css("display", "none");
timer = setInterval(function () {
speaker.init();
}, 3);
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment