doomsquadairsoft / controlpointer Goto Github PK
View Code? Open in Web Editor NEWAirsoft field management solution. Controlpoints, game modes, public address, pyro
Home Page: http://hq.doomsquadairsoft.com/
Airsoft field management solution. Controlpoints, game modes, public address, pyro
Home Page: http://hq.doomsquadairsoft.com/
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.
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.
The first run of teamLossCompute has no effect. Only subsequent runs of teamLossCompute have the correct function. Tests are not passing for this function.
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.
Controlpointer should have a game timer that can be
Snapshots of the controlpoints and their respective colours at various times through the game would be a great addition to the postgame report.
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.
Green Fox II data is still live, which is already over. Please update with Green Fox III data.
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.
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.
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.
A potential cheating exploit is using Feathersjs service.patch to modify d3vices unfairly. There is no hook on patch or update which means the d3vice properties can be modified to any value
An administrator should easily be able to move a controlpoint on the map, without having to worry about LatLng.
The progress bar does not show the device.bluProgress value. I suspect this is something to do with how the drop down menu is selecting a device and populating the controlpoint component.
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)
The button LEDS should be OFF. The LED strip should indicate power on
[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"}
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
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.
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.
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.
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.
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.
Dokku currently fails to deploy the app. A quick and speedy deployment is essential for the future of Controlpointer.
It would be nice to have (for Green Fox) to have the identity generator built into Controlpointer.
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.
🚨 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.
There is a bug which seems to be caused by the last associated device in a game. Change it's controlling team using the admin override, and all d3vices in that game game change as well.
May be a similar issue as what caused #21
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
How much is a d3vice?
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.
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.
Controlpointer needs to simulate a Counter-Strike game mode without physical d3vices attached to the network.
The validation rules are too strict, and only allow a Two Button (physical) device to be created.
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
Controlpointer should be able to simulate an ongoing sector control game, with or without physical D3VICEs attached to the network.
These are DooM D3VICES-- Hardware placed on the field which interacts with DooM HQ.
A player interaction D3VICE for game modes with 2 teams.
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:
As of 4.4.0, the postgame report page is just a dump of data. It's not very human readable. I think the data laid out in human readable strings using a Vuetify timeline would be the perfect look and feel for this page.
DooM HQ should be installable as a progressive web app
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.