From 156006aed6963904e1b16fb17740153e9cf8533e Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:17:19 +0100 Subject: [PATCH 01/25] Added Book Now/Extend buttons --- .../components/single-room/RoomStatusBlock.js | 188 +++++++++++++++++- 1 file changed, 186 insertions(+), 2 deletions(-) diff --git a/ui-react/src/components/single-room/RoomStatusBlock.js b/ui-react/src/components/single-room/RoomStatusBlock.js index 1a1fbe6..d4ade64 100644 --- a/ui-react/src/components/single-room/RoomStatusBlock.js +++ b/ui-react/src/components/single-room/RoomStatusBlock.js @@ -1,5 +1,8 @@ import React from 'react'; import PropTypes from 'prop-types'; +//import {ExchangeService, ExchangeVersion} from "ews-javascript-api"; +//var ews = require('ews-javascript-api'); + const Details = ({room, details}) => (
@@ -35,16 +38,196 @@ const Organizer = ({room, details}) => {
); }; +function BookAfter(time, room, startTime){ + console.log("BOOK AFTER"); + var endTime = new Date(startTime.getTime() + time*60000); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}`); + console.log("BOOKED"); + setTimeout(reloadPage, 5000); +} +function BookNow(time, room) { + console.log("BOOK NOW"); + var startTime = new Date(); + var endTime = new Date(startTime.getTime() + time*60000); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}`); + console.log("BOOKED"); + setTimeout(reloadPage, 5000); +} +function reloadPage(){ + window.location.reload(); +} +function ButtonControl(props){ + let room = props.room; + let details = props.details; + var moment = require('moment'); + if (room.Busy){ + let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + if (room.Appointments.length > 1){ + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + + currentAppointmentEnd = moment(currentAppointmentEnd); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + if (timeDifference > 120){ + return (

Extend/Book after this meeting Now:

+ + + + + +
+ ); + } + else if (timeDifference > 60){ + return (

Extend/Book after this meeting Now:

+ + + + +
+ ); + } + else if (timeDifference > 45){ + return (

Extend/Book after this meeting Now:

+ + + + +
+ ); + } + else if (timeDifference > 30){ + return (

Extend/Book after this meeting Now:

+ + + +
+ ); + } + else if (timeDifference > 15){ + return (

Extend/Book after this meeting Now:

+ + + +
+ ); + } + else if (timeDifference >= 5){ + return (

Extend/Book after this meeting Now:

+ + +
+ ); + } + else { + return (

Room is unavailable

); + } + } + else + { + return (

Extend/Book after this meeting Now:

+ + + + + +
+ ); + } + } + else { + if (room.Appointments.length > 0){ + let now = new Date(); + console.log("DATETIMENOW = " + now); + let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + now = moment(now); + console.log("DATETIMENOW2 = " + now); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(now, 'minutes') + if (timeDifference > 120){ + return (

Book This Room Now:

+ + + + + +
+ ); + } + else if (timeDifference > 60){ + return (

Book This Room Now:

+ + + + +
+ ); + } + else if (timeDifference > 45){ + return (

Book This Room Now:

+ + + + +
+ ); + } + else if (timeDifference > 30){ + return (

Book This Room Now:

+ + + +
+ ); + } + else if (timeDifference > 15){ + return (

Book This Room Now:

+ + + +
+ ); + } + else if (timeDifference >= 5){ + return (

Book This Room Now:

+ + +
+ ); + } + else { + return (

Room is unavailable before next booking.

); + } + } + else + { + return (

Book This Room Now:

+ + + + + +
+ ); + } + } +} const RoomStatusBlock = ({ config, details, room }) => (
{room.Name}
{room.Busy ? config.statusBusy : config.statusAvailable}
- +
); @@ -55,3 +238,4 @@ RoomStatusBlock.propTypes = { } export default RoomStatusBlock; + From 59671f6404c2e14a380c5401a755fe857e2cc856 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:18:54 +0100 Subject: [PATCH 02/25] Added listen for book now/extend buttons --- app/routes.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/routes.js b/app/routes.js index 4d8ef4f..01f7c17 100644 --- a/app/routes.js +++ b/app/routes.js @@ -43,10 +43,25 @@ module.exports = function(app) { }); // heartbeat-service to check if server is alive - app.get('/api/heartbeat', function(req, res) { - res.json({ status: 'OK' }); - }); + app.get('/api/heartbeat', function(req, res) { + res.json({ status: 'OK' }); + }); + + // books a room + app.get('/api/roombooking', function(req, res){ + console.log("Route Room Booking"); + //console.log(req); + + var ews = require('./ews/roombooking.js'); + var roomEmail = req.query.roomEmail; + var roomName = req.query.roomName; + var startTime = req.query.startTime; + var endTime = req.query.endTime; + console.log(roomEmail+" | "+roomName+" | "+startTime+" | "+endTime); + ews.BookRoom(roomEmail, roomName, startTime, endTime); + res.json({ status: 'Booked' }); + }); // redirects everything else to our react app app.get('*', function(req, res) { res.sendFile(path.join(__dirname,'../ui-react/build/','index.html')); From 5019afe94c2f9ca0083239fc0be77770123e3dfc Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:19:57 +0100 Subject: [PATCH 03/25] Added button styles --- static/css/styles.css | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/static/css/styles.css b/static/css/styles.css index 08bbd36..febbce3 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -159,7 +159,7 @@ body { font-size: 3vw; } #single-room__wrap .full-height .left-col #single-room__room-status { text-transform: uppercase; - padding: 4% 0; + padding: 1% 0; font-size: 18vw; font-weight: lighter; } #single-room__wrap .full-height .left-col #single-room__meeting-title { @@ -215,6 +215,21 @@ body { font-size: 3.2vw; padding-bottom: 25px; } +.btn { + border-radius: 5px; + border: 1px solic black; + font-size: 22px; + padding: 5px 5px; + text-align: center; + background-color: grey; + display: inline-block; + height: 50px; + width: 90%; +} +.btn:active { + background-color: purple; +} + @media screen and (min-width: 40em) { .valign-middle { display: table; From ac26f5c7cba5c6a383e59bf01b73169b6bbe3a36 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:47:44 +0100 Subject: [PATCH 04/25] fixed type error "TypeError: ews.TimeSpan.FromHours(...).asMilliseconds is not a function" --- app/ews/rooms.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/ews/rooms.js b/app/ews/rooms.js index fef2291..6c30dbe 100644 --- a/app/ews/rooms.js +++ b/app/ews/rooms.js @@ -115,7 +115,7 @@ module.exports = function (callback) { roomAddresses.forEach(function(room, index, array){ var calendarFolderId = new ews.FolderId(ews.WellKnownFolderName.Calendar, new ews.Mailbox(room.Email)); - var view = new ews.CalendarView(ews.DateTime.Now, new ews.DateTime(ews.DateTime.Now.TotalMilliSeconds + ews.TimeSpan.FromHours(240).asMilliseconds()), 6); + var view = new ews.CalendarView(ews.DateTime.Now, new ews.DateTime(ews.DateTime.Now.TotalMilliSeconds + 576000000), 6); exch.FindAppointments(calendarFolderId, view).then((response) => { fillRoomData(context, room, response.Items); }, (error) => { From 0414dabe2dfea0fb3d3b232d49b4bbb6b5a8e329 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:56:34 +0100 Subject: [PATCH 05/25] updated packages From 1d0734bf8fdb2195b9fc3f4a9584ce913aa56108 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:57:33 +0100 Subject: [PATCH 06/25] updated packages --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9b45654..d96bd9d 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,12 @@ "start-ui-dev": "cd ui-react && npm start" }, "dependencies": { - "ews-javascript-api": "0.8.0", + "ews-javascript-api": "0.9.4", "express": "4.16.2", "grunt": "1.0.1", "grunt-contrib-sass": "1.0.0", "grunt-contrib-watch": "1.0.0", - "socket.io": "1.7.4" + "socket.io": "2.2.0" }, "devDependencies": {} } From 0cb6c3cf59d72433c78d4a899dc1a1251e9921cd Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 13:58:50 +0100 Subject: [PATCH 07/25] updated packages --- ui-react/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui-react/package.json b/ui-react/package.json index 3888e75..2b4e960 100644 --- a/ui-react/package.json +++ b/ui-react/package.json @@ -3,12 +3,12 @@ "version": "0.1.0", "private": true, "dependencies": { - "jquery": "3.2.1", + "jquery": "3.4.1", "prop-types": "15.6.2", "react": "16.0.0", "react-dom": "16.0.0", "react-router-dom": "4.2.2", - "react-scripts": "1.1.4", + "react-scripts": "3.0.1", "socket.io-client": "2.0.3" }, "devDependencies": { From eb8897ecafa685c6c0074b11a5084b1461b1a275 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 14:02:50 +0100 Subject: [PATCH 08/25] Update package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d96bd9d..37d2433 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,9 @@ "dependencies": { "ews-javascript-api": "0.9.4", "express": "4.16.2", - "grunt": "1.0.1", + "grunt": "1.0.4", "grunt-contrib-sass": "1.0.0", - "grunt-contrib-watch": "1.0.0", + "grunt-contrib-watch": "1.1.0", "socket.io": "2.2.0" }, "devDependencies": {} From c7eb2d85e54e89366ec2a3b9f0de624b732ac537 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 14:12:06 +0100 Subject: [PATCH 09/25] Room Booking EWS functions --- app/ews/roombooking.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 app/ews/roombooking.js diff --git a/app/ews/roombooking.js b/app/ews/roombooking.js new file mode 100644 index 0000000..cdbb442 --- /dev/null +++ b/app/ews/roombooking.js @@ -0,0 +1,30 @@ +module.exports = { + BookRoom: function (roomEmail, roomName, startTime, endTime) { + var ews = require("ews-javascript-api"); + var auth = require("../../config/auth.js"); + //var ewsNTLM = require("ews-javascript-api-auth");//uncomment for NTLM (depricated) + //ews.ConfigurationApi.ConfigureXHR(new ewsNTLM.ntlmAuthXhrApi(auth.exchange.username, auth.exchange.password, true));//uncomment for NTLM (depricated) + const exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2013); + exch.Credentials = new ews.WebCredentials(auth.exchange.username, auth.exchange.password); + exch.Url = new ews.Uri(auth.exchange.uri); + + var promise = new Promise (function (resolve, reject) { + var appointment = new ews.Appointment(exch); + appointment.Subject = "Booked by Room Panel" + appointment.Start = new ews.DateTime(startTime); + appointment.End = new ews.DateTime(endTime); + appointment.Location = roomName; + appointment.Body = new ews.MessageBody(ews.BodyType.HTML, "Room Booked by Room Panel"); + appointment.RequiredAttendees.Add(roomEmail); + + appointment.Save(ews.SendInvitationsMode.SendToAllAndSaveCopy).then(() => { + console.log("------------"); + }, (ei) => { + console.log(ei.stack, ei.stack.split("\n")); + console.log("error"); + }); + }) + return promise; + } + +} \ No newline at end of file From d15d00f128788a1ce01ea49660e0165269383340 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 14:14:58 +0100 Subject: [PATCH 10/25] Update package.json --- ui-react/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui-react/package.json b/ui-react/package.json index 2b4e960..476558b 100644 --- a/ui-react/package.json +++ b/ui-react/package.json @@ -8,7 +8,7 @@ "react": "16.0.0", "react-dom": "16.0.0", "react-router-dom": "4.2.2", - "react-scripts": "3.0.1", + "react-scripts": "1.1.4", "socket.io-client": "2.0.3" }, "devDependencies": { From 74ed5e75de0568825c612f3e51c74353110bbb26 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 16:16:06 +0100 Subject: [PATCH 11/25] try catch for room.appointments.length room.appointments.length my not be loaded in time. Try-Catch typeerror reloads the page if it catches this error. --- .../components/single-room/RoomStatusBlock.js | 265 +++++++++--------- 1 file changed, 135 insertions(+), 130 deletions(-) diff --git a/ui-react/src/components/single-room/RoomStatusBlock.js b/ui-react/src/components/single-room/RoomStatusBlock.js index d4ade64..ab0cd4e 100644 --- a/ui-react/src/components/single-room/RoomStatusBlock.js +++ b/ui-react/src/components/single-room/RoomStatusBlock.js @@ -66,92 +66,149 @@ function ButtonControl(props){ let room = props.room; let details = props.details; var moment = require('moment'); - if (room.Busy){ - let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); - if (room.Appointments.length > 1){ - let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); - - currentAppointmentEnd = moment(currentAppointmentEnd); - nextAppointmentStart = moment(nextAppointmentStart); - let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') - if (timeDifference > 120){ - return (

Extend/Book after this meeting Now:

