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 { ...@@ -1025,7 +1025,7 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
$result = new Result(); $result = new Result();
try { 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 FROM antrian_pasien
INNER JOIN poli INNER JOIN poli
ON poli.id_poli = antrian_pasien.id_poli ON poli.id_poli = antrian_pasien.id_poli
...@@ -1033,6 +1033,8 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton { ...@@ -1033,6 +1033,8 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
ON dokter_to_poli.id_dokter = antrian_pasien.id_dokter ON dokter_to_poli.id_dokter = antrian_pasien.id_dokter
INNER JOIN counter_status INNER JOIN counter_status
ON counter_status.status_code = antrian_pasien.status_code ON counter_status.status_code = antrian_pasien.status_code
INNER JOIN ruang
on ruang.id_ruang = antrian_pasien.id_ruang
" ; " ;
if ($id){ if ($id){
...@@ -1122,12 +1124,14 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton { ...@@ -1122,12 +1124,14 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
$result = new Result(); $result = new Result();
try { 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 FROM antrian_pasien
INNER JOIN counter_status INNER JOIN counter_status
ON counter_status.status_code = antrian_pasien.status_code ON counter_status.status_code = antrian_pasien.status_code
INNER JOIN dokter_to_poli INNER JOIN dokter_to_poli
ON dokter_to_poli.id_dokter = antrian_pasien.id_dokter ON dokter_to_poli.id_dokter = antrian_pasien.id_dokter
INNER JOIN ruang
ON ruang.id_ruang = antrian_pasien.id_ruang
" ; " ;
if ($id){ 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"; $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 @@ ...@@ -15,7 +15,7 @@
<!-- <button type="button" id="pilihno" class="btn btn-primary" > Daftar Antrian</button> --> <!-- <button type="button" id="pilihno" class="btn btn-primary" > Daftar Antrian</button> -->
</form> </form>
</div> </div>
<div><span style="visibility:hidden" id="nama_ruang"></span></div>
<div class="row col-lg-12"> <div class="row col-lg-12">
<div class="col-lg-6 "> <div class="col-lg-6 ">
...@@ -24,10 +24,12 @@ ...@@ -24,10 +24,12 @@
<h6 class="panel-title"><i class="icon-cog3 position-left"></i> Nomor Antrian</h6> <h6 class="panel-title"><i class="icon-cog3 position-left"></i> Nomor Antrian</h6>
</div> </div>
<div class="text-center content-group"> <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> <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>
<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>
</div> </div>
...@@ -104,3 +106,4 @@ ...@@ -104,3 +106,4 @@
</div> </div>
</div> </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; ...@@ -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(); loadpoli();
$('#poli').on('change', function () { $('#poli').on('change', function () {
...@@ -112,19 +151,19 @@ function loadantrian() { ...@@ -112,19 +151,19 @@ function loadantrian() {
if (result.code == 0) { if (result.code == 0) {
let data = result.data; let data = result.data;
// console.log(data); console.log(data);
let counter = 1; let counter = 1;
for (var i = 0; i < data.length; i++) { for (x in data) {
var newRow = $("<tr>"); var newRow = $("<tr>");
var cols = ""; var cols = "";
// onClick="openmyprofile('+reg[x].userid+',\''+reg[x].named+'\')"> // onClick="openmyprofile('+reg[x].userid+',\''+reg[x].named+'\')">
cols = '<td class="">' + counter + '</td>'; 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[x].no_antrian + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].nama + '</td>'; cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].nama + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].nama_dokter + '</td>'; cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].nama_dokter + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].nama_poli + '</td>'; cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].nama_poli + '</td>';
cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[i].status_name + '</td>'; cols += '<td class="tdCenterText bgtd1 tdBorder-left">' + data[x].status_name + '</td>';
newRow.append(cols); newRow.append(cols);
$("#antrianadmin").append(newRow); $("#antrianadmin").append(newRow);
...@@ -173,13 +212,15 @@ function tampilangka() { ...@@ -173,13 +212,15 @@ function tampilangka() {
if (result.data) { if (result.data) {
var res = result['data'][0]; var res = result['data'][0];
var valTemp = res['kode_dokter'] + '' + res['no_antrian']; var valTemp = res['kode_dokter'] + '' + res['no_antrian'];
var Ruang = res['nama_ruang'];
noantrian = res['no_antrian']; noantrian = res['no_antrian'];
iddok = res['id_dokter']; iddok = res['id_dokter'];
if (res['status_code'] == 30) { if (res['status_code'] == 30) {
$('#no_antrian').empty(); $('#no_antrian').empty();
$('#no_antrian').html(valTemp); $('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', true); $('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', false); $('#btnCall').prop('disabled', false);
$('#btnServed').prop('disabled', false); $('#btnServed').prop('disabled', false);
...@@ -188,6 +229,8 @@ function tampilangka() { ...@@ -188,6 +229,8 @@ function tampilangka() {
} else if (res['status_code'] == 40) { } else if (res['status_code'] == 40) {
$('#no_antrian').empty(); $('#no_antrian').empty();
$('#no_antrian').html(valTemp); $('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', true); $('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', true); $('#btnCall').prop('disabled', true);
$('#btnServed').prop('disabled', true); $('#btnServed').prop('disabled', true);
...@@ -196,6 +239,8 @@ function tampilangka() { ...@@ -196,6 +239,8 @@ function tampilangka() {
} else if (res['status_code'] == 10) { } else if (res['status_code'] == 10) {
$('#no_antrian').empty(); $('#no_antrian').empty();
$('#no_antrian').html(valTemp); $('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', true); $('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', false); $('#btnCall').prop('disabled', false);
$('#btnServed').prop('disabled', true); $('#btnServed').prop('disabled', true);
...@@ -204,6 +249,8 @@ function tampilangka() { ...@@ -204,6 +249,8 @@ function tampilangka() {
} else if (res['status_code'] == 10) { } else if (res['status_code'] == 10) {
$('#no_antrian').empty(); $('#no_antrian').empty();
$('#no_antrian').html(valTemp); $('#no_antrian').html(valTemp);
$('#nama_ruang').empty();
$('#nama_ruang').html(Ruang);
$('#btnNext').prop('disabled', false); $('#btnNext').prop('disabled', false);
$('#btnCall').prop('disabled', true); $('#btnCall').prop('disabled', true);
$('#btnServed').prop('disabled', false); $('#btnServed').prop('disabled', false);
...@@ -297,13 +344,27 @@ function actionqueue(antrianno, status) { ...@@ -297,13 +344,27 @@ function actionqueue(antrianno, status) {
} else if (status == 30) { } else if (status == 30) {
// SOound call // SOound call
// swal({ swal({
// title: "Call!", title: "Call!",
// text: "Sedang Melakukan Panggilan", text: "Sedang Melakukan Panggilan",
// type: "success", type: "success",
// showConfirmButton: false, showConfirmButton: false,
// timer: 5000 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); $('#btnNext').prop('disabled', true);
$('#btnCall').prop('disabled', false); $('#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