pro.blade.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Stag</title>
  8. <!-- Fonts -->
  9. <link href="https://fonts.googleapis.com/css?family=Nunito:200,600,700" rel="stylesheet">
  10. <link rel="stylesheet" href="{{asset('css/lumen.min.css')}}">
  11. <link rel="stylesheet" href="{{asset('css/toastr.min.css')}}">
  12. {{-- Bootstrap --}}
  13. <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  14. <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
  15. <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js" integrity="sha384-1CmrxMRARb6aLqgBO7yyAxTOQE2AKb9GfXnEo760AUcUmFx3ibVJJAzGytlQcNXd" crossorigin="anonymous"></script>
  16. <script src="{{asset('js/jquery-ui.min.js')}}"></script>
  17. <script src="{{asset('js/jquery.form.js')}}"></script>
  18. <script src="{{asset('js/toastr.min.js')}}"></script>
  19. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  20. <link rel="stylesheet" href="/css/meeting.css">
  21. {{-- WS --}}
  22. <script src="/js/sockjs.min.js"></script>
  23. <script src="/js/stomp.min.js"></script>
  24. </head>
  25. <body class="p-0 m-0">
  26. <nav class="navbar navbar-expand-sm navbar-dark bg-primary">
  27. <a class="navbar-brand" href="#">Stag</a>
  28. <button class="navbar-toggler d-lg-none" type="button" data-toggle="collapse" data-target="#collapsibleNavId"
  29. aria-controls="collapsibleNavId" aria-expanded="false" aria-label="Toggle navigation"></button>
  30. <div class="collapse navbar-collapse" id="collapsibleNavId">
  31. <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
  32. <li class="nav-item active">
  33. <a class="nav-link" href="{{route('pro-dashboard')}}">Dashboard <span
  34. class="sr-only">(current)</span></a>
  35. </li>
  36. <li class="nav-item">
  37. <a class="nav-link" href="{{route('pro-index')}}">Pros</a>
  38. </li>
  39. </ul>
  40. <form class="form-inline my-2 my-lg-0">
  41. <input class="form-control mr-sm-2" type="text" placeholder="Search">
  42. <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
  43. </form>
  44. <ul class="navbar-nav mt-2">
  45. <li class="nav-item">
  46. <a class="nav-link" href="{{route('pro-logout')}}">Log out</a>
  47. </li>
  48. </ul>
  49. </div>
  50. </nav>
  51. <div class="container-fluid">
  52. <div class="row">
  53. <div class="col-md-12 p-0">
  54. @yield('content')
  55. </div>
  56. </div>
  57. </div>
  58. <div class="modal" id="incomingCallModal" tabindex="-1" role="dialog">
  59. <div class="modal-dialog" role="document">
  60. <div class="modal-content">
  61. <div class="modal-header">
  62. <h5 class="modal-title">Incoming Call</h5>
  63. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  64. <span aria-hidden="true">&times;</span>
  65. </button>
  66. </div>
  67. <div class="modal-body">
  68. <p>Click <b>Accept</b> to join the call.</p>
  69. </div>
  70. <div class="modal-footer">
  71. <button type="button" class="btn btn-success px-4" onclick="joinCall()">Answer</button>
  72. <button type="button" class="btn btn-secondary px-4" data-dismiss="modal">Reject</button>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <script src="{{asset('js/moe.js')}}"></script>
  78. <script>
  79. var stompClient = null;
  80. function setConnected(connected) {
  81. console.log("User is connected");
  82. $("#connect").prop("disabled", connected);
  83. $("#disconnect").prop("disabled", !connected);
  84. if (connected) {
  85. $("#conversation").show();
  86. }
  87. else {
  88. $("#conversation").hide();
  89. }
  90. $("#greetings").html("");
  91. }
  92. function connect() {
  93. console.log("connecting...");
  94. var socket = new SockJS('http://localhost:8080/ws');
  95. stompClient = Stomp.over(socket);
  96. stompClient.connect({}, function (frame) {
  97. console.log("Connected");
  98. setConnected(true);
  99. console.log('Connected: ' + frame);
  100. // stompClient.send("/app/update-participant-status", {}, JSON.stringify({meetingUid:"mymeetinguid", status:'mystatus'}));
  101. // stompClient.subscribe('/user/topic/on-participant-status-change', function (message) {
  102. // console.log("Participant status changed: ", message);
  103. // });
  104. stompClient.subscribe("/user/topic/on-pro-incoming-call", function(message){
  105. console.log("incoming call:", message);
  106. message = JSON.parse(message.body);
  107. console.log(message.meetingUid);
  108. $('#incomingCallModal')
  109. .data('meetingUid', message.meetingUid)
  110. .modal('show');
  111. });
  112. // connect
  113. stompClient.send("/app/pro-connect", {}, JSON.stringify({sessionKey: "<?= request()->cookie('sessionKey') ?>"}));
  114. console.log('Pro connected')
  115. });
  116. }
  117. connect();
  118. function joinCall() {
  119. var modal = $('#incomingCallModal');
  120. window.location.href = '/pro/meeting/' +
  121. modal.data('meetingUid');
  122. }
  123. function disconnect() {
  124. if (stompClient !== null) {
  125. stompClient.disconnect();
  126. }
  127. setConnected(false);
  128. console.log("Disconnected");
  129. }
  130. function sendName() {
  131. stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
  132. }
  133. function showGreeting(message) {
  134. $("#greetings").append("<tr><td>" + message + "</td></tr>");
  135. }
  136. $(function () {
  137. $("form").on('submit', function (e) {
  138. e.preventDefault();
  139. });
  140. $( "#connect" ).click(function() { connect(); });
  141. $( "#disconnect" ).click(function() { disconnect(); });
  142. $( "#send" ).click(function() { sendName(); });
  143. });
  144. </script>
  145. </body>
  146. </html>