- - - - - -
- ); + try{ + if (room.Busy){ + let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + if (room.Appointments.length > 1){ + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + + currentAppointmentEnd = moment(currentAppointmentEnd); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + if (timeDifference > 120){ + return (

Extend/Book after this meeting Now:

+ + + + + +
+ ); + } + else if (timeDifference > 60){ + return (

Extend/Book after this meeting Now:

+ + + + +
+ ); + } + else if (timeDifference > 45){ + return (

Extend/Book after this meeting Now:

+ + + + +
+ ); + } + else if (timeDifference > 30){ + return (

Extend/Book after this meeting Now:

+ + + +
+ ); + } + else if (timeDifference > 15){ + return (

Extend/Book after this meeting Now:

+ + + +
+ ); + } + else if (timeDifference >= 5){ + return (

Extend/Book after this meeting Now:

+ + +
+ ); + } + else { + return (

Room is unavailable

); + } } - else if (timeDifference > 60){ + else + { return (

Extend/Book after this meeting Now:

+
); } - else if (timeDifference > 45){ - return (

Extend/Book after this meeting Now:

- - - - -
- ); - } - else if (timeDifference > 30){ - return (

Extend/Book after this meeting Now:

- - - -
- ); - } - else if (timeDifference > 15){ - return (

Extend/Book after this meeting Now:

- - - -
- ); - } - else if (timeDifference >= 5){ - return (

Extend/Book after this meeting Now:

- - -
- ); - } - else { - return (

Room is unavailable

); - } } - else - { - return (

Extend/Book after this meeting Now:

- - - - - -
- ); - } - } - else { - if (room.Appointments.length > 0){ - let now = new Date(); - console.log("DATETIMENOW = " + now); - let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); - now = moment(now); - console.log("DATETIMENOW2 = " + now); - nextAppointmentStart = moment(nextAppointmentStart); + else { + if (room.Appointments.length > 0){ + let now = new Date(); + console.log("DATETIMENOW = " + now); + let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + now = moment(now); + console.log("DATETIMENOW2 = " + now); + nextAppointmentStart = moment(nextAppointmentStart); - let timeDifference = nextAppointmentStart.diff(now, 'minutes') - if (timeDifference > 120){ + let timeDifference = nextAppointmentStart.diff(now, 'minutes') + if (timeDifference > 120){ + return (

Book This Room Now:

+ + + + + +
+ ); + } + else if (timeDifference > 60){ + return (

Book This Room Now:

+ + + + +
+ ); + } + else if (timeDifference > 45){ + return (

Book This Room Now:

+ + + + +
+ ); + } + else if (timeDifference > 30){ + return (

Book This Room Now:

+ + + +
+ ); + } + else if (timeDifference > 15){ + return (

Book This Room Now:

+ + + +
+ ); + } + else if (timeDifference >= 5){ + return (

Book This Room Now:

+ + +
+ ); + } + else { + return (

Room is unavailable before next booking.

); + } + } + else + { return (

Book This Room Now:

@@ -161,63 +218,11 @@ function ButtonControl(props){
); } - else if (timeDifference > 60){ - return (

Book This Room Now:

- - - - -
- ); - } - else if (timeDifference > 45){ - return (

Book This Room Now:

- - - - -
- ); - } - else if (timeDifference > 30){ - return (

Book This Room Now:

- - - -
- ); - } - else if (timeDifference > 15){ - return (

Book This Room Now:

- - - -
- ); - } - else if (timeDifference >= 5){ - return (

Book This Room Now:

- - -
- ); - } - else { - return (

Room is unavailable before next booking.

); - } - } - else - { - return (

Book This Room Now:

- - - - - -
- ); } } + catch (TypeError){ + setTimeout(reloadPage, 3000); + } } const RoomStatusBlock = ({ config, details, room }) => (
From 23055616112587d4a40e224b83633d64a6781813 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 17:43:08 +0100 Subject: [PATCH 12/25] Updated error handling --- .../components/single-room/RoomStatusBlock.js | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/ui-react/src/components/single-room/RoomStatusBlock.js b/ui-react/src/components/single-room/RoomStatusBlock.js index ab0cd4e..eb1a78a 100644 --- a/ui-react/src/components/single-room/RoomStatusBlock.js +++ b/ui-react/src/components/single-room/RoomStatusBlock.js @@ -5,6 +5,7 @@ import PropTypes from 'prop-types'; const Details = ({room, details}) => ( +
{ details.appointmentExists &&
@@ -66,7 +67,7 @@ function ButtonControl(props){ let room = props.room; let details = props.details; var moment = require('moment'); - try{ + //try{ if (room.Busy){ let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); if (room.Appointments.length > 1){ @@ -219,19 +220,29 @@ function ButtonControl(props){ ); } } - } - catch (TypeError){ - setTimeout(reloadPage, 3000); - } + //} + //catch (TypeError){ + // setTimeout(reloadPage, 2000); + //} } const RoomStatusBlock = ({ config, details, room }) => (
+ + + +
+ +
{room.Name}
+
{room.Busy ? config.statusBusy : config.statusAvailable}
- -
-
); From 8915fbc0bc157f662a27935ff3f50f170f02ae5c Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 17:43:44 +0100 Subject: [PATCH 13/25] Updated error handling --- .../src/components/single-room/Display.js | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/ui-react/src/components/single-room/Display.js b/ui-react/src/components/single-room/Display.js index dc71580..0a38dee 100644 --- a/ui-react/src/components/single-room/Display.js +++ b/ui-react/src/components/single-room/Display.js @@ -7,6 +7,29 @@ import Sidebar from './Sidebar'; import Socket from '../global/Socket'; import Spinner from '../global/Spinner'; +class ErrorHandler extends React.Component { + constructor(props) { + super(props) + this.state = { errorOccurred: false } + } + + componentDidCatch(error, info) { + this.setState({ errorOccurred: true }) + console.log(error); + } + render() { + console.log("ErrorHandler RENDER"); + if (this.state.errorOccurred){ + + window.location.reload(); + return

SOMETHING WENT WRONG - RELOADING

+ } + else{ + return this.props.children; + } + } +} + class Display extends Component { constructor(props) { super(props); @@ -36,10 +59,9 @@ class Display extends Component { processRoomDetails = () => { const { rooms, roomAlias } = this.state; - let roomArray = rooms.filter(item => item.RoomAlias === roomAlias); let room = roomArray[0]; - + // 1) ensure that appointments exist for the room // 2) check if there are more than 1 upcoming appointments // 3) check if there are times in the room.Start & room.End @@ -51,7 +73,6 @@ class Display extends Component { appointmentExists: true } })); - if (room.Appointments.length > 1) { this.setState(prevState => ({ roomDetails: { @@ -76,6 +97,9 @@ class Display extends Component { nextUp: config.nextUp + ': ' } })); + + + console.log("ROOM IS FREE"); } else { this.setState(prevState => ({ @@ -84,6 +108,7 @@ class Display extends Component { nextUp: '' } })); + console.log("ROOM IS BUSY"); } } } @@ -109,6 +134,7 @@ class Display extends Component { const { response, room, roomDetails } = this.state; return ( +
@@ -121,6 +147,7 @@ class Display extends Component { }
+
); } } From 94cb1a8612983541c15330ae4c539482902f7ab1 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 17:45:00 +0100 Subject: [PATCH 14/25] Removed console.log outputs --- ui-react/src/components/single-room/Display.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ui-react/src/components/single-room/Display.js b/ui-react/src/components/single-room/Display.js index 0a38dee..9a2deaa 100644 --- a/ui-react/src/components/single-room/Display.js +++ b/ui-react/src/components/single-room/Display.js @@ -97,9 +97,6 @@ class Display extends Component { nextUp: config.nextUp + ': ' } })); - - - console.log("ROOM IS FREE"); } else { this.setState(prevState => ({ @@ -108,7 +105,6 @@ class Display extends Component { nextUp: '' } })); - console.log("ROOM IS BUSY"); } } } From 316415926dc9d405d6262006d604d00f6872c80f Mon Sep 17 00:00:00 2001 From: Collie147 Date: Fri, 9 Aug 2019 18:08:44 +0100 Subject: [PATCH 15/25] Update Display.js --- ui-react/src/components/single-room/Display.js | 1 - 1 file changed, 1 deletion(-) diff --git a/ui-react/src/components/single-room/Display.js b/ui-react/src/components/single-room/Display.js index 9a2deaa..8b7dadb 100644 --- a/ui-react/src/components/single-room/Display.js +++ b/ui-react/src/components/single-room/Display.js @@ -18,7 +18,6 @@ class ErrorHandler extends React.Component { console.log(error); } render() { - console.log("ErrorHandler RENDER"); if (this.state.errorOccurred){ window.location.reload(); From 135bdc8c5f16c4ac16b8eb429909e8023822ca54 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Wed, 20 Nov 2019 10:02:47 +0000 Subject: [PATCH 16/25] Version 2 Added buttons on the room screen to book, extend, cancel and book after current meeting. Added button on the room screen to go back to the flightboard. This is made visible depending on a variable in the .env file Added a logo to the room screen. Added option to hide the drop down on the flight board screen. This is made visible depending on a variable in the .env file Auth.js has been moved to ./config/auth/auth.js - this move creates an option to mount the folder in RAM making the auth.js file temporary. On my own build I've encrypted auth.js and at boot if certain criteria are met, it is unencrypted and copied a ram mounted drive named auth linked to the config folder --- app/ews/roombooking.js | 107 +- app/ews/roomlists.js | 17 +- app/ews/rooms.js | 60 +- app/routes.js | 5 +- app/socket-controller.js | 2 +- config/auth/auth.js | 11 + config/room-blacklist.js | 2 +- npm-shrinkwrap.json | 1324 ++++++++++------- package.json | 12 +- rebuild.bat | 1 + static/css/styles.css | 257 +++- static/css/styles.css.bak | 386 +++++ static/img/chevronBack.png | Bin 0 -> 9247 bytes static/img/chevronBackold.png | Bin 0 -> 5289 bytes static/js/dropdown-btns.js | 46 + ui-react/maincss.css | 11 + ui-react/npm-shrinkwrap.json | 327 +++- ui-react/package.json | 7 +- .../components/flightboard/FlightboardRow.js | 29 +- ui-react/src/components/flightboard/Navbar.js | 9 +- .../src/components/single-room/Display.js | 44 +- ui-react/src/components/single-room/Popup.js | 15 + .../RoomStatusBlock - no back button.js | 551 +++++++ .../components/single-room/RoomStatusBlock.js | 576 ++++--- .../single-room/RoomStatusBlock.js.bak | 543 +++++++ .../components/single-room/Sidebar - Copy.js | 45 + .../src/components/single-room/Sidebar.js | 4 +- ui-react/src/config/flightboard.config.js | 2 +- 28 files changed, 3616 insertions(+), 777 deletions(-) create mode 100644 config/auth/auth.js create mode 100644 rebuild.bat create mode 100644 static/css/styles.css.bak create mode 100644 static/img/chevronBack.png create mode 100644 static/img/chevronBackold.png create mode 100644 static/js/dropdown-btns.js create mode 100644 ui-react/maincss.css create mode 100644 ui-react/src/components/single-room/Popup.js create mode 100644 ui-react/src/components/single-room/RoomStatusBlock - no back button.js create mode 100644 ui-react/src/components/single-room/RoomStatusBlock.js.bak create mode 100644 ui-react/src/components/single-room/Sidebar - Copy.js diff --git a/app/ews/roombooking.js b/app/ews/roombooking.js index cdbb442..c32fc12 100644 --- a/app/ews/roombooking.js +++ b/app/ews/roombooking.js @@ -1,30 +1,97 @@ module.exports = { - BookRoom: function (roomEmail, roomName, startTime, endTime) { + BookRoom: function (roomEmail, roomName, startTime, endTime, bookingType) { var ews = require("ews-javascript-api"); - var auth = require("../../config/auth.js"); - //var ewsNTLM = require("ews-javascript-api-auth");//uncomment for NTLM (depricated) - //ews.ConfigurationApi.ConfigureXHR(new ewsNTLM.ntlmAuthXhrApi(auth.exchange.username, auth.exchange.password, true));//uncomment for NTLM (depricated) + var auth = require("../../config/auth/auth.js"); + var moment = require('moment'); + //if NTLM + require('dotenv').config() + //console.log(".env = " + process.env.REACT_APP_EnableNTLM); + if (process.env.REACT_APP_EnableNTLM=="true") { + var ewsNTLM = require("ews-javascript-api-auth"); + ews.ConfigurationApi.ConfigureXHR(new ewsNTLM.ntlmAuthXhrApi(auth.exchange.username, auth.exchange.password, true)); + } const exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2013); exch.Credentials = new ews.WebCredentials(auth.exchange.username, auth.exchange.password); exch.Url = new ews.Uri(auth.exchange.uri); + //ews.EwsLogging.DebugLogEnabled = true; + if ((bookingType == 'BookNow') || (bookingType == 'BookAfter')){ + console.log("BookNow/BookAfter"); + var promise = new Promise (function (resolve, reject) { + var appointment = new ews.Appointment(exch); + appointment.Subject = "Booked by Meet-Easier"; + appointment.Start = new ews.DateTime(startTime); + appointment.End = new ews.DateTime(endTime); + console.log("RoomBooking: " +appointment.Start + " | " + appointment.End); + appointment.Location = roomName; + appointment.Body = new ews.MessageBody(ews.BodyType.HTML, "Room Booked by Room Panel"); + appointment.RequiredAttendees.Add(roomEmail); + let mode = ews.SendInvitationsMode.SendToAllAndSaveCopy + appointment.Save(mode).then(() => { + console.log("Appointment Saved"); + }, (ei) => { + console.log(ei.stack, ei.stack.split("\n")); + console.log("error"); + }); + }) + promise.then(function(result){ + console.log("SUCCESS"); + }, function(err){ + console.log(err); + }); + } + else if ((bookingType == 'Extend') || (bookingType == 'EndNow')){ + var calendarFolderId = new ews.FolderId(ews.WellKnownFolderName.Calendar, new ews.Mailbox(roomEmail)); + var view = new ews.CalendarView(ews.DateTime.Now, new ews.DateTime(ews.DateTime.Now.TotalMilliSeconds + 576000000), 6); + exch.FindAppointments(calendarFolderId, view).then((response) => { + var appointments = response.Items; + console.log(bookingType+":START"); + appointments.forEach(function(appt, index) { - var promise = new Promise (function (resolve, reject) { - var appointment = new ews.Appointment(exch); - appointment.Subject = "Booked by Room Panel" - appointment.Start = new ews.DateTime(startTime); - appointment.End = new ews.DateTime(endTime); - appointment.Location = roomName; - appointment.Body = new ews.MessageBody(ews.BodyType.HTML, "Room Booked by Room Panel"); - appointment.RequiredAttendees.Add(roomEmail); + // get start time from appointment + var start = processTime(appt.Start.momentDate), + end = processTime(appt.End.momentDate), + now = Date.now(); + + console.log(start); + var apptStartewsDT = new ews.DateTime(new Date(parseInt(start, 10))); + var apptStartTime = moment(start).toISOString(); + if (apptStartTime == startTime){ + var promise = new Promise (function (resolve, reject) { + + appt.End = new ews.DateTime(endTime); + let SIOCmode = ews.SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy; + let CRmode = ews.ConflictResolutionMode.AlwaysOverwrite + appt.Update(CRmode, SIOCmode).then(() => { + console.log("Appointment Saved"); + }, (ei) => { + console.log(ei.stack, ei.stack.split("\n")); + console.log("error"); + }); + }) + promise.then(function(result){ + console.log(result); + }, function(err){ + console.log(err); + }); + } - appointment.Save(ews.SendInvitationsMode.SendToAllAndSaveCopy).then(() => { - console.log("------------"); - }, (ei) => { - console.log(ei.stack, ei.stack.split("\n")); - console.log("error"); - }); - }) - return promise; + + } , (error) => { + // handle the error here + // callback(error, null); + console.log(error); + }); + }); + } + function processTime(appointmentTime) { + var time = JSON.stringify(appointmentTime); + time = time.replace(/"/g,""); + var time = new Date(time); + var time = time.getTime(); + + return time; + } } + } \ No newline at end of file diff --git a/app/ews/roomlists.js b/app/ews/roomlists.js index b046052..d6de0a1 100644 --- a/app/ews/roomlists.js +++ b/app/ews/roomlists.js @@ -2,17 +2,24 @@ module.exports = function (callback) { // modules ------------------------------------------------------------------- var ews = require("ews-javascript-api"); - var auth = require("../../config/auth.js"); - + var auth = require("../../config/auth/auth.js"); + //if NTLM + require('dotenv').config() + //console.log(".env = " + process.env.REACT_APP_EnableNTLM); + if (process.env.REACT_APP_EnableNTLM=="true") { + var ewsNTLM = require("ews-javascript-api-auth"); + ews.ConfigurationApi.ConfigureXHR(new ewsNTLM.ntlmAuthXhrApi(auth.exchange.username, auth.exchange.password, true)); + } + // // ews ----------------------------------------------------------------------- - var exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2016); - exch.Credentials = new ews.ExchangeCredentials(auth.exchange.username, auth.exchange.password); + const exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2013); + exch.Credentials = new ews.WebCredentials(auth.exchange.username, auth.exchange.password); exch.Url = new ews.Uri(auth.exchange.uri); + // get roomlists from EWS and return sorted array of room list names exch.GetRoomLists().then((lists) => { var roomLists = []; - lists.items.forEach(function (item, i, array) { roomLists.push(item.Name); }); diff --git a/app/ews/rooms.js b/app/ews/rooms.js index 6c30dbe..51848b2 100644 --- a/app/ews/rooms.js +++ b/app/ews/rooms.js @@ -2,15 +2,21 @@ module.exports = function (callback) { // modules ------------------------------------------------------------------- var ews = require("ews-javascript-api"); - var auth = require("../../config/auth.js"); + var auth = require("../../config/auth/auth.js"); var blacklist = require("../../config/room-blacklist.js"); - - // ews ----------------------------------------------------------------------- - var exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2016); - exch.Credentials = new ews.ExchangeCredentials(auth.exchange.username, auth.exchange.password); + + //if NTLM + require('dotenv').config() + //console.log(".env = " + process.env.REACT_APP_EnableNTLM); + if (process.env.REACT_APP_EnableNTLM=="true") { + var ewsNTLM = require("ews-javascript-api-auth"); + ews.ConfigurationApi.ConfigureXHR(new ewsNTLM.ntlmAuthXhrApi(auth.exchange.username, auth.exchange.password, true)); + } + // + const exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2013); + exch.Credentials = new ews.WebCredentials(auth.exchange.username, auth.exchange.password); exch.Url = new ews.Uri(auth.exchange.uri); - // promise: get all room lists var getListOfRooms = function () { var promise = new Promise(function (resolve, reject) { @@ -29,7 +35,11 @@ module.exports = function (callback) { var promise = new Promise(function (resolve, reject) { var roomAddresses = []; var counter = 0; - + const fs = require('fs'); + fs.truncate('./ui-react/build/roomlinks.txt', 0, function(){console.log('roomlinks.txt file cleared')}); + fs.truncate('./ui-react/build/roomnames.txt', 0, function(){console.log('roomnames.txt file cleared')}); + var ip = require("ip"); + roomLists.forEach(function (item, i, array) { exch.GetRooms(new ews.Mailbox(item.Address)).then((rooms) => { rooms.forEach(function (roomItem, roomIndex, roomsArray) { @@ -39,7 +49,7 @@ module.exports = function (callback) { // if not in blacklist, proceed as normal; otherwise, skip if (!inBlacklist) { let room = {}; - + // if the email addresses != your corporate domain, // replace email domain with domain let email = roomItem.Address; @@ -47,12 +57,29 @@ module.exports = function (callback) { email = email + '@' + auth.domain; let roomAlias = roomItem.Name.toLowerCase().replace(/\s+/g, "-"); - + + //console.log(roomAlias); + // fs.appendFile('./ui-react/build/roomlinks.txt', 'http://'+ip.address()+':8080/single-room/' + roomAlias + '\r\n', function(err){ + fs.appendFile('./ui-react/build/roomlinks.txt', 'http://localhost:8080/single-room/' + roomAlias + '\r\n', function(err){ + if(err){ + return console.log(err); + } + //console.log("Alias Saved"); + }); + fs.appendFile('./ui-react/build/roomnames.txt', roomItem.Name.toLowerCase() + '\r\n', function(err){ + if(err){ + return console.log(err); + } + //console.log("Alias Saved"); + }); room.Roomlist = item.Name; room.Name = roomItem.Name; room.RoomAlias = roomAlias; room.Email = email; roomAddresses.push(room); + //console.log(roomAddresses); + //console.log(room.Roomlist); + //console.log(room.Name); } }); counter++; @@ -69,20 +96,21 @@ module.exports = function (callback) { var fillRoomData = function (context, room, appointments = [], option = {}) { room.Appointments = []; + appointments.forEach(function(appt, index) { + // get start time from appointment var start = processTime(appt.Start.momentDate), end = processTime(appt.End.momentDate), now = Date.now(); - + room.Busy = index === 0 ? start < now && now < end : room.Busy; - let isAppointmentPrivate = appt.Sensitivity === 'Normal' ? false : true; let subject = isAppointmentPrivate ? 'Private' : appt.Subject; - + console.log("Appointment Subject: " + subject); room.Appointments.push({ "Subject" : subject, "Organizer" : appt.Organizer.Name, @@ -112,15 +140,21 @@ module.exports = function (callback) { itemsProcessed: 0, roomAddresses }; - + //console.log(roomAddresses); roomAddresses.forEach(function(room, index, array){ var calendarFolderId = new ews.FolderId(ews.WellKnownFolderName.Calendar, new ews.Mailbox(room.Email)); + //console.log(calendarFolderId); var view = new ews.CalendarView(ews.DateTime.Now, new ews.DateTime(ews.DateTime.Now.TotalMilliSeconds + 576000000), 6); + + exch.FindAppointments(calendarFolderId, view).then((response) => { + //console.log(room); + //console.log(response.Items); fillRoomData(context, room, response.Items); }, (error) => { // handle the error here // callback(error, null); + console.log(error); fillRoomData(context, room, undefined, { errorMessage: error.response.errorMessage }); }); }); diff --git a/app/routes.js b/app/routes.js index 01f7c17..74da65f 100644 --- a/app/routes.js +++ b/app/routes.js @@ -58,8 +58,9 @@ module.exports = function(app) { var roomName = req.query.roomName; var startTime = req.query.startTime; var endTime = req.query.endTime; - console.log(roomEmail+" | "+roomName+" | "+startTime+" | "+endTime); - ews.BookRoom(roomEmail, roomName, startTime, endTime); + var bookingType = req.query.bookingType; + console.log(roomEmail+" | "+roomName+" | "+startTime+" | "+endTime+" | "+bookingType); + ews.BookRoom(roomEmail, roomName, startTime, endTime, bookingType); res.json({ status: 'Booked' }); }); // redirects everything else to our react app diff --git a/app/socket-controller.js b/app/socket-controller.js index 980bf6e..28b3082 100644 --- a/app/socket-controller.js +++ b/app/socket-controller.js @@ -17,7 +17,7 @@ module.exports = function (io){ io.of('/').emit('controllerDone', 'done'); }); - setTimeout(callEWS, 60000); + setTimeout(callEWS, 15000); })(); } diff --git a/config/auth/auth.js b/config/auth/auth.js new file mode 100644 index 0000000..9667640 --- /dev/null +++ b/config/auth/auth.js @@ -0,0 +1,11 @@ +// expose our config directly to our application using module.exports +module.exports = { + // this user MUST have full access to all the room accounts + 'exchange' : { + 'username' : process.env.USERNAME || 'SVCACCT_EMAIL@DOMAIN.COM', + 'password' : process.env.PASSWORD || 'PASSWORD', + 'uri' : 'https://outlook.office365.com/EWS/Exchange.asmx' + }, + // Ex: CONTOSO.COM, Contoso.com, Contoso.co.uk, etc. + 'domain' : process.env.DOMAIN || 'DOMAIN.COM' +}; \ No newline at end of file diff --git a/config/room-blacklist.js b/config/room-blacklist.js index 81f5e58..f30b715 100644 --- a/config/room-blacklist.js +++ b/config/room-blacklist.js @@ -2,4 +2,4 @@ module.exports = { 'roomEmails' : [ 'ROOM_EMAIL@DOMAIN.com' ] -}; +}; \ No newline at end of file diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 9848ab4..7480438 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -3,32 +3,6 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "@types/moment-timezone": { - "version": "0.2.35", - "resolved": "https://registry.npmjs.org/@types/moment-timezone/-/moment-timezone-0.2.35.tgz", - "integrity": "sha512-HG4pUK/fTrGY3FerMlINxK74MxdAxkCRYrp5AM+oJ2jLcK0jWUi64ZV15JKwDR4TYLIxrT3y9SVnEWcLPbC/YA==", - "requires": { - "moment": ">=2.14.0" - } - }, - "@types/node": { - "version": "6.0.92", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.92.tgz", - "integrity": "sha512-awEYSSTn7dauwVCYSx2CJaPTu0Z1Ht2oR1b2AD3CYao6ZRb+opb6EL43fzmD7eMFgMHzTBWSUzlWSD+S8xN0Nw==" - }, - "@types/node-uuid": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@types/node-uuid/-/node-uuid-0.0.28.tgz", - "integrity": "sha1-QWVbXOY7LzN0xOgmtN0h5ykFjj0=", - "requires": { - "@types/node": "*" - } - }, - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=" - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -48,6 +22,17 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -59,11 +44,18 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + } } }, "array-find-index": { @@ -77,15 +69,48 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -102,15 +127,23 @@ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", @@ -128,9 +161,41 @@ } }, "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=" + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "requires": { + "bytes": "1", + "string_decoder": "0.10" + } + } + } }, "body-parser": { "version": "1.18.2", @@ -150,19 +215,14 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -187,6 +247,11 @@ "map-obj": "^1.0.0" } }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -199,25 +264,46 @@ "supports-color": "^2.0.0" } }, - "coffee-script": { + "coffeescript": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", - "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=" + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "component-inherit": { "version": "0.0.3", @@ -239,6 +325,11 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=" + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", @@ -249,6 +340,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, "cross-spawn": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-0.2.9.tgz", @@ -273,6 +369,14 @@ "number-is-nan": "^1.0.0" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "dateformat": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", @@ -295,6 +399,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", @@ -305,6 +414,20 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -324,107 +447,81 @@ } }, "engine.io": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.4.tgz", - "integrity": "sha1-d7zhK4Dl1gQpM3/sOw2vaR68kAM=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", + "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", "requires": { - "accepts": "1.3.3", + "accepts": "~1.3.4", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "1.1.4" + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~6.1.0" }, "dependencies": { - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "requires": { - "mime-types": "~2.1.11", - "negotiator": "0.6.1" - } - }, "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "ms": "0.7.2" + "ms": "2.0.0" } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" } } }, "engine.io-client": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.4.tgz", - "integrity": "sha1-n+hd7iWFPKa6viW9KtaHEIY+kcI=", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", + "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", "has-cors": "1.1.0", "indexof": "0.0.1", - "parsejson": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "1.1.2", - "xmlhttprequest-ssl": "1.5.3", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" + "ms": "2.0.0" } } } }, "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", "requires": { "after": "0.8.2", - "arraybuffer.slice": "0.0.6", + "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" } }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { "is-arrayish": "^0.2.1" } @@ -440,9 +537,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "etag": { "version": "1.8.1", @@ -455,24 +552,29 @@ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" }, "ews-javascript-api": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/ews-javascript-api/-/ews-javascript-api-0.8.0.tgz", - "integrity": "sha1-87DJ5+fwDrDjwtpHNcTjig/idmA=", - "requires": { - "@types/moment-timezone": "^0.2.32", - "@types/node": "^6.0.46", - "@types/node-uuid": "0.0.28", - "@types/q": "0.0.32", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/ews-javascript-api/-/ews-javascript-api-0.9.4.tgz", + "integrity": "sha512-3I8PRODhlOwMuhuzCMXix33HXpksQ1ejxe15h1UHd2uV+V2IvvkxznFfSgiLFAnh4tFzLbMGuSsq0vzwyDVhVg==", + "requires": { "base64-js": "^1.2.0", + "bluebird": "^3.4.6", "fetch": "^1.1.0", - "moment": "^2.15.2", - "moment-timezone": "^0.5.7", - "node-uuid": "^1.4.7", - "reflect-metadata": "^0.1.8", - "winjs-node": "^0.2.0", + "moment": "^2.17.1", + "moment-timezone": "^0.5.11", + "uuid": "^3.1.0", "xmldom": "^0.1.22" } }, + "ews-javascript-api-auth": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ews-javascript-api-auth/-/ews-javascript-api-auth-1.2.1.tgz", + "integrity": "sha512-5Q4YjJBllKD6Zb37l5XQyjgLnSw6ILm5PYP8xZXvDjXARWrOTB01HRhaumWBMCobvAqeIhDQ93DVn2+pCOOJ2w==", + "requires": { + "bluebird": "^3.4.6", + "fetch": "^1.0.1", + "ntlm-client": "git+https://git@github.com/gautamsi/node-ntlm-client.git" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -515,6 +617,26 @@ "vary": "~1.1.2" } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -577,6 +699,21 @@ } } }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -587,15 +724,20 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "requires": { "globule": "^1.0.0" } @@ -610,6 +752,14 @@ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=" }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", @@ -624,19 +774,19 @@ } }, "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", "requires": { "glob": "~7.1.1", - "lodash": "~4.17.4", + "lodash": "~4.17.10", "minimatch": "~3.0.2" }, "dependencies": { "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -645,25 +795,20 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" } } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" }, "grunt": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", - "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", + "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", "requires": { - "coffee-script": "~1.10.0", + "coffeescript": "~1.10.0", "dateformat": "~1.0.12", "eventemitter2": "~0.4.13", "exit": "~0.1.1", @@ -671,14 +816,15 @@ "glob": "~7.0.0", "grunt-cli": "~1.2.0", "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~1.0.0", - "grunt-legacy-util": "~1.0.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", "iconv-lite": "~0.4.13", - "js-yaml": "~3.5.2", - "minimatch": "~3.0.0", + "js-yaml": "~3.13.0", + "minimatch": "~3.0.2", + "mkdirp": "~0.5.1", "nopt": "~3.0.6", "path-is-absolute": "~1.0.0", - "rimraf": "~2.2.8" + "rimraf": "~2.6.2" }, "dependencies": { "grunt-cli": { @@ -691,6 +837,11 @@ "nopt": "~3.0.6", "resolve": "~1.1.0" } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" } } }, @@ -714,70 +865,117 @@ } }, "grunt-contrib-watch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", - "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "requires": { - "async": "^1.5.0", - "gaze": "^1.0.0", - "lodash": "^3.10.1", - "tiny-lr": "^0.2.1" + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + } } }, "grunt-known-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==" }, "grunt-legacy-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", - "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", "requires": { "colors": "~1.1.2", - "grunt-legacy-log-utils": "~1.0.0", + "grunt-legacy-log-utils": "~2.0.0", "hooker": "~0.2.3", - "lodash": "~3.10.1", - "underscore.string": "~3.2.3" + "lodash": "~4.17.5" } }, "grunt-legacy-log-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", - "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", "requires": { - "chalk": "~1.1.1", - "lodash": "~4.3.0" + "chalk": "~2.4.1", + "lodash": "~4.17.10" }, "dependencies": { - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=" + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } } } }, "grunt-legacy-util": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", - "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", "requires": { "async": "~1.5.2", "exit": "~0.1.1", "getobject": "~0.1.0", "hooker": "~0.2.3", - "lodash": "~4.3.0", - "underscore.string": "~3.2.3", - "which": "~1.2.1" + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" }, "dependencies": { - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=" + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } } } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -786,12 +984,12 @@ "ansi-regex": "^2.0.0" } }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", "requires": { - "isarray": "0.0.1" + "isarray": "2.0.1" } }, "has-cors": { @@ -799,15 +997,20 @@ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, "hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, "http-errors": { "version": "1.6.2", @@ -828,9 +1031,19 @@ } }, "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=" + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } }, "iconv-lite": { "version": "0.4.19", @@ -864,6 +1077,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, "ipaddr.js": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", @@ -874,14 +1092,6 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", @@ -890,39 +1100,75 @@ "number-is-nan": "^1.0.0" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "js-yaml": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", - "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "argparse": "^1.0.2", - "esprima": "^2.6.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } }, "livereload-js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", - "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==" }, "load-json-file": { "version": "1.1.0", @@ -937,9 +1183,9 @@ } }, "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "loud-rejection": { "version": "1.6.0", @@ -1023,15 +1269,30 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, "moment": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.2.tgz", - "integrity": "sha512-Rf6jiHPEfxp9+dlzxPTmRHbvoFXsh2L/U8hOupUMpnuecHQmI6cF6lUbJl3QqKPko1u6ujO+FxtcajLVfLpAtA==" + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "moment-timezone": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", - "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", + "version": "0.5.26", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.26.tgz", + "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", "requires": { "moment": ">= 2.9.0" } @@ -1046,11 +1307,6 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -1060,21 +1316,34 @@ } }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, + "ntlm-client": { + "version": "git+https://git@github.com/gautamsi/node-ntlm-client.git#a386715f0bfc0a8ddcdf7b6330b90d7902807f58", + "from": "git+https://git@github.com/gautamsi/node-ntlm-client.git", + "requires": { + "extend": "^3.0.0", + "request": "^2.66.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1101,11 +1370,6 @@ "wrappy": "1" } }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -1114,14 +1378,6 @@ "error-ex": "^1.2.0" } }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "requires": { - "better-assert": "~1.0.0" - } - }, "parseqs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", @@ -1156,6 +1412,11 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -1171,6 +1432,11 @@ "pinkie-promise": "^2.0.0" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -1199,9 +1465,14 @@ } }, "psl": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.20.tgz", - "integrity": "sha512-JWUi+8DYZnEn9vfV0ppHFLBP0Lk7wxzpobILpBEMDV4nFket4YK+6Rn1Zn6DHmD9PqqsV96AM6l4R/2oirzkgw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.5.1", @@ -1252,11 +1523,6 @@ "strip-indent": "^1.0.1" } }, - "reflect-metadata": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz", - "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=" - }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", @@ -1265,25 +1531,113 @@ "is-finite": "^1.0.0" } }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } + }, "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "requires": { + "path-parse": "^1.0.6" + } }, "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "send": { "version": "0.16.1", @@ -1327,155 +1681,153 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "socket.io": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", - "integrity": "sha1-L37O3DORvy1cc+KR/iM+bjTU3QA=", - "requires": { - "debug": "2.3.3", - "engine.io": "~1.8.4", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.4", - "socket.io-parser": "2.3.1" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", + "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.3.1", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.2.0", + "socket.io-parser": "~3.3.0" }, "dependencies": { "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "0.7.2" + "ms": "^2.1.1" } }, "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - } - } + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" }, "socket.io-client": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", - "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", "requires": { "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "~1.8.4", - "has-binary": "0.1.7", + "debug": "~3.1.0", + "engine.io-client": "~3.3.1", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", + "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", + "socket.io-parser": "~3.3.0", "to-array": "0.1.4" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "ms": "0.7.2" + "ms": "2.0.0" } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" } } }, "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" }, "dependencies": { "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "ms": "0.7.1" + "ms": "2.0.0" } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" } } }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1506,95 +1858,30 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "tiny-lr": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", - "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", "requires": { - "body-parser": "~1.14.0", - "debug": "~2.2.0", + "body": "^5.1.0", + "debug": "^3.1.0", "faye-websocket": "~0.10.0", - "livereload-js": "^2.2.0", - "parseurl": "~1.3.0", - "qs": "~5.1.0" + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" }, "dependencies": { - "body-parser": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", - "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", - "requires": { - "bytes": "2.2.0", - "content-type": "~1.0.1", - "debug": "~2.2.0", - "depd": "~1.1.0", - "http-errors": "~1.3.1", - "iconv-lite": "0.4.13", - "on-finished": "~2.3.0", - "qs": "5.2.0", - "raw-body": "~2.1.5", - "type-is": "~1.6.10" - }, - "dependencies": { - "qs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", - "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=" - } - } - }, - "bytes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", - "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=" - }, "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "requires": { - "ms": "0.7.1" - } - }, - "http-errors": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "inherits": "~2.0.1", - "statuses": "1" + "ms": "^2.1.1" } }, - "iconv-lite": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" - }, "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - }, - "qs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", - "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=" - }, - "raw-body": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", - "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.13", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" - } - } + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -1603,11 +1890,40 @@ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", @@ -1617,33 +1933,50 @@ "mime-types": "~2.1.15" } }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" - }, "underscore.string": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", - "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=" + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vary": { @@ -1651,12 +1984,23 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -1673,47 +2017,33 @@ "isexe": "^2.0.0" } }, - "winjs-node": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/winjs-node/-/winjs-node-0.2.0.tgz", - "integrity": "sha1-L8grT+HwBlhpEUFcI2lALOt+Swg=", - "requires": { - "xhr2": "^0.1.2" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", - "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" + "async-limiter": "~1.0.0" } }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=" - }, - "xhr2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", - "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=" - }, "xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" }, "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=" + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "yeast": { "version": "0.1.2", diff --git a/package.json b/package.json index 37d2433..2245c27 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,16 @@ "start-ui-dev": "cd ui-react && npm start" }, "dependencies": { - "ews-javascript-api": "0.9.4", + "dotenv": "^8.2.0", + "ews-javascript-api": "^0.9.4", + "ews-javascript-api-auth": "^1.2.1", "express": "4.16.2", - "grunt": "1.0.4", + "fs": "0.0.1-security", + "grunt": "^1.0.4", "grunt-contrib-sass": "1.0.0", - "grunt-contrib-watch": "1.1.0", - "socket.io": "2.2.0" + "grunt-contrib-watch": "^1.1.0", + "ip": "^1.1.5", + "socket.io": "^2.2.0" }, "devDependencies": {} } diff --git a/rebuild.bat b/rebuild.bat new file mode 100644 index 0000000..062fd9c --- /dev/null +++ b/rebuild.bat @@ -0,0 +1 @@ +npm run build && npm start \ No newline at end of file diff --git a/static/css/styles.css b/static/css/styles.css index febbce3..9d3626c 100644 --- a/static/css/styles.css +++ b/static/css/styles.css @@ -33,30 +33,41 @@ body { .title-bar { background: #333; padding: 0; - border-bottom: 1px solid #474747; } + border-bottom: 1px solid #474747; + } .title-bar-title { padding-left: 25px; } +#fb__navbar-title{ + font-size: 2.6vw; + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + max-height: 1.3vw; +} .menu-icon { padding-right: 25px; } +.fb__nav-menu-right{ + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; +} .fb__nav-menu i, .fb__nav-menu-right i { font-size: 24px; - padding-right: 8px; } - + padding-right: 8px; + } .fb__nav-menu a { color: #ffffff; } .fb__nav-menu li { text-transform: uppercase; - font-size: 1.3vw; + font-size: 2vw; line-height: 2; color: #ffffff; - padding: 8px 30px; } + padding: 5px 5px; } .fb__nav-menu img { - max-height: 70px; } + max-height: 70px; + min-height: 50px; } .fb__nav-menu .fb__dropdown { + visibility: hidden;/*comment out this line to make the room list filter visible*/ margin-top: -15px; } .fb__nav-menu .fb__dropdown li { line-height: normal; @@ -97,7 +108,7 @@ body { padding: 2px 0; } .tracker-wrap { - padding-top: 15px; } + padding-top: 5px; } .full-width { width: 100%; @@ -107,31 +118,40 @@ body { .meeting-room { border: 1px solid #474747; - border-left: 8px solid #3adb76; + border-left: 8px solid 004D44; width: 100%; background-color: #333; - padding: 10px 50px; } + padding: 1px 20px; + /*padding: 10px 50px;*/ } .meeting-room .meeting-busy { font-size: 24px; - color: #f04124; } + color: #f04124; + max-width:75px !important; + } .meeting-room .meeting-open { font-size: 24px; - color: #3adb76; } + color: rgb(45, 122, 21); + max-width:75px !important; + } .meeting-room .meeting-upcoming { - font-size: 24px; + font-size: 22px; color: #ffae00; } .meeting-room .meeting-error { - font-size: 24px; + font-size: 22px; color: #f3840e; } .meeting-room .meeting-room__name { - font-size: 30px; + font-size: 24px; color: #eceef1; } .meeting-room .meeting-room__name:first-letter { text-transform: uppercase; } .meeting-room .meeting-subject { - font-size: 24px; } + font-size: 22px; + color: darkcyan; } .meeting-room .meeting-time { color: #d4d6d8; } + .meeting-room .meeting-organizer { + color: teal ; + } .meeting-room .meeting-fullscreen a { font-size: 36px; color: #d4d6d8; } @@ -154,30 +174,55 @@ body { height: 100vh; } #single-room__wrap .full-height .left-col { background: black; - padding: 30px; } + padding: 10px; } #single-room__wrap .full-height .left-col #single-room__room-name { - font-size: 3vw; } + font-size: 3vw; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select:none; + user-select:none; + -o-user-select:none; + } #single-room__wrap .full-height .left-col #single-room__room-status { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select:none; + user-select:none; + -o-user-select:none; text-transform: uppercase; - padding: 1% 0; - font-size: 18vw; - font-weight: lighter; } + /*padding: 1% 0;*/ + font-size: 15vw; + line-height:1 !important; + /*font-weight: lighter;*/ } #single-room__wrap .full-height .left-col #single-room__meeting-title { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; font-size: 2.7vw; font-weight: lighter; } #single-room__wrap .full-height .left-col #single-room__meeting-title #single-room__next-up { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; font-weight: bold; } #single-room__wrap .full-height .left-col #single-room__meeting-time { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; font-size: 2vw; font-weight: lighter; } #single-room__wrap .full-height .left-col #single-room__meeting-organizer { - font-size: 1.6vw; - font-weight: lighter; } + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + font-size: 2vw; + font-weight: lighter; + padding-bottom:10px; + } #single-room__wrap .full-height .busy { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; background: #f04124; } #single-room__wrap .full-height .open { - background: #289952; } + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + background: #004D44; } #single-room__wrap .full-height .right-col { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select:none; + user-select:none; + -o-user-select:none; background: white; padding: 30px; color: black; } @@ -214,22 +259,178 @@ body { font-weight: bold; font-size: 3.2vw; padding-bottom: 25px; } +/* --- for raspberry pi screen ---*/ +.up__meeting-time{font-size:14px !important;width:48% !important;padding-right:10px !important; padding-top:5px !important; padding-bottom:5px !important} +.up__meeting-title{font-size:14px !important;} +.medium-12.columns{ + padding-left: 3px !important; + padding-right: 3px !important; +} +.medium-3.columns{ + line-height:1.3; +} +.medium-2.columns{ + padding-left: 3px !important; + padding-right: 10px !important; + max-width:80px !important; + width:60px !important; +} +.medium-6.columns{ + padding-left: 5px !important; + padding-right: 5px !important; + line-height: 1.3; + color: white; + width: 100vw !important; +} +#single-room__clock-wrap{padding-bottom: 15px !important;} +.right-col{padding-top: 10px !important; padding-bottom:10px !important;} +.left-col{padding-top: 10px !important; padding-bottom:10px !important;padding-right:10px !important} +#single-room__meeting-time{font-size:20px !important;} +.small-8 {width:60% !important;} +.small-4 {width:40% !important;} +/* --- for raspberry pi screen ---*/ +#single-room__org-logo__img{ + /*width: 100%;*/ +} +#single-room__room-name{ + /*max-width: 50% !important;*/ +} +#single-room__logo-name-table{ + margin-bottom: 1px !important; +} +#single-room__org-logo-td{ + /*max-width:50% !important;*/ +} +#single-room__org-logo{ + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + max-width:200px !important; +} +i.fi-monitor{ + height:60px !important; + width:60px !important; +} +.chevron{ + /*height:40px !important;*/ + /*width: 180px !important;*/ + border-radius: 5px; + border: 1px solid black; + font-size: 2.5vw !important; + padding: 5px 5px 5px 5px; + text-align: center; + background-color: grey; + color: white; + font-style: normal; + /*line-height:2.5em;*/ + width:90% !important; + list-style-type: none; +} .btn { border-radius: 5px; - border: 1px solic black; - font-size: 22px; + border: 1px solid black; + font-size: 2.5vw !important; padding: 5px 5px; text-align: center; background-color: grey; - display: inline-block; - height: 50px; + display: inline-block !important; + min-height: 50px; width: 90%; + min-width: 90%; + height:100% !important; } .btn:active { background-color: purple; } +.btn:disabled{ + background-color: rgba(169, 169, 169, 0.5); + color: black; + visibility: hidden; +} +/*DropDown Buttons*/ +.dropdown { + position: relative !important; + height: 6.5vw !important; + /*display: inline-block !important;*/ +} + +.dropdown a:hover { + background-color: #ddd !important; +} +.dropdown-content1 { + position: absolute; + /*background-color: #f1f1f1;*/ + min-width: 100%; + left: 0 !important; + /*overflow: auto;*/ + z-index: 1; +} +.dropdown-content1 a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} +.show {display: block;} +.btn-drop { + border-radius: 5px; + border: 1px solid black; + font-size: 2.5vw; + padding: 5px 5px; + text-align: center; + background-color: grey; + display: inline-block !important; + left: 0; + min-height: 40px !important; + height:100% !important; + width: 90%; + min-width:90%; + margin-left: 0 !important; + /*position:relative !important;*/ +} +.btn-drop:active { + background-color: purple; +} +.buttonContainer{ + display: table; +} +.td-btn{ + width:33%; + display: table-cell; +} +ul{ + margin-left:0 !important; +} +/*DropDown Buttons*/ +/*Popup Screen*/ +.popupNotification { + position: fixed; + width: 100%; + height: 100%; + margin: auto; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.85); + text-align: center; + padding-top: 12vw; + padding-bottom: 12vw; + vertical-align: middle; +} + +/*.popupNotification .inner { + position: absolute; + left: 50%; + right: 50%; + top: 50%; + bottom: 50%; + margin: auto; + border-radius:20px; + background:black; + text-align: center; +}*/ +/*Popup Screen*/ @media screen and (min-width: 40em) { .valign-middle { display: table; @@ -240,4 +441,4 @@ body { .valign-middle > .columns, .valign-middle > [class*="column"] + [class*="column"]:last-child { float: none; } } -/*# sourceMappingURL=styles.css.map */ +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/static/css/styles.css.bak b/static/css/styles.css.bak new file mode 100644 index 0000000..021e235 --- /dev/null +++ b/static/css/styles.css.bak @@ -0,0 +1,386 @@ +body, +h1, +h2, +h3, +h4, +h5, +h6, +#app { + font-family: 'Titillium Web', sans-serif; } + +body, +html { + height: 100%; + width: 100%; } + +body { + color: #ffffff; + background-color: #191919; } + +.credentials-error { + text-align: center; } + +#fb__spinner-wrap { + text-align: center; } + #fb__spinner-wrap #fb__spinner { + width: 100px; + height: 100px; + margin: 20px; } + +.row { + max-width: 99%; } + +.title-bar { + background: #333; + padding: 0; + border-bottom: 1px solid #474747; } + +.title-bar-title { + padding-left: 25px; } + +.menu-icon { + padding-right: 25px; } + +.fb__nav-menu i, +.fb__nav-menu-right i { + font-size: 24px; + padding-right: 8px; } + +.fb__nav-menu a { + color: #ffffff; } +.fb__nav-menu li { + text-transform: uppercase; + font-size: 1.3vw; + line-height: 2; + color: #ffffff; + padding: 8px 30px; } +.fb__nav-menu img { + max-height: 70px; } +.fb__nav-menu .fb__dropdown { + margin-top: -15px; } + .fb__nav-menu .fb__dropdown li { + line-height: normal; + padding-top: 0; + padding-bottom: 0; + font-size: 14px; } + .fb__nav-menu .fb__dropdown li .fb__child-dropdown li { + min-width: 250px; + font-size: 12px; + padding: 0.7rem 1rem; + color: #474747 !important; + cursor: pointer; } + .fb__nav-menu .fb__dropdown li .fb__child-dropdown li a { + color: #474747 !important; } + +.fb__nav-menu-right li { + text-transform: uppercase; + padding: 8px 30px; + border-left: 1px solid #474747; + color: #ffffff; + font-size: 28px; + line-height: 2; } +.fb__nav-menu-right li:first-child { + border: 0; } +.fb__nav-menu-right li:first-child:hover { + background: #333; } + +.fb__nav-menu li:hover, +.fb__nav-menu-right li:hover { + background-color: rgba(69, 89, 117, 0.1); } + +.fb__menu-button, +.fb__menu-button a { + color: #ffffff; + font-size: 36px; } + +.row-padder { + padding: 2px 0; } + +.tracker-wrap { + padding-top: 5px; } +.medium-12.columns{ + padding-left: 3px !important; + padding-right: 3px !important; +} +.full-width { + width: 100%; + margin-left: auto; + margin-right: auto; + max-width: initial; } + +.meeting-room { + border: 1px solid #474747; + border-left: 8px solid 004D44; + width: 100%; + background-color: #333; + padding:1px 20px; + /*padding: 10px 50px;*/ } + .meeting-room .meeting-busy { + font-size: 24px; + color: #f04124; + width:100px !important; + } + .meeting-room .meeting-open { + font-size: 24px; + color: rgb(45, 122, 21); + width: 100px !important; + } + .meeting-room .meeting-upcoming { + font-size: 24px; + color: #ffae00; } + .meeting-room .meeting-error { + font-size: 24px; + color: #f3840e; } + .meeting-room .meeting-room__name { + font-size: 26px; + color: #eceef1; } + .meeting-room .meeting-room__name:first-letter { + text-transform: uppercase; } + .meeting-room .meeting-subject { + font-size: 20px; } + .meeting-room .meeting-time { + color: #d4d6d8; } + .meeting-room .meeting-fullscreen a { + font-size: 36px; + color: #d4d6d8; } + .meeting-room .meeting-fullscreen a:hover { + color: white; } + +.meeting-room-busy { + border-left: 8px solid #f04124 !important; } + +.meeting-room-error { + border-left: 8px solid #f3840e !important; } + +#single-room__wrap { + height: 100vh; + width: 100%; } + #single-room__wrap .full-height { + height: 100vh; + width: 100%; } + #single-room__wrap .full-height .columns { + height: 100vh; } + #single-room__wrap .full-height .left-col { + background: black; + padding: 10px; } + #single-room__wrap .full-height .left-col #single-room__room-name { + font-size: 3vw; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select:none; + user-select:none; + -o-user-select:none; + } + #single-room__wrap .full-height .left-col #single-room__room-status { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select:none; + user-select:none; + -o-user-select:none; + text-transform: uppercase; + /*padding: 1% 0;*/ + font-size: 15vw; + line-height:1 !important; + /*font-weight: lighter;*/ } + #single-room__wrap .full-height .left-col #single-room__meeting-title { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + font-size: 2.7vw; + font-weight: lighter; } + #single-room__wrap .full-height .left-col #single-room__meeting-title #single-room__next-up { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + font-weight: bold; } + #single-room__wrap .full-height .left-col #single-room__meeting-time { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + font-size: 2vw; + font-weight: lighter; } + #single-room__wrap .full-height .left-col #single-room__meeting-organizer { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + font-size: 2vw; + font-weight: lighter; } + #single-room__wrap .full-height .busy { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + background: #f04124; } + #single-room__wrap .full-height .open { + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + background: #004D44; } + #single-room__wrap .full-height .right-col { + background: white; + padding: 30px; + color: black; } + #single-room__wrap .full-height .right-col #single-room__clock-wrap { + padding-bottom: 80px; + font-weight: lighter; } + #single-room__wrap .full-height .right-col #single-room__clock-wrap #single-room__clock { + text-align: center; } + #single-room__wrap .full-height .right-col #single-room__clock-wrap #single-room__clock #single-room__time { + font-size: 4vw; } + #single-room__wrap .full-height .right-col #single-room__clock-wrap #single-room__clock #single-room__date { + font-size: 2.7vw; + color: #474747; } + #single-room__wrap .full-height .right-col #upcoming-title { + font-size: 2.2vw; + text-transform: uppercase; + font-weight: lighter; } + #single-room__wrap .full-height .right-col table tr { + border-bottom: 1px solid #eceef1; } + #single-room__wrap .full-height .right-col table tr td { + padding: 10px 8px; } + #single-room__wrap .full-height .right-col table tr td.up__meeting-title { + font-size: 1.1vw; } + #single-room__wrap .full-height .right-col table tr td.up__meeting-time { + font-size: 0.9vw; + color: #474747; } + #single-room__wrap #error-wrap { + width: 600px; + margin: 0 auto; + padding-top: 50px; } + #single-room__wrap #error-wrap #error-text { + font-size: 2.8vw; } + #single-room__wrap #error-wrap #error-text #error-header { + font-weight: bold; + font-size: 3.2vw; + padding-bottom: 25px; } +/* --- for raspberry pi screen ---*/ +.up__meeting-time{font-size:14px !important;width:48% !important;padding-right:10px !important; padding-top:5px !important; padding-bottom:5px !important} +.up__meeting-title{font-size:14px !important;} + +#single-room__clock-wrap{padding-bottom: 15px !important;} +.right-col{padding-top: 10px !important; padding-bottom:10px !important;} +.left-col{padding-top: 10px !important; padding-bottom:10px !important;padding-right:10px !important} +#single-room__meeting-time{font-size:20px !important;} +.small-8 {width:60% !important;} +.small-4 {width:40% !important;} +/* --- for raspberry pi screen ---*/ +#single-room__org-logo__img{ + /*width: 100%;*/ +} +#single-room__room-name{ + /*max-width: 50% !important;*/ +} +#single-room__logo-name-table{ + margin-bottom: 1px !important; +} +#single-room__org-logo-td{ + /*max-width:50% !important;*/ +} +#single-room__org-logo{ + -moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none; + max-width:200px !important; +} +.btn { + border-radius: 5px; + border: 1px solid black; + font-size: 2.5vw !important; + padding: 5px 5px; + text-align: center; + background-color: grey; + display: inline-block !important; + min-height: 50px; + width: 90%; + min-width: 90%; + height:100% !important; +} +.btn:active { + background-color: purple; +} +.btn:disabled{ + background-color: rgba(169, 169, 169, 0.5); + color: black; + visibility: hidden; +} +/*DropDown Buttons*/ +.dropdown { + position: relative !important; + height: 6.5vw !important; + /*display: inline-block !important;*/ +} + +.dropdown a:hover { + background-color: #ddd !important; +} +.dropdown-content1 { + position: absolute; + /*background-color: #f1f1f1;*/ + min-width: 100%; + left: 0 !important; + /*overflow: auto;*/ + z-index: 1; +} +.dropdown-content1 a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +.show {display: block;} +.btn-drop { + border-radius: 5px; + border: 1px solid black; + font-size: 2.5vw; + padding: 5px 5px; + text-align: center; + background-color: grey; + display: inline-block !important; + left: 0; + min-height: 40px !important; + height:100% !important; + width: 90%; + min-width:90%; + margin-left: 0 !important; + /*position:relative !important;*/ +} +.btn-drop:active { + background-color: purple; +} +.buttonContainer{ + display: table; +} +.td-btn{ + width:33%; + display: table-cell; +} +ul{ + margin-left:0 !important; +} +/*DropDown Buttons*/ +/*Popup Screen*/ +.popupNotification { + position: fixed; + width: 100%; + height: 100%; + margin: auto; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.85); + text-align: center; + padding-top: 12vw; + padding-bottom: 12vw; + vertical-align: middle; +} + +/*.popupNotification .inner { + position: absolute; + left: 50%; + right: 50%; + top: 50%; + bottom: 50%; + margin: auto; + border-radius:20px; + background:black; + text-align: center; +}*/ +/*Popup Screen*/ +@media screen and (min-width: 40em) { + .valign-middle { + display: table; + width: 100%; } + .valign-middle > .columns { + display: table-cell; + vertical-align: middle; } + .valign-middle > .columns, .valign-middle > [class*="column"] + [class*="column"]:last-child { + float: none; } } + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/static/img/chevronBack.png b/static/img/chevronBack.png new file mode 100644 index 0000000000000000000000000000000000000000..b3d6fc0937de89b8e1503728f72b6ded84eb0d4b GIT binary patch literal 9247 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 Y=9GnjnfOM6sD}uu^FX@+;u!P)0S8%ZGXMYp literal 0 HcmV?d00001 diff --git a/static/img/chevronBackold.png b/static/img/chevronBackold.png new file mode 100644 index 0000000000000000000000000000000000000000..03ffee3636e7983ce68e9ce2f179a22e5fee887a GIT binary patch literal 5289 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 literal 0 HcmV?d00001 diff --git a/static/js/dropdown-btns.js b/static/js/dropdown-btns.js new file mode 100644 index 0000000..b5d468b --- /dev/null +++ b/static/js/dropdown-btns.js @@ -0,0 +1,46 @@ + +/* When the user clicks on the button, +toggle between hiding and showing the dropdown content */ +function myFunction1() { + document.getElementById("myDropdown1").classList.toggle("show"); +} +function myFunction2() { + document.getElementById("myDropdown2").classList.toggle("show"); +} +function myFunction3() { + document.getElementById("myDropdown3").classList.toggle("show"); +} + +// Close the dropdown if the user clicks outside of it +window.onclick = function(event) { + if (!event.target.matches('.dropbtn1')) { + var dropdowns = document.getElementsByClassName("dropdown-content1"); + var i; + for (i = 0; i < dropdowns.length; i++) { + var openDropdown = dropdowns[i]; + if (openDropdown.classList.contains('show')) { + openDropdown.classList.remove('show'); + } + } + } + if (!event.target.matches('.dropbtn2')) { + var dropdowns = document.getElementsByClassName("dropdown-content2"); + var i; + for (i = 0; i < dropdowns.length; i++) { + var openDropdown = dropdowns[i]; + if (openDropdown.classList.contains('show')) { + openDropdown.classList.remove('show'); + } + } + } + if (!event.target.matches('.dropbtn3')) { + var dropdowns = document.getElementsByClassName("dropdown-content3"); + var i; + for (i = 0; i < dropdowns.length; i++) { + var openDropdown = dropdowns[i]; + if (openDropdown.classList.contains('show')) { + openDropdown.classList.remove('show'); + } + } + } +} diff --git a/ui-react/maincss.css b/ui-react/maincss.css new file mode 100644 index 0000000..bdf48b3 --- /dev/null +++ b/ui-react/maincss.css @@ -0,0 +1,11 @@ +body{margin:0;padding:0}svg{width:100px;height:100px;margin:20px;display:inline-block} +.up__meeting-time{font-size:14px !important;width:48% !important;padding-right:10px !important; padding-top:5px !important; padding-bottom:5px !important} +.up__meeting-title{font-size:14px !important;} + +#single-room__clock-wrap{padding-bottom: 15px !important;} +.right-col{padding-top: 10px !important; padding-bottom:10px !important;} +.left-col{padding-top: 10px !important; padding-bottom:10px !important;padding-right:10px !important} +#single-room__meeting-time{font-size:20px !important;} +.small-8 {width:60% !important;} +.small-4 {width:40% !important;} +/*# sourceMappingURL=main.3aff7c9d.css.map*/ \ No newline at end of file diff --git a/ui-react/npm-shrinkwrap.json b/ui-react/npm-shrinkwrap.json index 9482b23..e31cb60 100644 --- a/ui-react/npm-shrinkwrap.json +++ b/ui-react/npm-shrinkwrap.json @@ -37,6 +37,44 @@ } } }, + "@babel/runtime": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } + } + }, + "@react-bootstrap/react-popper": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@react-bootstrap/react-popper/-/react-popper-1.2.1.tgz", + "integrity": "sha512-4l3q7LcZEhrSkI4d3Ie3g4CdrXqqTexXX4PFT45CB0z5z2JUbaxgRwKNq7r5j2bLdVpZm+uvUGqxJw8d9vgbJQ==", + "requires": { + "babel-runtime": "6.x.x", + "create-react-context": "^0.2.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.5", + "warning": "^3.0.0" + } + }, + "@restart/context": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", + "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==" + }, + "@restart/hooks": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.12.tgz", + "integrity": "sha512-nltMFo5JkYcnntf0Cs3Kq7jskrKeGcftAKOqbEEa74sxlx0bfO3RjBly2aiRb7hnsYJCB8/99l+acQcl2lnq1w==" + }, "@sinonjs/formatio": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", @@ -2089,6 +2127,11 @@ } } }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, "clean-css": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", @@ -2444,6 +2487,15 @@ "sha.js": "^2.4.8" } }, + "create-react-context": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz", + "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==", + "requires": { + "fbjs": "^0.8.0", + "gud": "^1.0.0" + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -2957,6 +3009,14 @@ } } }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -4407,7 +4467,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4425,11 +4486,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4442,15 +4505,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4553,7 +4619,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4563,6 +4630,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4575,17 +4643,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4602,6 +4673,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4674,7 +4746,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4684,6 +4757,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4759,7 +4833,8 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4789,6 +4864,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4806,6 +4882,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4844,11 +4921,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.2", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -5007,6 +5086,11 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, "gzip-size": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", @@ -6759,11 +6843,6 @@ "pretty-format": "^20.0.3" } }, - "jquery": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", - "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" - }, "js-base64": { "version": "2.4.8", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz", @@ -6900,6 +6979,11 @@ "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", "dev": true }, + "keycode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz", + "integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ=" + }, "killable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", @@ -8089,6 +8173,11 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" }, + "popper.js": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", + "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" + }, "portfinder": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", @@ -9330,6 +9419,15 @@ "object-assign": "^4.1.1" } }, + "prop-types-extra": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.0.tgz", + "integrity": "sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg==", + "requires": { + "react-is": "^16.3.2", + "warning": "^3.0.0" + } + }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -9531,6 +9629,76 @@ "prop-types": "^15.6.0" } }, + "react-bootstrap": { + "version": "1.0.0-beta.11", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.0.0-beta.11.tgz", + "integrity": "sha512-D8rAORkNRMf0ECvB8LHCTibeo1JeWptKs4CA5/tn1x5fTu5W4DUD7fQxLm9QdbzOM0qg2FjcfTKeM9gCqhTcoA==", + "requires": { + "@babel/runtime": "^7.4.2", + "@react-bootstrap/react-popper": "1.2.1", + "@restart/context": "^2.1.4", + "@restart/hooks": "^0.3.11", + "classnames": "^2.2.6", + "dom-helpers": "^3.4.0", + "invariant": "^2.2.4", + "keycode": "^2.2.0", + "popper.js": "^1.14.7", + "prop-types": "^15.7.2", + "prop-types-extra": "^1.1.0", + "react-overlays": "^1.2.0", + "react-transition-group": "^4.0.0", + "uncontrollable": "^7.0.0", + "warning": "^4.0.3" + }, + "dependencies": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + } + } + }, + "react-is": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==" + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "react-context-toolbox": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/react-context-toolbox/-/react-context-toolbox-2.0.2.tgz", + "integrity": "sha512-tY4j0imkYC3n5ZlYSgFkaw7fmlCp3IoQQ6DxpqeNHzcD0hf+6V+/HeJxviLUZ1Rv1Yn3N3xyO2EhkkZwHn0m1A==" + }, "react-dev-utils": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-5.0.1.tgz", @@ -9575,8 +9743,86 @@ "react-is": { "version": "16.4.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.1.tgz", - "integrity": "sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ==", - "dev": true + "integrity": "sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ==" + }, + "react-overlays": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-1.2.0.tgz", + "integrity": "sha512-i/FCV8wR6aRaI+Kz/dpJhOdyx+ah2tN1RhT9InPrexyC4uzf3N4bNayFTGtUeQVacj57j1Mqh1CwV60/5153Iw==", + "requires": { + "classnames": "^2.2.6", + "dom-helpers": "^3.4.0", + "prop-types": "^15.6.2", + "prop-types-extra": "^1.1.0", + "react-context-toolbox": "^2.0.2", + "react-popper": "^1.3.2", + "uncontrollable": "^6.0.0", + "warning": "^4.0.2" + }, + "dependencies": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "uncontrollable": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-6.2.3.tgz", + "integrity": "sha512-VgOAoBU2ptCL2bfTG2Mra0I8i1u6Aq84AFonD5tmCAYSfs3hWvr2Rlw0q2ntoxXTHjcQOmZOh3FKaN+UZVyREQ==", + "requires": { + "@babel/runtime": "^7.4.5", + "invariant": "^2.2.4" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, + "react-popper": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.4.tgz", + "integrity": "sha512-9AcQB29V+WrBKk6X7p0eojd1f25/oJajVdMZkywIoAV6Ag7hzE1Mhyeup2Q1QnvFRtGQFQvtqfhlEoDAPfKAVA==", + "requires": { + "@babel/runtime": "^7.1.2", + "create-react-context": "^0.3.0", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "dependencies": { + "create-react-context": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz", + "integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } }, "react-reconciler": { "version": "0.7.0", @@ -9716,6 +9962,27 @@ "react-is": "^16.4.1" } }, + "react-transition-group": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.2.2.tgz", + "integrity": "sha512-uP0tjqewtvjb7kGZFpZYPoD/NlVZmIgts9eTt1w35pAaEApPxQGv94lD3VkqyXf2aMqrSGwhs6EV/DLaoKbLSw==", + "requires": { + "@babel/runtime": "^7.4.5", + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -11263,6 +11530,11 @@ "mime-types": "~2.1.18" } }, + "typed-styles": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.5.tgz", + "integrity": "sha512-ht+rEe5UsdEBAa3gr64+QjUOqjOLJfWLvl5HZR5Ev9uo/OnD3p43wPeFSB1hNFc13GXQF/JU1Bn0YHLUqBRIlw==" + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -11331,6 +11603,25 @@ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" }, + "uncontrollable": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.0.0.tgz", + "integrity": "sha512-HFhKHDACiAsTYoV3el/LP4PqcLzqyWrNRHE6nMdr0h8f7qbvTPXIN2S4q+tdfc64PHEXaSFBs/fKVB2+UwSYOA==", + "requires": { + "@babel/runtime": "^7.4.5", + "invariant": "^2.2.4" + }, + "dependencies": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, "underscore": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", diff --git a/ui-react/package.json b/ui-react/package.json index 476558b..ce58874 100644 --- a/ui-react/package.json +++ b/ui-react/package.json @@ -3,13 +3,14 @@ "version": "0.1.0", "private": true, "dependencies": { - "jquery": "3.4.1", + "jquery": "^3.4.1", "prop-types": "15.6.2", "react": "16.0.0", "react-dom": "16.0.0", "react-router-dom": "4.2.2", "react-scripts": "1.1.4", - "socket.io-client": "2.0.3" + "socket.io-client": "2.0.3", + "dotenv": "^8.2.0" }, "devDependencies": { "babel-core": "6.25.0", @@ -18,7 +19,7 @@ "enzyme": "3.3.0", "enzyme-adapter-react-16": "1.1.1", "enzyme-to-json": "3.3.4", - "jest-extended": "^0.8.1", + "jest-extended": "^0.11.2", "sinon": "6.1.4" }, "scripts": { diff --git a/ui-react/src/components/flightboard/FlightboardRow.js b/ui-react/src/components/flightboard/FlightboardRow.js index b2edb68..e644295 100644 --- a/ui-react/src/components/flightboard/FlightboardRow.js +++ b/ui-react/src/components/flightboard/FlightboardRow.js @@ -66,7 +66,7 @@ const FullScreenIcon = ({ room }) => { return (
{!room.ErrorMessage && - + } @@ -91,10 +91,34 @@ const FlightboardRow = ({ room, filter }) => { return (
+ {!room.ErrorMessage && + +
+
+
+ +
+ +
+
+
+ {room.Name} +
+
+
+ +
+
+
+
+ + } + {room.ErrorMessage &&
-
@@ -115,6 +139,7 @@ const FlightboardRow = ({ room, filter }) => {
+ }
); diff --git a/ui-react/src/components/flightboard/Navbar.js b/ui-react/src/components/flightboard/Navbar.js index 3f57205..03dfeea 100644 --- a/ui-react/src/components/flightboard/Navbar.js +++ b/ui-react/src/components/flightboard/Navbar.js @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import * as config from '../../config/flightboard.config.js'; +import ReactDOM from 'react-dom' ; import Clock from './Clock'; import RoomFilterContainer from './RoomFilterContainer'; @@ -23,9 +24,11 @@ class Navbar extends Component {
  • {config.navbar.title}
    -
      - -
    + {process.env.REACT_APP_ROOMLIST=="true" && +
      + +
    + }
  • diff --git a/ui-react/src/components/single-room/Display.js b/ui-react/src/components/single-room/Display.js index 8b7dadb..afb58b2 100644 --- a/ui-react/src/components/single-room/Display.js +++ b/ui-react/src/components/single-room/Display.js @@ -6,22 +6,34 @@ import RoomStatusBlock from './RoomStatusBlock'; import Sidebar from './Sidebar'; import Socket from '../global/Socket'; import Spinner from '../global/Spinner'; +import Popup from './Popup'; class ErrorHandler extends React.Component { constructor(props) { super(props) - this.state = { errorOccurred: false } + this.state = { errorOccurred: false, currentError: null } } componentDidCatch(error, info) { - this.setState({ errorOccurred: true }) - console.log(error); + this.setState({ errorOccurred: true }); + this.setState({ currentError: error }); + //console.log("Component Caught Error"); + //console.log(error); } + render() { if (this.state.errorOccurred){ - - window.location.reload(); - return

    SOMETHING WENT WRONG - RELOADING

    + //console.log("Window.location.reload"); + //console.log(this.state.currentError); + // if (this.state.currentError == TypeError){ + // console.log("TYPE ERROR") + if ((this.state.currentError.toString().includes("Cannot read property 'length' of undefined")) || (this.state.currentError.toString().includes("Cannot read property 'Subject' of undefined"))) + { + window.location.reload(); + } + // } + //window.location.reload(); + return

    } else{ return this.props.children; @@ -32,7 +44,10 @@ class ErrorHandler extends React.Component { class Display extends Component { constructor(props) { super(props); + this.togglePopup = this.togglePopup.bind(this); this.state = { + showPopup: false, + popupText: "Booking now... please wait", response: false, roomAlias: this.props.alias, rooms: [], @@ -42,10 +57,14 @@ class Display extends Component { timesPresent: false, upcomingAppointments: false, nextUp: '' - } - } + }, + }; + } + togglePopup = (text) =>{ + this.setState({popupText: text}); + this.setState({showPopup: !this.state.showPopup}); + } - getRoomsData = () => { return fetch('/api/rooms') .then((response) => response.json()) @@ -96,6 +115,9 @@ class Display extends Component { nextUp: config.nextUp + ': ' } })); + + + //console.log("ROOM IS FREE"); } else { this.setState(prevState => ({ @@ -104,6 +126,7 @@ class Display extends Component { nextUp: '' } })); + //console.log("ROOM IS BUSY"); } } } @@ -135,7 +158,8 @@ class Display extends Component { { response ?
    - + {this.state.showPopup ? : null} +
    : diff --git a/ui-react/src/components/single-room/Popup.js b/ui-react/src/components/single-room/Popup.js new file mode 100644 index 0000000..4821478 --- /dev/null +++ b/ui-react/src/components/single-room/Popup.js @@ -0,0 +1,15 @@ +import React from 'react'; + +class Popup extends React.Component { + render(){ + return ( +
    +
    +

    {this.props.text}

    +
    +
    + ); + } +} + +export default Popup; \ No newline at end of file diff --git a/ui-react/src/components/single-room/RoomStatusBlock - no back button.js b/ui-react/src/components/single-room/RoomStatusBlock - no back button.js new file mode 100644 index 0000000..6f5b506 --- /dev/null +++ b/ui-react/src/components/single-room/RoomStatusBlock - no back button.js @@ -0,0 +1,551 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import * as moment from 'moment'; +import ReactDOM from 'react-dom' ; + +class FFButton extends React.Component { + constructor(props) { + super(props); + this.state = { + isVisible: false, + count: 0, + previousElement: null + }; + } + componentWillMount() { + document.addEventListener('mousedown', this.handleClickOutside, false); + } + + // Unbind event on unmount to prevent leaks + componentWillUnmount() { + window.removeEventListener('mousedown', this.handleClickOutside, false); + } + + handleClickOutside = (event) => { + /*console.log("reactdom"); + console.log(ReactDOM.findDOMNode(this)); + console.log("PreviousElement"); + console.log(this.state.previousElement); + console.log("EventPath"); + console.log(event.path[0]);*/ + if (this.state.previousElement != null) + { + //console.log(event.target.className); + if (event.target.className.toString().indexOf(this.state.previousElement.toString())){ + //console.log("HIDE"); + this.setState((state) => { + return {isVisible: false} + }); + } + else{ + //console.log("Dont Hide"); + } + } + this.setState((state) => { + return {previousElement: event.target.className} + }); + /*if(!ReactDOM.findDOMNode(this).contains(event.path[0])) + { + }*/ + } + incrementCount(){ + this.setState((state) => { + return {count: state.count + 1} + }); + } + setVisible(){ + this.setState((state) =>{ + return {isVisible: !state.isVisible} + }); + } + _handleClick = (e) => { + e.preventDefault(); + //console.log("State before:" + this.state.isVisible + " | " + this.state.count); + this.incrementCount(); + this.setVisible(); + //console.log("State after:" + this.state.isVisible + " | " + this.state.count); + } + _handleBlur = (e) => { + /*e.preventDefault(); + if (e.currentTarget.contains(e.relatedTarget)) { + console.log("Part of Element"); + this.setState((state) => { + return {isVisible: false} + }); + console.log(e.currentTarget); + } + else{ + console.log("Not Part of Element") + console.log(e.currentTarget); + console.log(e.relatedTarget); + }*/ + } + renderDropdown(){ + const room = this.props.room; + //console.log(this.props.togglePopup); + let currentAppointment; + let currentAppointmentEnd; + let currentAppointmentStart; + let nextAppointment; + let nextAppointmentEnd; + let nextAppointmentStart; + let showPopup = this.props.showPopup; + if (room.Appointments[0]){ + currentAppointment = room.Appointments[0]; + currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + currentAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + } + let contentDropdown; + if (this.props.BtnFunc == "BookAfter"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "ExtendBooking"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "BookNow"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "BookAfterNext"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "EndNow"){ + contentDropdown =
    + + + +
    + } + else { + contentDropdown = ""; + } + //console.log(); + return( +
      + {contentDropdown} +
    + ); + } + render() { + let classString = "btn "; + classString = classString + this.props.BtnFunc; + return ( +
    + +
    + ); + } +} +const Details = ({room, details}) => ( +
    + { details.appointmentExists && +
    + + {details.nextUp} + + + {room.Appointments[0].Subject} + +
    + } +
    +); + +const Time = ({room, details}) => ( +
    + { details.appointmentExists && + new Date(parseInt(room.Appointments[0].Start, 10)).toLocaleTimeString([], {weekday: 'short', hour: '2-digit', minute: '2-digit'}) + + ' - ' + + new Date(parseInt(room.Appointments[0].End, 10)).toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}) + } +
    +); + +const Organizer = ({room, details}) => { + return( +
    + {details.appointmentExists && + room.Appointments[0].Organizer + } +
    + ); +}; +function BookAfter(time, room, startTimeDT, togglePopup){ + //console.log("BOOK AFTER"); + togglePopup("Booking Now... Please Wait!"); + //console.log(startTimeDT); + var startTime = moment(startTimeDT).add(1,'minutes').toISOString(); + var endTime = moment(startTime).add(time,'minutes').toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var bookingType = "BookAfter"; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + //var fetchstring = "../api/roombooking?roomEmail=" + roomEmail + "&roomName="+roomName+"&startTime="+startTime+"&endTime="+endTime+"&bookingType="+bookingType; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //fetch(fetchstring); + //console.log("SENT - BOOKED"); + setTimeout(reloadPage, 5000); +} +function BookNow(time, room, togglePopup) { + //console.log("BOOK NOW"); + //console.log(togglePopup); + togglePopup("Booking Now... Please Wait!"); + var startTimeDT = new Date(); + var endTimeDT = new Date(startTimeDT.getTime() + time*60000); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var bookingType = "BookNow"; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //console.log("SENT - BOOKED"); + setTimeout(reloadPage, 5000); +} +function ExtendBooking(time, room, startTimeDT, endTimeDT, togglePopup) +{ + //console.log("EXTEND BOOKING"); + togglePopup("Extending Now... Please Wait!"); + var bookingType = "Extend"; + endTimeDT = new Date(endTimeDT.getTime() + time*60000); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //console.log("SENT - EXTENDED"); + setTimeout(reloadPage, 5000); +} +function EndNow(room, startTimeDT, endTimeDT, togglePopup) +{ + //console.log("End Current"); + togglePopup("Terminating Booking... Please Wait"); + var bookingType = "EndNow"; + endTimeDT = new Date(); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //console.log("SENT - ENDNOW"); + setTimeout(reloadPage, 5000); +} +function reloadPage(){ + window.location.reload(); +} +function ButtonControl(props){ + let room = props.room; + let showPopup = props.showPopup; + let details = props.details; + var moment = require('moment'); + if (room.Busy){ + let currentAppointment = room.Appointments[0]; + let currentAppointmentEnd = new Date(parseInt(currentAppointment.End, 10)); + let currentAppointmentStart = new Date(parseInt(currentAppointment.Start, 10)); + if (room.Appointments.length > 1){ + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + currentAppointmentEnd = moment(currentAppointmentEnd); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + if (timeDifference > 120){ + let DropdownContent = [15, 30, 60, 120] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 90){ + let DropdownContent = [15, 30, 60, 90] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 60){ + let DropdownContent = [15, 30, 45, 60] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 45){ + let DropdownContent = [15, 30, 45] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 30){ + let DropdownContent = [15, 30] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 15){ + let DropdownContent = [15, timeDifference] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference >= 5){ + let DropdownContent = [timeDifference] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else { + let DropdownContent = [0] + return (

    Room is unavailable

    + +
    ); + } + } + else + { + let DropdownContent = [15, 30, 60, 120] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + } + else { + if (room.Appointments.length > 0){ + let now = new Date(); + //console.log("DATETIMENOW = " + now); + let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + now = moment(now); + //console.log("DATETIMENOW2 = " + now); + nextAppointmentStart = moment(nextAppointmentStart); + + let timeDifference = nextAppointmentStart.diff(now, 'minutes') + if (timeDifference > 120){ + let DropdownContent = [15, 30, 60, 120]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 90){ + let DropdownContent = [15, 30, 60, 90]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 60){ + let DropdownContent = [15, 30, 45, 60]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 45){ + let DropdownContent = [15, 30, 45]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 30){ + let DropdownContent = [15, 30]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 15){ + let DropdownContent = [15, timeDifference]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference >= 5){ + let DropdownContent = [timeDifference]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else { + if (room.Appointments[1]){ + let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + now = moment(now); + //console.log("Book After Between Appointments"); + currentAppointmentEnd = moment(currentAppointmentEnd); + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + nextAppointmentStart = moment(nextAppointmentStart); + let DropdownContent; + + //console.log(currentAppointmentEnd); + //console.log(nextAppointmentStart - currentAppointmentEnd); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + //console.log("timeDiff:" + timeDifference); + if (timeDifference > 120){ + DropdownContent = [15, 30, 60, 120] + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 90) + { + DropdownContent = [15, 30, 60, 90]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 60){ + DropdownContent = [15, 30, 45, 60]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 30) + { + DropdownContent = [15, 30, timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 15) + { + DropdownContent = [15, timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 5) + { + DropdownContent = [timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + + else{ + return (

    Room is unavailable

    ); + } + } + else{ + let DropdownContent = [15, 30, 60, 120] + return ( +

    Book after next meeting Now:

    + +
    + ); + } + } + } + else + { + let DropdownContent = [15, 30, 60, 120]; + //console.log(props.togglePopup); + return ( +

    Book This Room Now:

    + +
    + ); + } + } +} +const RoomStatusBlock = ({ config, details, room, togglePopup, showPopup }) => ( +
    + + + +
    + + +
    {room.Name}
    +
    +
    {room.Busy ? config.statusBusy : config.statusAvailable}
    + +
    +
    +); + +RoomStatusBlock.propTypes = { + room: PropTypes.object.isRequired, + details: PropTypes.object, + config: PropTypes.object, + togglePopup: PropTypes.func, + showPopup: PropTypes.bool +} + +export default RoomStatusBlock; + diff --git a/ui-react/src/components/single-room/RoomStatusBlock.js b/ui-react/src/components/single-room/RoomStatusBlock.js index eb1a78a..fea08ca 100644 --- a/ui-react/src/components/single-room/RoomStatusBlock.js +++ b/ui-react/src/components/single-room/RoomStatusBlock.js @@ -1,11 +1,124 @@ import React from 'react'; import PropTypes from 'prop-types'; -//import {ExchangeService, ExchangeVersion} from "ews-javascript-api"; -//var ews = require('ews-javascript-api'); +import { Link } from 'react-router-dom'; +import * as moment from 'moment'; +import ReactDOM from 'react-dom' ; +class FFButton extends React.Component { + constructor(props) { + super(props); + this.state = { + isVisible: false, + count: 0, + previousElement: null + }; + } + componentWillMount() { + document.addEventListener('mousedown', this.handleClickOutside, false); + } -const Details = ({room, details}) => ( + // Unbind event on unmount to prevent leaks + componentWillUnmount() { + window.removeEventListener('mousedown', this.handleClickOutside, false); + } + + handleClickOutside = (event) => { + if (this.state.previousElement != null) + { + if (event.target.className.toString().indexOf(this.state.previousElement.toString())){ + this.setState((state) => { + return {isVisible: false} + }); + } + else{ + } + } + this.setState((state) => { + return {previousElement: event.target.className} + }); + } + incrementCount(){ + this.setState((state) => { + return {count: state.count + 1} + }); + } + setVisible(){ + this.setState((state) =>{ + return {isVisible: !state.isVisible} + }); + } + _handleClick = (e) => { + e.preventDefault(); + this.incrementCount(); + this.setVisible(); + } + renderDropdown(){ + const room = this.props.room; + let currentAppointment; + let currentAppointmentEnd; + let currentAppointmentStart; + let nextAppointment; + let nextAppointmentEnd; + let nextAppointmentStart; + let showPopup = this.props.showPopup; + if (room.Appointments[0]){ + currentAppointment = room.Appointments[0]; + currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + currentAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + } + let contentDropdown; + if (this.props.BtnFunc == "BookAfter"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "ExtendBooking"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "BookNow"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "BookAfterNext"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "EndNow"){ + contentDropdown =
    + + + +
    + } + else { + contentDropdown = ""; + } + return( +
      + {contentDropdown} +
    + ); + } + render() { + let classString = "btn "; + classString = classString + this.props.BtnFunc; + return ( +
    + +
    + ); + } +} +const Details = ({room, details}) => (
    { details.appointmentExists &&
    @@ -39,25 +152,52 @@ const Organizer = ({room, details}) => {
    ); }; -function BookAfter(time, room, startTime){ - console.log("BOOK AFTER"); - var endTime = new Date(startTime.getTime() + time*60000); +function BookAfter(time, room, startTimeDT, togglePopup) { + togglePopup("Booking Now... Please Wait!"); + var startTime = moment(startTimeDT).add(1,'minutes').toISOString(); + var endTime = moment(startTime).add(time,'minutes').toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var bookingType = "BookAfter"; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + setTimeout(reloadPage, 5000); +} +function BookNow(time, room, togglePopup) { + togglePopup("Booking Now... Please Wait!"); + var startTimeDT = new Date(); + var endTimeDT = new Date(startTimeDT.getTime() + time*60000); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); var roomEmail = room.Email; var roomName = room.Name; + var bookingType = "BookNow"; var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; - fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}`); - console.log("BOOKED"); + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); setTimeout(reloadPage, 5000); } -function BookNow(time, room) { - console.log("BOOK NOW"); - var startTime = new Date(); - var endTime = new Date(startTime.getTime() + time*60000); +function ExtendBooking(time, room, startTimeDT, endTimeDT, togglePopup) { + togglePopup("Extending Now... Please Wait!"); + var bookingType = "Extend"; + endTimeDT = new Date(endTimeDT.getTime() + time*60000); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); var roomEmail = room.Email; var roomName = room.Name; var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; - fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}`); - console.log("BOOKED"); + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + setTimeout(reloadPage, 5000); +} +function EndNow(room, startTimeDT, endTimeDT, togglePopup) { + togglePopup("Terminating Booking... Please Wait"); + var bookingType = "EndNow"; + endTimeDT = new Date(); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); setTimeout(reloadPage, 5000); } function reloadPage(){ @@ -65,172 +205,268 @@ function reloadPage(){ } function ButtonControl(props){ let room = props.room; + let showPopup = props.showPopup; let details = props.details; var moment = require('moment'); - //try{ - if (room.Busy){ - let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); - if (room.Appointments.length > 1){ - let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); - - currentAppointmentEnd = moment(currentAppointmentEnd); - nextAppointmentStart = moment(nextAppointmentStart); - let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') - if (timeDifference > 120){ - return (

    Extend/Book after this meeting Now:

    - - - - - -
    - ); - } - else if (timeDifference > 60){ - return (

    Extend/Book after this meeting Now:

    - - - - -
    - ); - } - else if (timeDifference > 45){ - return (

    Extend/Book after this meeting Now:

    - - - - -
    - ); - } - else if (timeDifference > 30){ - return (

    Extend/Book after this meeting Now:

    - - - -
    - ); - } - else if (timeDifference > 15){ - return (

    Extend/Book after this meeting Now:

    - - - -
    - ); - } - else if (timeDifference >= 5){ - return (

    Extend/Book after this meeting Now:

    - - -
    - ); - } - else { - return (

    Room is unavailable

    ); - } + if (room.Busy){ + let currentAppointment = room.Appointments[0]; + let currentAppointmentEnd = new Date(parseInt(currentAppointment.End, 10)); + let currentAppointmentStart = new Date(parseInt(currentAppointment.Start, 10)); + if (room.Appointments.length > 1){ + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + currentAppointmentEnd = moment(currentAppointmentEnd); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + if (timeDifference > 120){ + let DropdownContent = [15, 30, 60, 120] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 90){ + let DropdownContent = [15, 30, 60, 90] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); } - else - { - return (

    Extend/Book after this meeting Now:

    - - - - - -
    + else if (timeDifference > 60){ + let DropdownContent = [15, 30, 45, 60] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    ); } + else if (timeDifference > 45){ + let DropdownContent = [15, 30, 45] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 30){ + let DropdownContent = [15, 30] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 15){ + let DropdownContent = [15, timeDifference] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference >= 5){ + let DropdownContent = [timeDifference] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else { + let DropdownContent = [0] + return (

    Room is unavailable

    + +
    ); + } } - else { - if (room.Appointments.length > 0){ - let now = new Date(); - console.log("DATETIMENOW = " + now); - let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); - now = moment(now); - console.log("DATETIMENOW2 = " + now); - nextAppointmentStart = moment(nextAppointmentStart); - - let timeDifference = nextAppointmentStart.diff(now, 'minutes') - if (timeDifference > 120){ - return (

    Book This Room Now:

    - - - - - -
    - ); - } - else if (timeDifference > 60){ - return (

    Book This Room Now:

    - - - - -
    - ); - } - else if (timeDifference > 45){ - return (

    Book This Room Now:

    - - - - -
    - ); - } - else if (timeDifference > 30){ - return (

    Book This Room Now:

    - - - -
    - ); - } - else if (timeDifference > 15){ - return (

    Book This Room Now:

    - - - -
    - ); + else + { + let DropdownContent = [15, 30, 60, 120] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + } + else { + if (room.Appointments.length > 0){ + let now = new Date(); + let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + now = moment(now); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(now, 'minutes') + if (timeDifference > 120){ + let DropdownContent = [15, 30, 60, 120]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 90){ + let DropdownContent = [15, 30, 60, 90]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 60){ + let DropdownContent = [15, 30, 45, 60]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 45){ + let DropdownContent = [15, 30, 45]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 30){ + let DropdownContent = [15, 30]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 15){ + let DropdownContent = [15, timeDifference]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference >= 5){ + let DropdownContent = [timeDifference]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else { + if (room.Appointments[1]){ + let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + now = moment(now); + currentAppointmentEnd = moment(currentAppointmentEnd); + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + nextAppointmentStart = moment(nextAppointmentStart); + let DropdownContent; + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + if (timeDifference > 120){ + DropdownContent = [15, 30, 60, 120] + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 90){ + DropdownContent = [15, 30, 60, 90]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 60){ + DropdownContent = [15, 30, 45, 60]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 30){ + DropdownContent = [15, 30, timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 15){ + DropdownContent = [15, timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 5) { + DropdownContent = [timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else{ + return (

    Room is unavailable

    ); + } } - else if (timeDifference >= 5){ - return (

    Book This Room Now:

    - - -
    + else{ + let DropdownContent = [15, 30, 60, 120] + return ( +

    Book after next meeting Now:

    + +
    ); } - else { - return (

    Room is unavailable before next booking.

    ); - } - } - else - { - return (

    Book This Room Now:

    - - - - - -
    - ); } } - //} - //catch (TypeError){ - // setTimeout(reloadPage, 2000); - //} + else + { + let DropdownContent = [15, 30, 60, 120]; + return ( +

    Book This Room Now:

    + +
    + ); + } + } } -const RoomStatusBlock = ({ config, details, room }) => ( +const RoomStatusBlock = ({ config, details, room, togglePopup, showPopup }) => (
    @@ -238,11 +474,15 @@ const RoomStatusBlock = ({ config, details, room }) => (
    {room.Busy ? config.statusBusy : config.statusAvailable}
    - - +
    ); @@ -250,7 +490,9 @@ const RoomStatusBlock = ({ config, details, room }) => ( RoomStatusBlock.propTypes = { room: PropTypes.object.isRequired, details: PropTypes.object, - config: PropTypes.object + config: PropTypes.object, + togglePopup: PropTypes.func, + showPopup: PropTypes.bool } export default RoomStatusBlock; diff --git a/ui-react/src/components/single-room/RoomStatusBlock.js.bak b/ui-react/src/components/single-room/RoomStatusBlock.js.bak new file mode 100644 index 0000000..5eab998 --- /dev/null +++ b/ui-react/src/components/single-room/RoomStatusBlock.js.bak @@ -0,0 +1,543 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import * as moment from 'moment'; +import ReactDOM from 'react-dom' ; + +class FFButton extends React.Component { + constructor(props) { + super(props); + this.state = { + isVisible: false, + count: 0, + previousElement: null + }; + } + componentWillMount() { + document.addEventListener('mousedown', this.handleClickOutside, false); + } + + // Unbind event on unmount to prevent leaks + componentWillUnmount() { + window.removeEventListener('mousedown', this.handleClickOutside, false); + } + + handleClickOutside = (event) => { + /*console.log("reactdom"); + console.log(ReactDOM.findDOMNode(this)); + console.log("PreviousElement"); + console.log(this.state.previousElement); + console.log("EventPath"); + console.log(event.path[0]);*/ + if (this.state.previousElement != null) + { + //console.log(event.target.className); + if (event.target.className.toString().indexOf(this.state.previousElement.toString())){ + //console.log("HIDE"); + this.setState((state) => { + return {isVisible: false} + }); + } + else{ + //console.log("Dont Hide"); + } + } + this.setState((state) => { + return {previousElement: event.target.className} + }); + /*if(!ReactDOM.findDOMNode(this).contains(event.path[0])) + { + }*/ + } + incrementCount(){ + this.setState((state) => { + return {count: state.count + 1} + }); + } + setVisible(){ + this.setState((state) =>{ + return {isVisible: !state.isVisible} + }); + } + _handleClick = (e) => { + e.preventDefault(); + //console.log("State before:" + this.state.isVisible + " | " + this.state.count); + this.incrementCount(); + this.setVisible(); + //console.log("State after:" + this.state.isVisible + " | " + this.state.count); + } + _handleBlur = (e) => { + /*e.preventDefault(); + if (e.currentTarget.contains(e.relatedTarget)) { + console.log("Part of Element"); + this.setState((state) => { + return {isVisible: false} + }); + console.log(e.currentTarget); + } + else{ + console.log("Not Part of Element") + console.log(e.currentTarget); + console.log(e.relatedTarget); + }*/ + } + renderDropdown(){ + const room = this.props.room; + //console.log(this.props.togglePopup); + let currentAppointment; + let currentAppointmentEnd; + let currentAppointmentStart; + let nextAppointment; + let nextAppointmentEnd; + let nextAppointmentStart; + let showPopup = this.props.showPopup; + if (room.Appointments[0]){ + currentAppointment = room.Appointments[0]; + currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + currentAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + } + let contentDropdown; + if (this.props.BtnFunc == "BookAfter"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "ExtendBooking"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "BookNow"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else if (this.props.BtnFunc == "BookAfterNext"){ + contentDropdown = this.props.DropdownContent.map((number) => + + ); + } + else { + contentDropdown = ""; + } + //console.log(); + return( +
      + {contentDropdown} +
    + ); + } + render() { + let classString = "btn "; + classString = classString + this.props.BtnFunc; + return ( +
    + +
    + ); + } +} +const Details = ({room, details}) => ( +
    + { details.appointmentExists && +
    + + {details.nextUp} + + + {room.Appointments[0].Subject} + +
    + } +
    +); + +const Time = ({room, details}) => ( +
    + { details.appointmentExists && + new Date(parseInt(room.Appointments[0].Start, 10)).toLocaleTimeString([], {weekday: 'short', hour: '2-digit', minute: '2-digit'}) + + ' - ' + + new Date(parseInt(room.Appointments[0].End, 10)).toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}) + } +
    +); + +const Organizer = ({room, details}) => { + return( +
    + {details.appointmentExists && + room.Appointments[0].Organizer + } +
    + ); +}; +function BookAfter(time, room, startTimeDT, togglePopup){ + //console.log("BOOK AFTER"); + togglePopup("Booking Now... Please Wait!"); + //console.log(startTimeDT); + var startTime = moment(startTimeDT).add(1,'minutes').toISOString(); + var endTime = moment(startTime).add(time,'minutes').toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var bookingType = "BookAfter"; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + //var fetchstring = "../api/roombooking?roomEmail=" + roomEmail + "&roomName="+roomName+"&startTime="+startTime+"&endTime="+endTime+"&bookingType="+bookingType; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //fetch(fetchstring); + //console.log("SENT - BOOKED"); + setTimeout(reloadPage, 5000); +} +function BookNow(time, room, togglePopup) { + //console.log("BOOK NOW"); + //console.log(togglePopup); + togglePopup("Booking Now... Please Wait!"); + var startTimeDT = new Date(); + var endTimeDT = new Date(startTimeDT.getTime() + time*60000); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var bookingType = "BookNow"; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //console.log("SENT - BOOKED"); + setTimeout(reloadPage, 5000); +} +function ExtendBooking(time, room, startTimeDT, endTimeDT, togglePopup) +{ + //console.log("EXTEND BOOKING"); + togglePopup("Extending Now... Please Wait!"); + var bookingType = "Extend"; + endTimeDT = new Date(endTimeDT.getTime() + time*60000); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //console.log("SENT - EXTENDED"); + setTimeout(reloadPage, 5000); +} +function EndNow(room, startTimeDT, endTimeDT, togglePopup) +{ + //console.log("End Current"); + togglePopup("Terminating Booking... Please Wait"); + var bookingType = "EndNow"; + endTimeDT = new Date(); + var startTime = moment(startTimeDT).toISOString(); + var endTime = moment(endTimeDT).toISOString(); + var roomEmail = room.Email; + var roomName = room.Name; + var data = {roomEmail:roomEmail, roomName:roomName, startTime:startTime, endTime:endTime}; + fetch(`../api/roombooking?roomEmail=${encodeURIComponent(data.roomEmail)}&roomName=${encodeURIComponent(data.roomName)}&startTime=${encodeURIComponent(data.startTime)}&endTime=${encodeURIComponent(data.endTime)}&bookingType=${encodeURIComponent(bookingType)}`); + //console.log("SENT - ENDNOW"); + setTimeout(reloadPage, 5000); +} +function reloadPage(){ + window.location.reload(); +} +function ButtonControl(props){ + let room = props.room; + let showPopup = props.showPopup; + let details = props.details; + var moment = require('moment'); + if (room.Busy){ + let currentAppointment = room.Appointments[0]; + let currentAppointmentEnd = new Date(parseInt(currentAppointment.End, 10)); + let currentAppointmentStart = new Date(parseInt(currentAppointment.Start, 10)); + if (room.Appointments.length > 1){ + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + currentAppointmentEnd = moment(currentAppointmentEnd); + nextAppointmentStart = moment(nextAppointmentStart); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + if (timeDifference > 120){ + let DropdownContent = [15, 30, 60, 120] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 90){ + let DropdownContent = [15, 30, 60, 90] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 60){ + let DropdownContent = [15, 30, 45, 60] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 45){ + let DropdownContent = [15, 30, 45] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 30){ + let DropdownContent = [15, 30] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference > 15){ + let DropdownContent = [15, timeDifference] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else if (timeDifference >= 5){ + let DropdownContent = [timeDifference] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + else { + return (

    Room is unavailable

    + +
    ); + } + } + else + { + let DropdownContent = [15, 30, 60, 120] + return ( +

    Extend/Book after this meeting Now:

    + + + + +
    + ); + } + } + else { + if (room.Appointments.length > 0){ + let now = new Date(); + //console.log("DATETIMENOW = " + now); + let nextAppointmentStart = new Date(parseInt(room.Appointments[0].Start, 10)); + now = moment(now); + //console.log("DATETIMENOW2 = " + now); + nextAppointmentStart = moment(nextAppointmentStart); + + let timeDifference = nextAppointmentStart.diff(now, 'minutes') + if (timeDifference > 120){ + let DropdownContent = [15, 30, 45, 60, 90, 120]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 90){ + let DropdownContent = [15, 30, 45, 60, 90]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 60){ + let DropdownContent = [15, 30, 45, 60]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 45){ + let DropdownContent = [15, 30, 45]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 30){ + let DropdownContent = [15, 30]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference > 15){ + let DropdownContent = [15, timeDifference]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else if (timeDifference >= 5){ + let DropdownContent = [timeDifference]; + return ( +

    Book This Room Now:

    + +
    + ); + } + else { + if (room.Appointments[1]){ + let currentAppointmentEnd = new Date(parseInt(room.Appointments[0].End, 10)); + now = moment(now); + //console.log("Book After Between Appointments"); + currentAppointmentEnd = moment(currentAppointmentEnd); + let nextAppointmentStart = new Date(parseInt(room.Appointments[1].Start, 10)); + nextAppointmentStart = moment(nextAppointmentStart); + let DropdownContent; + + //console.log(currentAppointmentEnd); + //console.log(nextAppointmentStart - currentAppointmentEnd); + let timeDifference = nextAppointmentStart.diff(currentAppointmentEnd, 'minutes') + //console.log("timeDiff:" + timeDifference); + if (timeDifference > 120){ + DropdownContent = [15, 30, 60, 120] + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 90) + { + DropdownContent = [15, 30, 60, 90]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 60){ + DropdownContent = [15, 30, 45, 60]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 30) + { + DropdownContent = [15, 30, timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 15) + { + DropdownContent = [15, timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + else if (timeDifference > 5) + { + DropdownContent = [timeDifference]; + return ( +

    Book after next meeting Now:

    + +
    + ); + } + + else{ + return (

    Room is unavailable

    ); + } + } + else{ + let DropdownContent = [15, 30, 60, 120] + return ( +

    Book after next meeting Now:

    + +
    + ); + } + } + } + else + { + let DropdownContent = [15, 30, 60, 120]; + //console.log(props.togglePopup); + return ( +

    Book This Room Now:

    + +
    + ); + } + } +} +const RoomStatusBlock = ({ config, details, room, togglePopup, showPopup }) => ( +
    + + + +
    + + +
    {room.Name}
    +
    +
    {room.Busy ? config.statusBusy : config.statusAvailable}
    + +
    +
    +); + +RoomStatusBlock.propTypes = { + room: PropTypes.object.isRequired, + details: PropTypes.object, + config: PropTypes.object, + togglePopup: PropTypes.func, + showPopup: PropTypes.bool +} + +export default RoomStatusBlock; + diff --git a/ui-react/src/components/single-room/Sidebar - Copy.js b/ui-react/src/components/single-room/Sidebar - Copy.js new file mode 100644 index 0000000..b571f04 --- /dev/null +++ b/ui-react/src/components/single-room/Sidebar - Copy.js @@ -0,0 +1,45 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import Clock from './Clock'; + +const Sidebar = ({ config, details, room }) => ( +
    +
    + +
    +
    + {config.upcomingTitle} +
    + + { details.upcomingAppointments ? + room.Appointments.slice(1).map((item, key) => { + return ( + + + + + ); + }) + : + '' + } +
    {item.Subject} + { item.Start && item.End ? + new Date(parseInt(item.Start, 10)).toLocaleTimeString([], {weekday: 'short', hour: '2-digit', minute: '2-digit'}) + + ' - ' + + new Date(parseInt(item.End, 10)).toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}) + : + '' + } +
    +
    +); + +Sidebar.propTypes = { + room: PropTypes.object, + details: PropTypes.object, + config: PropTypes.object +} + +export default Sidebar; diff --git a/ui-react/src/components/single-room/Sidebar.js b/ui-react/src/components/single-room/Sidebar.js index b571f04..525d7a3 100644 --- a/ui-react/src/components/single-room/Sidebar.js +++ b/ui-react/src/components/single-room/Sidebar.js @@ -16,8 +16,8 @@ const Sidebar = ({ config, details, room }) => ( room.Appointments.slice(1).map((item, key) => { return ( - {item.Subject} - + {item.Subject} + { item.Start && item.End ? new Date(parseInt(item.Start, 10)).toLocaleTimeString([], {weekday: 'short', hour: '2-digit', minute: '2-digit'}) + ' - ' + diff --git a/ui-react/src/config/flightboard.config.js b/ui-react/src/config/flightboard.config.js index aff8e55..1b76a60 100644 --- a/ui-react/src/config/flightboard.config.js +++ b/ui-react/src/config/flightboard.config.js @@ -7,7 +7,7 @@ module.exports = { }, 'navbar' : { - 'title' : 'Conference Room Availability', + 'title' : 'Conference Room Flightboard', }, 'roomFilter' : { From d55c02039e9fabcc94a3776c5714d818da48f70e Mon Sep 17 00:00:00 2001 From: Collie147 Date: Wed, 20 Nov 2019 11:25:08 +0000 Subject: [PATCH 17/25] Update README.md --- README.md | 40 ++++++---------------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index f516fa8..1228622 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ -# MeetEasier +# MeetEasier - Custom Fork for Raspberry Pi Official Touchscreen -Because why pay money for something you can do yourself? -## Description +## Description +This is a customised fork of "MeetEasier" https://github.com/danxfisher/MeetEasier. MeetEasier is a web application that visualizes meeting room availability. It works using Exchange Web Services (EWS) with Exchange room lists in Office 365. +This particular fork adds additional functionality (e.g. buttons for making bookings, extending bookings and ending meetings) and hides some options depending on environment variables (set in the .env files) + ![Mockup 1](mockups/mockup-1.jpg) *** @@ -18,37 +20,7 @@ In the event of wanting to commercially distribute a closed source modification *** -## Updates - -* v0.3.4 - * [#34](https://github.com/danxfisher/MeetEasier/pull/34) - bug fix for 'Next up:' displaying incorrectly -* v0.3.3 - * [#18](https://github.com/danxfisher/MeetEasier/pull/15) - use localized sort for rooms -* v0.3.2 - * Added additional error handling for incorrect credentials. The error will now be shown on the front end. - * Updated the socket component to stop most ERR_CONNECTION_REFSUED errors from happening. -* v0.3.1 - * Removed skipped rooms/room blacklist filtering from front end and added to back end. -* v0.3 - * Cleaned up unnecessarily nested component folder structure - * [#8](https://github.com/danxfisher/MeetEasier/pull/8) - add script-shortcuts to `package.json` in root - * [#9](https://github.com/danxfisher/MeetEasier/pull/9) - support environment-variables for authentication and port configuration - * [#10](https://github.com/danxfisher/MeetEasier/pull/10) - create shrinkwraps for npm-dependencies - * [#11](https://github.com/danxfisher/MeetEasier/pull/11) - add `.editorconfig` - * [#12](https://github.com/danxfisher/MeetEasier/pull/12) - pass error (while fetching appointments), to frontend - * [#13](https://github.com/danxfisher/MeetEasier/pull/13) - set engine-requirements - * [#14](https://github.com/danxfisher/MeetEasier/pull/14) - add heartbeat-endpoint, to check if server is alive (for monitoring) - * [#15](https://github.com/danxfisher/MeetEasier/pull/15) - add '.nvmrc' -* v0.2 - * Changed domain to accept more than just ".com" extension - * Changed `ui-react/config/flightboard.config.js` to handle all text so that the application can be multilingual - * Added `ui-react/config/singleRoom.config.js` to do the same for the `single-room` component - * Added `console.log` to `server.js` to know when the server is running correctly - * Updated styles slightly -* v0.1 - * Initial release -*** ## Assumptions @@ -144,7 +116,7 @@ There are three main directories in the `ui-react/src/` folder: ### Simple -* In `/config/auth.js`, enter your credentials and domain: +* In `/config/auth/auth.js`, enter your credentials and domain: ```javascript module.exports = { From 6980a68e53892c2a80fa954b9c4af6afac0af93f Mon Sep 17 00:00:00 2001 From: Collie147 Date: Wed, 20 Nov 2019 11:40:20 +0000 Subject: [PATCH 18/25] Delete chevronBackold.png --- static/img/chevronBackold.png | Bin 5289 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 static/img/chevronBackold.png diff --git a/static/img/chevronBackold.png b/static/img/chevronBackold.png deleted file mode 100644 index 03ffee3636e7983ce68e9ce2f179a22e5fee887a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5289 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 From e926918b446f20a53f0a0d63ef16e2ecb07107c4 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Wed, 20 Nov 2019 11:40:33 +0000 Subject: [PATCH 19/25] Delete chevronBack.png --- static/img/chevronBack.png | Bin 9247 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 static/img/chevronBack.png diff --git a/static/img/chevronBack.png b/static/img/chevronBack.png deleted file mode 100644 index b3d6fc0937de89b8e1503728f72b6ded84eb0d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9247 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 Y=9GnjnfOM6sD}uu^FX@+;u!P)0S8%ZGXMYp From ef344034fba0ee1b91ebac4d8f896c337422e709 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Wed, 20 Nov 2019 11:40:51 +0000 Subject: [PATCH 20/25] updated logo --- static/img/logo.png | Bin 21484 -> 15959 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/img/logo.png b/static/img/logo.png index 3a265a29a026da109a0b2371461e9aaf7e58afa6..805420d3f137cdbbfc0d31b913e9dc7c6d65c74d 100644 GIT binary patch literal 15959 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 From 9f9574bc1dd709ed7a78c6da38bca2fa06a6711f Mon Sep 17 00:00:00 2001 From: Collie147 Date: Thu, 21 Nov 2019 18:44:45 +0000 Subject: [PATCH 21/25] Additional screenshots --- mockups/mockup-1.png | Bin 0 -> 64045 bytes mockups/mockup-2.png | Bin 0 -> 74469 bytes mockups/mockup-3.png | Bin 0 -> 92156 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mockups/mockup-1.png create mode 100644 mockups/mockup-2.png create mode 100644 mockups/mockup-3.png diff --git a/mockups/mockup-1.png b/mockups/mockup-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2383f556a9543dbeaad498140b9da3f08fcecefe GIT binary patch literal 64045 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%0AwnrNR$QuVc-q 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 literal 0 HcmV?d00001 From a1e4eb29237165f3372d29d3a21bf7f25d6030d9 Mon Sep 17 00:00:00 2001 From: Collie147 Date: Thu, 21 Nov 2019 18:46:29 +0000 Subject: [PATCH 22/25] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1228622..1671938 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ MeetEasier is a web application that visualizes meeting room availability. It w This particular fork adds additional functionality (e.g. buttons for making bookings, extending bookings and ending meetings) and hides some options depending on environment variables (set in the .env files) -![Mockup 1](mockups/mockup-1.jpg) +![Mockup 1](mockups/mockup-1.png) *** @@ -191,11 +191,11 @@ There are three main directories in the `ui-react/src/` folder: ## Flightboard Layout Mockup -![Mockup 3](mockups/mockup-3.jpg) +![Mockup 3](mockups/mockup-3.png) ## Single Room Layout Mockup -![Mockup 2](mockups/mockup-2.jpg) +![Mockup 2](mockups/mockup-2.png) *** From 66e24073bf65ea547c29af8427a45455582c634d Mon Sep 17 00:00:00 2001 From: Collie147 Date: Thu, 21 Nov 2019 18:47:52 +0000 Subject: [PATCH 23/25] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 1671938..85401f2 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,3 @@ There are three main directories in the `ui-react/src/` folder: ## Resources & Attributions * [ews-javascript-api](https://github.com/gautamsi/ews-javascript-api) -* Mockup Images: - * https://www.anthonyboyd.graphics/mockups/2017/realistic-ipad-pro-mockup-vol-3/ - * https://www.freepik.com/free-psd/business-meeting-with-tv-mockup_1163371.htm - * https://www.freepik.com/free-psd/samsung-tv-mockup_800771.htm From b54b79d98b15753d5e817faa3029299ac8b1339f Mon Sep 17 00:00:00 2001 From: Collie147 Date: Tue, 11 Jan 2022 09:32:23 +0000 Subject: [PATCH 24/25] added strict equality operator replaced equality operator == with strict equality operator === --- app/ews/roombooking.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/ews/roombooking.js b/app/ews/roombooking.js index c32fc12..e3e452d 100644 --- a/app/ews/roombooking.js +++ b/app/ews/roombooking.js @@ -14,7 +14,7 @@ module.exports = { exch.Credentials = new ews.WebCredentials(auth.exchange.username, auth.exchange.password); exch.Url = new ews.Uri(auth.exchange.uri); //ews.EwsLogging.DebugLogEnabled = true; - if ((bookingType == 'BookNow') || (bookingType == 'BookAfter')){ + if ((bookingType === 'BookNow') || (bookingType === 'BookAfter')){ console.log("BookNow/BookAfter"); var promise = new Promise (function (resolve, reject) { var appointment = new ews.Appointment(exch); @@ -39,7 +39,7 @@ module.exports = { console.log(err); }); } - else if ((bookingType == 'Extend') || (bookingType == 'EndNow')){ + else if ((bookingType === 'Extend') || (bookingType === 'EndNow')){ var calendarFolderId = new ews.FolderId(ews.WellKnownFolderName.Calendar, new ews.Mailbox(roomEmail)); var view = new ews.CalendarView(ews.DateTime.Now, new ews.DateTime(ews.DateTime.Now.TotalMilliSeconds + 576000000), 6); exch.FindAppointments(calendarFolderId, view).then((response) => { @@ -55,7 +55,7 @@ module.exports = { console.log(start); var apptStartewsDT = new ews.DateTime(new Date(parseInt(start, 10))); var apptStartTime = moment(start).toISOString(); - if (apptStartTime == startTime){ + if (apptStartTime === startTime){ var promise = new Promise (function (resolve, reject) { appt.End = new ews.DateTime(endTime); @@ -94,4 +94,4 @@ module.exports = { } -} \ No newline at end of file +} From 7b5923bc6b3de61722bc45be243a57ddfb8fbc5e Mon Sep 17 00:00:00 2001 From: Collie147 Date: Tue, 11 Jan 2022 09:34:24 +0000 Subject: [PATCH 25/25] Removed Commented Code --- ui-react/src/components/single-room/Display.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/ui-react/src/components/single-room/Display.js b/ui-react/src/components/single-room/Display.js index afb58b2..cccfa01 100644 --- a/ui-react/src/components/single-room/Display.js +++ b/ui-react/src/components/single-room/Display.js @@ -17,22 +17,14 @@ class ErrorHandler extends React.Component { componentDidCatch(error, info) { this.setState({ errorOccurred: true }); this.setState({ currentError: error }); - //console.log("Component Caught Error"); - //console.log(error); } render() { if (this.state.errorOccurred){ - //console.log("Window.location.reload"); - //console.log(this.state.currentError); - // if (this.state.currentError == TypeError){ - // console.log("TYPE ERROR") if ((this.state.currentError.toString().includes("Cannot read property 'length' of undefined")) || (this.state.currentError.toString().includes("Cannot read property 'Subject' of undefined"))) { window.location.reload(); } - // } - //window.location.reload(); return

    } else{