start.blade.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. @extends('layouts.guest-home')
  2. @section('content')
  3. <div id="createMeetingComponent">
  4. <div class="d-flex">
  5. <h1 class="font-weight-bold">Consult your doctor from the comfort of your home!</h1>
  6. </div>
  7. <div class="d-flex mt-4 mt-sm-5">
  8. <div class="form-container">
  9. <div class="form">
  10. <h3 class="border-bottom border-success text-center font-weight-bold py-3 m-0">Start Meeting</h3>
  11. <p class="px-4 text-dark m-0 py-3">Please enter your name and date of birth to start a meeting.</p>
  12. <div class="px-4 mb-4" autofocus="true">
  13. <input type="text" class="form-control py-3" :class="nameError ? 'has-error' : ''" v-model="name" placeholder="Your name">
  14. <div class="field-error text-danger" v-if="nameError">Your name is required</div>
  15. </div>
  16. <div class="px-4 mb-4">
  17. <input type="date" class="form-control py-3" :class="dobError ? 'has-error' : ''" v-model="dob" placeholder="Your date of birth">
  18. <div class="field-error text-danger" v-if="dobError">Your date of birth is required</div>
  19. </div>
  20. <div class="px-4 pb-4">
  21. <button class="btn btn-success font-weight-bold w-100"
  22. :disabled="process"
  23. v-on:click.prevent="doStart()">
  24. <span v-if="!process">Start Meeting</span>
  25. <span v-if="process">@{{ process }}</span>
  26. </button>
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. </div>
  32. <script>
  33. new Vue({
  34. el: '#createMeetingComponent',
  35. delimiters: ['@{{', '}}'],
  36. data: {
  37. name: 'Vj',
  38. dob: '1990-02-01',
  39. // name: '',
  40. // dob: '',
  41. process: false,
  42. nameError: false,
  43. dobError: false,
  44. },
  45. methods: {
  46. validate: function () {
  47. this.nameError = false;
  48. this.dobError = false;
  49. if (!$.trim(this.name)) {
  50. this.nameError = true;
  51. }
  52. if (!$.trim(this.dob)) {
  53. this.dobError = true;
  54. }
  55. return !(this.nameError || this.dobError);
  56. },
  57. doStart: function () {
  58. var self = this;
  59. if(!this.validate()) return;
  60. this.process = 'Creating ...';
  61. $.post('/api/meeting/create-via-api', {
  62. name: this.name,
  63. dob: this.dob,
  64. }, function (_data) {
  65. if(_data.data && _data.data.meetingUid && _data.data.meetingParticipantUid) {
  66. self.process = 'Redirecting ...';
  67. window.location.href = '/meeting/'
  68. + _data.data.meetingUid + '/'
  69. + _data.data.meetingParticipantUid
  70. + '?start=1';
  71. }
  72. else {
  73. self.process = false;
  74. }
  75. }, 'json');
  76. }
  77. },
  78. mounted: function() {
  79. }
  80. });
  81. </script>
  82. @endsection