Code Monkey home page Code Monkey logo

controlpointer's People

Contributors

insanity54 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

ysasamsun

controlpointer's Issues

Build a gateway

  • Raspberry Pi (or variant)
  • Enclosure
  • Panel mount
  • Battery/Power Supply
  • Gameserver functionality

Game Log should auto scroll to bottom when a new event is created

When a new event is created, the log should automatically show it by scrolling to the bottom of the list. Manually scrolling up should temporarily disable this feature until the user presses the [SCROLL TO BOTTOM] button.

  • Auto scroll to bottom
  • Temporary disablement to allow scrolling up without interruption

D3VICE button simulation

In the master plan of DooM D3vices, Physical d3vices are optional. A cell phone atop a table can serve as a controlpoint, with large buttons spanning the entire screen.

A user should be able to open the web app, navigate to the Virtual Controlpoint page, and set the phone on a table top. The phone in this state should be functionally equivalent to a DooM D3VICE 2B (2-button hardware d3vice.)

TL;DR: Controlpointer webapp should have press-and-hold D3VICE button simulation for the simulation (#4, #5) functionality.

Add a center button to the map

The map should have a button which centers the view on the active game. This is useful in the case where a player browses the map, then gets lost. The center view button would bring their viewport back to the relevant map area, the place with control points.

Game timer

Controlpointer should have a game timer that can be

  • Started
  • Paused
  • Stopped

Add map snapshots to postgame page

Snapshots of the controlpoints and their respective colours at various times through the game would be a great addition to the postgame report.

Heartbeat indicator should use a global interval

I think it might be beneficial for performance to have GameDeviceHeader.vue use some sort of app-wide timeout method to update the heart colour.

The above component could, when created, initiate a hook which runs every x seconds. Maybe every 1 second, and the hook could use the same timer as the clock blink.

Pausing one game pauses all other games

The game status seems to persist across all games. start|pause|stop events on one game affect all games. I think this has to do with the local state which the timer uses to display the client-side timer. It might also require some tweaking to the metadata calculation code, which may be ignoring gameIds.

UI locking bug

When I open a game (example: navigate to http://localhost:5001/#/game/u4eDxZtyekVZiYW8), the whole UI locks up for 5+ seconds. Then, there are a bunch of errors in the console. Firefox triggers it's slow page dialog asking to close or wait. Opera just hangs.

[HMR] Waiting for update signal from WDS...
vue.esm.js?a026:8566 You are running Vue in development mode.
Make sure to turn on production mode when deploying for production.
See more tips at https://vuejs.org/guide/deployment.html
client?d0ce:77 [WDS] Hot Module Replacement enabled.
backend.js:1  vue-devtools  Detected Vue v2.5.17 
client.js?c992:87 Uncaught (in promise) Error: Timeout of 5000ms exceeded calling timeline::find
    at eval (client.js?c992:87)
(anonymous) @ client.js?c992:87
Promise.catch (async)
wrappedActionHandler @ vuex.esm.js?2f62:716
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ GameStatus.vue?02fe:190
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
updateChildren @ vue.esm.js?a026:5845
patchVnode @ vue.esm.js?a026:5936
patch @ vue.esm.js?a026:6096
Vue._update @ vue.esm.js?a026:2670
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
run @ vue.esm.js?a026:3219
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
_addItems @ mutations.js?2510:85
addItems @ mutations.js?2510:151
wrappedMutationHandler @ vuex.esm.js?2f62:697
commitIterator @ vuex.esm.js?2f62:389
(anonymous) @ vuex.esm.js?2f62:388
_withCommit @ vuex.esm.js?2f62:495
commit @ vuex.esm.js?2f62:387
boundCommit @ vuex.esm.js?2f62:335
local.commit @ vuex.esm.js?2f62:651
addOrUpdateList @ actions.js?680e:314
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
handleResponse @ actions.js?680e:31
Promise.then (async)
find @ actions.js?680e:67
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ Controlpointer.vue?2013:127
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
patch @ vue.esm.js?a026:6130
Vue._update @ vue.esm.js?a026:2660
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
Watcher @ vue.esm.js?a026:3131
mountComponent @ vue.esm.js?a026:2795
Vue.$mount @ vue.esm.js?a026:8540
Vue.$mount @ vue.esm.js?a026:10939
Vue._init @ vue.esm.js?a026:4640
Vue @ vue.esm.js?a026:4729
(anonymous) @ index.js?a18d:41
./src_client/index.js @ bundle.js:13039
__webpack_require__ @ bundle.js:725
fn @ bundle.js:102
0 @ bundle.js:13160
__webpack_require__ @ bundle.js:725
(anonymous) @ bundle.js:792
(anonymous) @ bundle.js:795
client.js?c992:87 Uncaught (in promise) Error: Timeout of 5000ms exceeded calling timeline::find
    at eval (client.js?c992:87)
(anonymous) @ client.js?c992:87
setTimeout (async)
(anonymous) @ client.js?c992:86
send @ client.js?c992:82
find @ client.js?c992:112
processHooks.call.then.hookObject @ hooks.js?5e4f:65
Promise.then (async)
mixin.(anonymous function) @ hooks.js?5e4f:58
(anonymous) @ proto.js?6cb0:30
find @ actions.js?680e:57
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ GameStatus.vue?02fe:190
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
updateChildren @ vue.esm.js?a026:5845
patchVnode @ vue.esm.js?a026:5936
patch @ vue.esm.js?a026:6096
Vue._update @ vue.esm.js?a026:2670
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
run @ vue.esm.js?a026:3219
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
_addItems @ mutations.js?2510:85
addItems @ mutations.js?2510:151
wrappedMutationHandler @ vuex.esm.js?2f62:697
commitIterator @ vuex.esm.js?2f62:389
(anonymous) @ vuex.esm.js?2f62:388
_withCommit @ vuex.esm.js?2f62:495
commit @ vuex.esm.js?2f62:387
boundCommit @ vuex.esm.js?2f62:335
local.commit @ vuex.esm.js?2f62:651
addOrUpdateList @ actions.js?680e:314
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
handleResponse @ actions.js?680e:31
Promise.then (async)
find @ actions.js?680e:67
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ Controlpointer.vue?2013:127
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
patch @ vue.esm.js?a026:6130
Vue._update @ vue.esm.js?a026:2660
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
Watcher @ vue.esm.js?a026:3131
mountComponent @ vue.esm.js?a026:2795
Vue.$mount @ vue.esm.js?a026:8540
Vue.$mount @ vue.esm.js?a026:10939
Vue._init @ vue.esm.js?a026:4640
Vue @ vue.esm.js?a026:4729
(anonymous) @ index.js?a18d:41
./src_client/index.js @ bundle.js:13039
__webpack_require__ @ bundle.js:725
fn @ bundle.js:102
0 @ bundle.js:13160
__webpack_require__ @ bundle.js:725
(anonymous) @ bundle.js:792
(anonymous) @ bundle.js:795
client.js?c992:87 Uncaught (in promise) Error: Timeout of 5000ms exceeded calling game::find
    at eval (client.js?c992:87)
(anonymous) @ client.js?c992:87
Promise.catch (async)
wrappedActionHandler @ vuex.esm.js?2f62:716
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ GameStatus.vue?02fe:191
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
updateChildren @ vue.esm.js?a026:5845
patchVnode @ vue.esm.js?a026:5936
patch @ vue.esm.js?a026:6096
Vue._update @ vue.esm.js?a026:2670
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
run @ vue.esm.js?a026:3219
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
_addItems @ mutations.js?2510:85
addItems @ mutations.js?2510:151
wrappedMutationHandler @ vuex.esm.js?2f62:697
commitIterator @ vuex.esm.js?2f62:389
(anonymous) @ vuex.esm.js?2f62:388
_withCommit @ vuex.esm.js?2f62:495
commit @ vuex.esm.js?2f62:387
boundCommit @ vuex.esm.js?2f62:335
local.commit @ vuex.esm.js?2f62:651
addOrUpdateList @ actions.js?680e:314
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
handleResponse @ actions.js?680e:31
Promise.then (async)
find @ actions.js?680e:67
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ Controlpointer.vue?2013:127
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
patch @ vue.esm.js?a026:6130
Vue._update @ vue.esm.js?a026:2660
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
Watcher @ vue.esm.js?a026:3131
mountComponent @ vue.esm.js?a026:2795
Vue.$mount @ vue.esm.js?a026:8540
Vue.$mount @ vue.esm.js?a026:10939
Vue._init @ vue.esm.js?a026:4640
Vue @ vue.esm.js?a026:4729
(anonymous) @ index.js?a18d:41
./src_client/index.js @ bundle.js:13039
__webpack_require__ @ bundle.js:725
fn @ bundle.js:102
0 @ bundle.js:13160
__webpack_require__ @ bundle.js:725
(anonymous) @ bundle.js:792
(anonymous) @ bundle.js:795
client.js?c992:87 Uncaught (in promise) Error: Timeout of 5000ms exceeded calling game::find
    at eval (client.js?c992:87)
(anonymous) @ client.js?c992:87
setTimeout (async)
(anonymous) @ client.js?c992:86
send @ client.js?c992:82
find @ client.js?c992:112
processHooks.call.then.hookObject @ hooks.js?5e4f:65
Promise.then (async)
mixin.(anonymous function) @ hooks.js?5e4f:58
(anonymous) @ proto.js?6cb0:30
find @ actions.js?680e:57
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ GameStatus.vue?02fe:191
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
updateChildren @ vue.esm.js?a026:5845
patchVnode @ vue.esm.js?a026:5936
patch @ vue.esm.js?a026:6096
Vue._update @ vue.esm.js?a026:2670
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
run @ vue.esm.js?a026:3219
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
_addItems @ mutations.js?2510:85
addItems @ mutations.js?2510:151
wrappedMutationHandler @ vuex.esm.js?2f62:697
commitIterator @ vuex.esm.js?2f62:389
(anonymous) @ vuex.esm.js?2f62:388
_withCommit @ vuex.esm.js?2f62:495
commit @ vuex.esm.js?2f62:387
boundCommit @ vuex.esm.js?2f62:335
local.commit @ vuex.esm.js?2f62:651
addOrUpdateList @ actions.js?680e:314
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
handleResponse @ actions.js?680e:31
Promise.then (async)
find @ actions.js?680e:67
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ Controlpointer.vue?2013:127
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
patch @ vue.esm.js?a026:6130
Vue._update @ vue.esm.js?a026:2660
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
Watcher @ vue.esm.js?a026:3131
mountComponent @ vue.esm.js?a026:2795
Vue.$mount @ vue.esm.js?a026:8540
Vue.$mount @ vue.esm.js?a026:10939
Vue._init @ vue.esm.js?a026:4640
Vue @ vue.esm.js?a026:4729
(anonymous) @ index.js?a18d:41
./src_client/index.js @ bundle.js:13039
__webpack_require__ @ bundle.js:725
fn @ bundle.js:102
0 @ bundle.js:13160
__webpack_require__ @ bundle.js:725
(anonymous) @ bundle.js:792
(anonymous) @ bundle.js:795
client.js?c992:87 Uncaught (in promise) Error: Timeout of 5000ms exceeded calling metadata::find
    at eval (client.js?c992:87)
(anonymous) @ client.js?c992:87
Promise.catch (async)
wrappedActionHandler @ vuex.esm.js?2f62:716
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ GameStatus.vue?02fe:192
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
updateChildren @ vue.esm.js?a026:5845
patchVnode @ vue.esm.js?a026:5936
patch @ vue.esm.js?a026:6096
Vue._update @ vue.esm.js?a026:2670
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
run @ vue.esm.js?a026:3219
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
_addItems @ mutations.js?2510:85
addItems @ mutations.js?2510:151
wrappedMutationHandler @ vuex.esm.js?2f62:697
commitIterator @ vuex.esm.js?2f62:389
(anonymous) @ vuex.esm.js?2f62:388
_withCommit @ vuex.esm.js?2f62:495
commit @ vuex.esm.js?2f62:387
boundCommit @ vuex.esm.js?2f62:335
local.commit @ vuex.esm.js?2f62:651
addOrUpdateList @ actions.js?680e:314
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
handleResponse @ actions.js?680e:31
Promise.then (async)
find @ actions.js?680e:67
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ Controlpointer.vue?2013:127
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
patch @ vue.esm.js?a026:6130
Vue._update @ vue.esm.js?a026:2660
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
Watcher @ vue.esm.js?a026:3131
mountComponent @ vue.esm.js?a026:2795
Vue.$mount @ vue.esm.js?a026:8540
Vue.$mount @ vue.esm.js?a026:10939
Vue._init @ vue.esm.js?a026:4640
Vue @ vue.esm.js?a026:4729
(anonymous) @ index.js?a18d:41
./src_client/index.js @ bundle.js:13039
__webpack_require__ @ bundle.js:725
fn @ bundle.js:102
0 @ bundle.js:13160
__webpack_require__ @ bundle.js:725
(anonymous) @ bundle.js:792
(anonymous) @ bundle.js:795
client.js?c992:87 Uncaught (in promise) Error: Timeout of 5000ms exceeded calling metadata::find
    at eval (client.js?c992:87)
(anonymous) @ client.js?c992:87
setTimeout (async)
(anonymous) @ client.js?c992:86
send @ client.js?c992:82
find @ client.js?c992:112
processHooks.call.then.hookObject @ hooks.js?5e4f:65
Promise.then (async)
mixin.(anonymous function) @ hooks.js?5e4f:58
(anonymous) @ proto.js?6cb0:30
find @ actions.js?680e:57
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ GameStatus.vue?02fe:192
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
createChildren @ vue.esm.js?a026:5682
createElm @ vue.esm.js?a026:5584
updateChildren @ vue.esm.js?a026:5845
patchVnode @ vue.esm.js?a026:5936
patch @ vue.esm.js?a026:6096
Vue._update @ vue.esm.js?a026:2670
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
run @ vue.esm.js?a026:3219
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
_addItems @ mutations.js?2510:85
addItems @ mutations.js?2510:151
wrappedMutationHandler @ vuex.esm.js?2f62:697
commitIterator @ vuex.esm.js?2f62:389
(anonymous) @ vuex.esm.js?2f62:388
_withCommit @ vuex.esm.js?2f62:495
commit @ vuex.esm.js?2f62:387
boundCommit @ vuex.esm.js?2f62:335
local.commit @ vuex.esm.js?2f62:651
addOrUpdateList @ actions.js?680e:314
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
handleResponse @ actions.js?680e:31
Promise.then (async)
find @ actions.js?680e:67
wrappedActionHandler @ vuex.esm.js?2f62:704
dispatch @ vuex.esm.js?2f62:426
boundDispatch @ vuex.esm.js?2f62:332
local.dispatch @ vuex.esm.js?2f62:634
mappedAction @ vuex.esm.js?2f62:880
created @ Controlpointer.vue?2013:127
callHook @ vue.esm.js?a026:2921
Vue._init @ vue.esm.js?a026:4630
VueComponent @ vue.esm.js?a026:4798
createComponentInstanceForVnode @ vue.esm.js?a026:4310
init @ vue.esm.js?a026:4131
createComponent @ vue.esm.js?a026:5608
createElm @ vue.esm.js?a026:5555
patch @ vue.esm.js?a026:6130
Vue._update @ vue.esm.js?a026:2660
updateComponent @ vue.esm.js?a026:2788
get @ vue.esm.js?a026:3142
Watcher @ vue.esm.js?a026:3131
mountComponent @ vue.esm.js?a026:2795
Vue.$mount @ vue.esm.js?a026:8540
Vue.$mount @ vue.esm.js?a026:10939
Vue._init @ vue.esm.js?a026:4640
Vue @ vue.esm.js?a026:4729
(anonymous) @ index.js?a18d:41
./src_client/index.js @ bundle.js:13039
__webpack_require__ @ bundle.js:725
fn @ bundle.js:102
0 @ bundle.js:13160
__webpack_require__ @ bundle.js:725
(anonymous) @ bundle.js:792
(anonymous) @ bundle.js:795
2client?d0ce:80 [WDS] App updated. Recompiling...
client?d0ce:90 [WDS] Nothing changed.

hang-error

The timeout elapses, and all is well. This could be related to feathersjs-ecosystem/feathers-vuex#188

This hang results in very bad UX and needs to be fixed before the demo. The fix in the above issue (upgrade feathers) may be worth a shot.

`npm run dev` makes two webservers

There are two web servers running. One is on port 5000, the other is on 5001. They serve different content.

One is the feathers server, the other is the webpack-dev-server. It is redundant and confusing for dev processes to have one be up to date (webpack-dev-server) and one out of date (feathers, assuming a webpack build has not occurred recently)

2B D3VICE LEDs

The button LEDS should be OFF. The LED strip should indicate power on

Babel mobule build failure

[2] ERROR in ./src_client/index.js
[2] Module build failed (from ./node_modules/babel-loader/lib/index.js):
[2] Error: Plugin/Preset files are not allowed to export objects, only functions. In /home/lbs/Documents/controlpointer/node_modules/babel-preset-es2015/lib/index.js
[2]     at createDescriptor (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-descriptors.js:178:11)
[2]     at items.map (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-descriptors.js:109:50)
[2]     at Array.map (<anonymous>)
[2]     at createDescriptors (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-descriptors.js:109:29)
[2]     at createPresetDescriptors (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-descriptors.js:101:10)
[2]     at presets (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-descriptors.js:47:19)
[2]     at mergeChainOpts (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-chain.js:320:26)
[2]     at /home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-chain.js:283:7
[2]     at buildRootChain (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/config-chain.js:120:22)
[2]     at loadPrivatePartialConfig (/home/lbs/Documents/controlpointer/node_modules/@babel/core/lib/config/partial.js:85:55)
[2]  @ multi (webpack)-dev-server/client?http://localhost:5001 (webpack)/hot/dev-server.js ./src_client/index.js main[2]
[2] ℹ 「wdm」: Failed to compile.
[0] [winston] Attempt to write logs with no transports {"message":"before app.service('events').create()","level":"debug"}
[0] [winston] Attempt to write logs with no transports {"level":"debug","message":"Hook Context"}
[0] [winston] Attempt to write logs with no transports {"message":"after app.service('events').create()","level":"debug"}

Virtual Controlpoint should be it's own page

When viewing the virtual control point in full screen, clicking the back button does not do what I expect it to do. I expect by clicking the back button, the browser will take me back to the Virtual Controlpoint selection screen. Instead, the browser takes me back to the page I was on previously.

I think the Virtual Controlpoint screen (when in full screen) should be part of the router. In other words, http://localhost:5001/#/controlpoint/castle should be a URL, in edition to the already existing URL http://localhost:5001/#/controlpoint

Devices should lose progress when their buttons are not held

When a player is not holding a button, the device progress should decrement UNLESS the device progress reaches 100. This is similar to Battlefield/Squad/etc. sector control, where flags will gradually become grey on their own if the flag was not completely captured by players.

Upgrade feathers

I would like to get feathersjs upgraded, however there are some issues with external libraries--

@feathersjs/socketio - depends on engine.io which depends on deprecated uws. Once engine.io switches away from uws, we should be good to upgrade.

@feathersjs/primus is appealing as an alternative to the above, however webpack is not supported for @feathersjs/primus-client. If they support webpack at some point, this would be worth switching to.

Score tracking

DooM HQ needs to track game scores. The reasons and amounts points are awarded vary by game mode.

In Sector Control, points are awarded for every minute a team controls a point.

Remove replaceItems in vuex devices service

This one is caused by the following bug

feathersjs-ecosystem/feathers-vuex#189

The bug in Controlpointer's perspective is that when deleting games with associated devices, the feathers service.update in the disassociate-device.js hook is not properly triggering reactivity in the /device/:deviceId page. A workaround is to add replaceItems flag in the Vuex service definition.

controlpointer/src_client/store/index.js there is an @todo flag here on line 27 that is a workaround for the following bug. This issue can be closed by upgrading Vue and removing the replaceItems flag.

Add D3VICE heartbeat indicator

The Controlpointer administration page needs to show a little pulsating heart on each device, to show the admin that those devices are in communication with the server. The heart should go grey and cease beating if the d3vice hasn't been contacted in some time.

Rapid Deployment

Dokku currently fails to deploy the app. A quick and speedy deployment is essential for the future of Controlpointer.

Add D3VICE battery indicator

The Controlpointer administration page needs to show a battey indicator on each D3VICE, giving the admin a clue of when the batteries need to be swapped out.

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet. We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper App’s white list on Github. You'll find this list on your repo or organization’s settings page, under Installed GitHub Apps.

Add a menu to the map page

The map needs a menu. When the POI marker shows up after clicking somewhere on the map, the menu should show up as well, giving the admin options to carry out tasks.

Related to #10

Come up with cost

How much is a d3vice?

  • Calculate cost of parts + markup
  • Calculate cost of handling
  • Calculate cost of labor

Multiple package deprecations in v4.14.0

npm WARN deprecated [email protected]: Feathers v3 is out and this module has moved to @feathersjs/socketio and @feathersjs/socketio-client. See https://docs.feathersjs.com/migrating.html for more information.
npm WARN deprecated [email protected]: 🙌  Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update! 
npm WARN deprecated [email protected]: Feathers v3 is out and has moved to @feathersjs/errors. See https://docs.feathersjs.com/migrating.html for more information.
npm WARN deprecated [email protected]: Feathers v3 is out and this module has moved to @feathersjs/commons. See https://docs.feathersjs.com/migrating.html for more information.
npm WARN deprecated [email protected]: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
npm WARN deprecated [email protected]: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5

These packages generate warnings when running npm install. Please check off when upgraded.

  • feathers-socketio
  • babel-preset-es2015
  • feathers-errors
  • feathers-commons
  • browserslist
  • gulp-util

D3VICE Address64s are case sensitive

If the address64 is 0013a20040b51a26, the gateway will not see 0013A20040B51A26. The expected behavior is that the admin should be able to type the ID in caps or non-caps and the d3vice is found via the gateway.

This is probably an issue with the gateway itself because it is what is not seeing the d3vice if the case is upper.

Add CS game simulation

Controlpointer needs to simulate a Counter-Strike game mode without physical d3vices attached to the network.

Mobile app does not run on mobile

The app does not run on my phone. It displays okay, but is 100% unresponsive after load. Firefox mobile shows unresponsive script warning after 10+ seconds.

I suspect this is due to inefficient database records retrieval.

Here's the plan to make it work

  • Only include necessary gameStats functions on the client side
  • Implement suggestions from the Audit tab in Opera/Chrome
  • Come up with more ideas as I check off the above

Rehearse demo

Demo Prerequisites

  • Pen & Paper for taking feedback notes.
  • Game server running with proto added to game. START the demo game.
  • XBee to WiFi Gateway running
  • D3VICE 2B powered off with key in hand.

Overview

  • DooM D3VICEs, gameserver, gateway.

These are DooM D3VICES-- Hardware placed on the field which interacts with DooM HQ.

D3VICE 2B

A player interaction D3VICE for game modes with 2 teams.

  • Press and hold
  • Release before capture
  • Press and hold ... Capture
  • Accidental power off

DooM HQ

An app to make the field administrator's life easier.

  • 2 main sections-- D3VICES and Games.

  • D3VICE list. Click proto device to see it's stats.

  • Game list. Click demo game to see controls

  • Show gateway

  • Show adding a hardware d3vice to app

  • Show creating a game

  • Show game operation

  • Show map

  • Show RSSI & Battery indication

  • Show admin operations (stars, fingerprint)

These are DooM D3VICES. Let me show you it's features.

Things we want to learn from the demo:

  • What needs improvement?
  • What is the elevator pitch? (Gather this from responses)

Add Foxteam game mode

Foxteam is the game mode created for Operation: Green Fox. It builds atop Sector Control by adding player classes, player identities (new identity per lifespan), and special props.

Related to #7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.