Просмотр исходного кода

Guest meeting page first draft

Vijayakrishnan 5 лет назад
Родитель
Сommit
00488b3427

BIN
public/images/person/1.jpeg


BIN
public/images/person/boa.jpeg


BIN
public/images/person/boa.jpg


BIN
public/images/person/dl.jpg


BIN
public/images/person/guest.png


BIN
public/images/person/nancy.jpg


BIN
public/images/person/strange.0.jpg


BIN
public/images/person/you.jpg


+ 99 - 0
resources/views/layouts/guest-meeting.blade.php

@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+
+    <title>X•Y•Z</title>
+
+    <!-- Fonts -->
+    <link href="https://fonts.googleapis.com/css?family=Nunito:200,600,700" rel="stylesheet">
+
+    {{-- Bootstrap --}}
+    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
+    <link rel="stylesheet" href="/css/bootstrap.min.css">
+
+    <link rel="stylesheet" href="/fontawesome-free/css/all.min.css">
+
+    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
+
+    <!-- Styles for patient home -->
+    <style>
+        html, body {
+            background-color: #fff;
+            color: #636b6f;
+            font-family: 'Nunito', sans-serif;
+            font-weight: 200;
+            height: 100vh;
+            margin: 0;
+        }
+
+        h1 {
+            color: #555;
+            width: 50%;
+            text-align: center;
+        }
+
+        @media (max-width: 900px) {
+            h1 {
+                width: auto;
+                text-align: center;
+                font-size: 2rem;
+                text-shadow: 1px 1px 2px #c0e4e2;
+            }
+        }
+
+        @media (max-width: 400px) {
+            h1 {
+                font-size: 1.75rem;
+                text-shadow: 1px 1px 2px #c0e4e2;
+            }
+        }
+
+        .form-container {
+            width: 50%;
+            margin-right: auto;
+        }
+
+        @media (max-width: 900px) {
+            .form-container {
+                margin: auto;
+                width: 100%;
+            }
+        }
+
+        .form-container .form {
+            background: #ffffffd1;
+            max-width: 400px;
+            margin: auto;
+            border-radius: 4px;
+        }
+
+        .form-container .form h3 {
+            font-size: 1.3rem;
+        }
+
+        .border-success {
+            border-color: #44bdad85 !important;
+        }
+
+        .text-dark {
+            color: #555;
+            font-weight: 600;
+        }
+
+        .form-container .form input {
+            border-color: #44bdad85 !important;
+        }
+
+        .form-container .form input:focus {
+            box-shadow: 0 0 0 0.2rem #44bdad85;
+        }
+    </style>
+</head>
+<body class="p-0 m-0">
+
+@yield('content')
+
+</body>
+</html>

+ 119 - 0
resources/views/meeting.blade.php

@@ -0,0 +1,119 @@
+@extends('layouts.guest-meeting')
+@section('content')
+
+    <style>
+        .main-view {
+            width: 800px;
+            height: 600px;
+            margin: 0 1rem;
+            background: #444;
+            border-radius: 3px;
+        }
+
+        .tp-bar {
+            width: 140px;
+        }
+
+        .tp-bar .tp-item > img {
+            border-radius: 3px;
+            opacity: 0.8;
+            cursor: pointer;
+        }
+
+        .tp-bar .tp-item > img:hover, .tp-bar .tp-item.active > img {
+            opacity: 1;
+        }
+
+        .tp-bar .tp-item.active > img {
+            box-shadow: 0 0 0 0.3rem #44bdad85;
+        }
+    </style>
+
+    <div id="meetingComponent">
+
+        <h5 class="bg-dark font-weight-bold text-white m-0 py-3 px-4 d-flex">
+            <span>Meeting</span>
+            <span class="ml-auto"><i class="fa fa-clock mr-1 text-light"></i>02:34</span>
+        </h5>
+
+        <div class="d-flex align-items-stretch mt-4 justify-content-center flex-nowrap">
+            <div class="tp-bar">
+                <div v-for="(guest, index) of guests"
+                     class="tp-item mb-4"
+                     :class="activeParticipant && activeType === 'guest' && activeParticipant.id === guest.id ? 'active' : ''"
+                     v-on:click="setActiveView('guest', guest)">
+                    <img :src="guest.image" alt="" class="w-100">
+                    <p class="font-weight-bold text-center mt-1 mb-0">@{{ guest.name }}</p>
+                </div>
+                <div v-if="!guest" class="tp-item mb-4">
+                    <img src="/images/person/guest.png" alt="" class="w-100">
+                    <p class="font-weight-bold text-center mt-1">Invite Guest</p>
+                </div>
+            </div>
+            <div class="main-view" style="width: 800px; min-height: 600px;">
+                <div class="p-4 w-100 h-100 d-flex align-items-stretch justify-content-stretch flex-column">
+                    <img :src="activeParticipant.image" class="d-block mw-100 mh-100 mx-auto">
+                    <p class="font-weight-bold text-center text-white mt-2">Feed from @{{ activeParticipant.name }}</p>
+                </div>
+            </div>
+            <div class="tp-bar">
+                <div v-for="(pro, index) of pros"
+                     class="tp-item mb-4"
+                     :class="activeParticipant && activeType === 'pro' && activeParticipant.id === pro.id ? 'active' : ''"
+                     v-on:click="setActiveView('pro', pro)">
+                    <img :src="pro.image" alt="" class="w-100">
+                    <p class="font-weight-bold text-center mt-1 mb-0">@{{ pro.name }}</p>
+                    <p class="font-weight-normal text-center">@{{ pro.type }}</p>
+                </div>
+            </div>
+        </div>
+
+    </div>
+
+    <script>
+        new Vue({
+            el: '#meetingComponent',
+            delimiters: ['@{{', '}}'],
+            data: {
+                guest: false,
+                activeType: false,
+                activeParticipant: false,
+                guests: [
+                    {
+                        id: 1,
+                        name: 'You',
+                        image: '/images/person/you.jpg',
+                    },
+                ],
+                pros: [
+                    {
+                        id: 1,
+                        name: 'Nancy Drew',
+                        type: 'Receptionist',
+                        image: '/images/person/nancy.jpg',
+                    },
+                    {
+                        id: 2,
+                        name: 'Dr. Strange',
+                        type: 'Dietitian',
+                        image: '/images/person/strange.0.jpg',
+                    },
+                    {
+                        id: 3,
+                        name: 'Dr. Do Little',
+                        type: 'Cardiologist',
+                        image: '/images/person/dl.jpg',
+                    }
+                ]
+                // pros: []
+            },
+            methods: {
+                setActiveView: function(_type, _participant) {
+                    this.activeType = _type;
+                    this.activeParticipant = _participant;
+                }
+            }
+        });
+    </script>
+
+@endsection

+ 4 - 0
routes/web.php

@@ -21,6 +21,10 @@ Route::get('/join/{meetingID}', function () {
     return view('join');
 });
 
+Route::get('/meeting/{meetingID}', function () {
+    return view('meeting');
+});
+
 Route::middleware('ensureNoValidSession')->group(function(){
     Route::get('/pro/request-sms-login-token', 'AppSessionController@proRequestSmsLogInToken')->name('pro-request-sms-login-token');
     Route::get('/pro/login', 'AppSessionController@proLogIn')->name('pro-login');