Skip to content

Commit

Permalink
Callsign / frequency selection events.
Browse files Browse the repository at this point in the history
  • Loading branch information
PiotrTopa committed Jul 18, 2022
1 parent cf4fa8b commit 092d403
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 12 deletions.
5 changes: 3 additions & 2 deletions webapp/chat-message.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ import ChatRxMessage from './chat-rx-message.mjs'

export default {
props: ['message', 'showRawPackets'],
emits: ['callsignSelected', 'frequencySelected'],
components: {
ChatRxPacket,
ChatRxMessage,
},
methods: {
},
template: `
<ChatRxPacket v-if="showRawPackets && message.Type === 'RX.ACTIVITY'" :message=message />
<ChatRxMessage v-if="message.Type === 'RX.DIRECTED'" :message=message />
<ChatRxPacket v-if="showRawPackets && message.Type === 'RX.ACTIVITY'" :message=message @frequencySelected="e => $emit('frequencySelected', e)" />
<ChatRxMessage @callsignSelected="e => $emit('callsignSelected', e)" @frequencySelected="e => $emit('frequencySelected', e)" v-if="message.Type === 'RX.DIRECTED'" :message=message />
`
}
9 changes: 5 additions & 4 deletions webapp/chat-rx-header-icons.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ var SNR_COLOR_3 = {

export default {
props: ['message'],
emits: ['frequencySelected'],
components: {
},
methods: {
Expand Down Expand Up @@ -41,10 +42,10 @@ export default {
},
template: `
<span class="gauges">
<span class="gauge snr"><i class="bi bi-speedometer2"></i><span :style="'color: ' + snrColor(message.Snr)">{{ message.Snr > 0 ? '+' : '' }}{{ message.Snr }}</span></span>
<span class="gauge freq"><i class="bi bi-broadcast-pin"></i>{{ message.Offset }}Hz</span>
<span class="gauge speed"><i class="bi bi-skip-end"></i><span :class="message.Speed">{{ message.Speed[0].toUpperCase() }}</span></span>
<span class="gauge timedritft"><i class="bi bi-stopwatch"></i>{{ message.TimeDrift > 0 ? '+' : '' }}{{ message.TimeDrift }}ms</span>
<span class="gauge freq"><a class="btn btn-light btn-sm" href="#" @click="$emit('frequencySelected', message.Freq)"><i class="bi bi-broadcast-pin"></i> {{ message.Offset }}Hz</a></span>
<span class="gauge snr"><i class="bi bi-speedometer2"></i><span :style="'color: ' + snrColor(message.Snr)">{{ message.Snr > 0 ? '+' : '' }} {{ message.Snr }}</span></span>
<span class="gauge speed"><i class="bi bi-skip-end"></i><span :class="message.Speed"> {{ message.Speed[0].toUpperCase() }}</span></span>
<span class="gauge timedritft"><i class="bi bi-stopwatch"></i> {{ message.TimeDrift > 0 ? '+' : '' }}{{ message.TimeDrift }}ms</span>
</span>
`
}
Expand Down
4 changes: 3 additions & 1 deletion webapp/chat-rx-message.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import ChatRxHeaderIcons from './chat-rx-header-icons.mjs'

export default {
props: ['message'],
emits: ['callsignSelected', 'frequencySelected'],
components: {
ChatRxHeaderIcons
},
Expand All @@ -19,10 +20,11 @@ export default {
<li class="clearfix message my-message">
<div class="header">
<span class="time">{{ new Date(message.Timestamp).toLocaleString() }}</span>
<ChatRxHeaderIcons :message=message />
<ChatRxHeaderIcons :message=message @frequencySelected="e => $emit('frequencySelected', e)" />
<br />
<span class="from">{{ message.From }}</span>
<a class="btn btn-light btn-sm" @click="$emit('callsignSelected', message.From)"><i class="bi bi-search"></i></a>
<span class="grid" v-if=message.Grid><i class="bi bi-globe"></i>{{ message.Grid }}</span>
</div>
<div class="content">{{ getMessageText(message) }}</div>
Expand Down
3 changes: 2 additions & 1 deletion webapp/chat-rx-packet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import ChatRxHeaderIcons from './chat-rx-header-icons.mjs'

export default {
props: ['message'],
emits: ['frequencySelected'],
components: {
ChatRxHeaderIcons
},
Expand All @@ -11,7 +12,7 @@ export default {
<li class="clearfix packet">
<div class="header">
<span class="time">{{ new Date(message.Timestamp).toLocaleTimeString() }}</span>
<ChatRxHeaderIcons :message=message />
<ChatRxHeaderIcons :message=message @frequencySelected="e => $emit('frequencySelected', e)" />
</div>
<br />
<div class="content">{{ message.Text }}</div>
Expand Down
10 changes: 8 additions & 2 deletions webapp/chat-window.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default {
uid: uidGenerator(),
settingsShowRawPackets: true,
}

},
methods: {
activateTab(selected) {
Expand All @@ -39,6 +39,12 @@ export default {
closeTab(id) {
this.chats = this.chats.filter(e => e.id != id)
},
callsignSelected(callsign) {
console.log('callsign-select', callsign)
},
frequencySelected(frequency) {
console.log('frequency-selected', frequency)
},
},
template: `
<ul class="nav nav-tabs">
Expand All @@ -55,7 +61,7 @@ export default {
</li>
</ul>
<template v-for="chat in chats">
<Chat v-show="activeTab == chat.id" :filter="chat.filter" :showRawPackets="this.settingsShowRawPackets" />
<Chat v-show="activeTab == chat.id" :filter="chat.filter" :showRawPackets="this.settingsShowRawPackets" @callsignSelected="this.callsignSelected" @frequencySelected="this.frequencySelected" />
</template>
<div v-show="activeTab == 'settings'">
<div class="row">
Expand Down
5 changes: 3 additions & 2 deletions webapp/chat.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ const EXPECTED_MESSAGES_COUNT = 100

export default {
props: ['filter', 'showRawPackets'],
emits: ['callsignSelected', 'frequencySelected'],
components: {
ChatMessage,
},
created() {
this.fetchNewestMessages().then(messages => {
this.fetchNewestMessages().then(messages => {
this.messages = messages
this.atBottom = true;
this.$nextTick(_ => {
Expand Down Expand Up @@ -130,7 +131,7 @@ export default {
<div class="history-top" v-if="atTop">(No more messages)</div>
<div class="loader" v-if="loadingBefore">LOADING</div>
<ul class="m-b-0">
<ChatMessage v-for="message in messages" :key=message.Id :message=message :showRawPackets=showRawPackets />
<ChatMessage v-for="message in messages" :key=message.Id :message=message :showRawPackets=showRawPackets @callsignSelected="e => $emit('callsignSelected', e)" @frequencySelected="e => $emit('frequencySelected', e)" />
</ul>
<div class="loader" v-if="loadingAfter">LOADING</div>
<div class="history-bottom" v-if="atBottom"><i class="bi bi-broadcast"></i> receiving <i class="bi bi-broadcast"></i></div>
Expand Down
10 changes: 10 additions & 0 deletions webapp/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,16 @@
margin-left: 0.5em;
}

.chat .chat-history .packet .header .gauges .gauge .btn {
font-size: 1em!important;
color: #434651;
}

.chat .chat-history .message .header .gauges .gauge .btn {
font-size: 1em!important;
color: #434651;
}

.chat .chat-history .message {
clear: both;
}
Expand Down

0 comments on commit 092d403

Please sign in to comment.