| Name | Power | Events | Alerts | Last Motion | Watch | Edit | Delete |
|---|---|---|---|---|---|---|---|
| Camera 1 | On | 25 | 4 | 3 min ago | [Play] | [Edit] | [Delete] |
| Camera 2 | On | 13 | 6 | 1 min ago | [Play] | [Edit] | [Delete] |
| Name | Power | Activity | Last Motion | Actions |
I hereby claim:
To claim this, I am signing this object:
| 'use strict'; | |
| // TODO: Upgraded to neutrino@beta (v5). Make sure to upgrade to final release version | |
| // which should be available mid March. Here are some links on what has changed and | |
| // how to update old config to new: | |
| // https://github.com/mozilla-neutrino/neutrino-dev/blob/v5.0.0-beta/docs/upgrading-neutrino.md | |
| // https://github.com/mozilla-neutrino/neutrino-dev/pull/86#issue-211140309 | |
| const merge = require('deepmerge'); | |
| const webpack = require('webpack') |
| // Create WebRTC peer and setup event handlers | |
| let peer = new RTCPeerConnection(iceConfig) | |
| // Subject for the websocket signalling server | |
| let socketSubject = Observable.webSocket({ | |
| // deserialize each binary message received | |
| resultSelector: e => deserialize(e.data) | |
| }) | |
| // Filter for only icecandidate messages | |
| .filter(msg => msg && msg.header && msg.header.event === 'icecandidate' && msg.body && msg.body.candidate) |
| let candidatesToSend = [] | |
| let candidatesReceived = [] | |
| let socketSubject = Observable.webSocket({ | |
| url: 'wss://...', | |
| openObserver: { | |
| next: e => { | |
| e.currentTarget.binaryType = 'arraybuffer' | |
| candidatesToSend.forEach(candidate => { | |
| console.log('sending candidate', candidate) |
| module.exports = { | |
| attributes: { | |
| // The participation that submitted this entry | |
| participation: { | |
| model: 'participation', | |
| required: true | |
| }, |
| STEP 1 | |
| npm install sails@beta -g | |
| git clone git@github.com:coinprofit/sails-model-question.git | |
| cd sails-model-question | |
| npm init | |
| sails lift | |
| STEP 2 |
| module.exports = function(req, res, next) { | |
| // Make sure request is for a single entity, not for a collection of entities | |
| if (!req.params.id) { | |
| return res.forbidden('error.noPermission'); | |
| } | |
| return next(); | |
| }; |
| var _ = require('lodash'); | |
| /** | |
| * Make sure to always return an array. If an array is passed, then | |
| * return the array. If passed a string, return an array containing | |
| * that string. If passed undefined or null, return an empty array. | |
| * | |
| * @param [String|Array] values A string or an array | |
| * @return [Array] | |
| */ |
| // Sipmle AOP after function | |
| var after = function(base, after) { | |
| if (!base) { | |
| return after; | |
| } | |
| return function composedAfter() { | |
| var res = base.apply(this, arguments); | |
| after.apply(this, arguments); | |
| return res; |