@@ -88,6 +88,8 @@ export default {
8888 }
8989 },
9090 mounted () {
91+ this .compact = JSON .parse (sessionStorage .getItem (' compact' )) || false ;
92+
9193 this .mqtt_status = this .$mqtt .status ();
9294
9395 // subscribe to spacecraft topic to get state updates
@@ -120,25 +122,21 @@ export default {
120122 </script >
121123<template >
122124
123- <!-- BEGIN page-header -->
124125 <h1 class =" page-header" >
125126 <span v-if =" loading" class =" spinner-border text-secondary app-fs-small" role =" status" ><span class =" visually-hidden" >Loading...</span ></span >
126- AOCS <small >Attitude and Orbit Control System</small >
127+ AOCS <small class = " d-none d-md-inline " >Attitude and Orbit Control System</small >
127128 <small class =" float-end" >
128- <!-- <span class="badge rounded-0 bg-secondary">Last Update</span>
129- <span class="badge rounded-0 bg-dark" style="margin-right: 10px;">{{ dt.replace('T', ' ').replace('Z','') }} UTC</span> -->
130129 <span class =" badge rounded-0 bg-secondary" >MQTT</span >
131130 <span class =" badge rounded-0" :class =" { 'bg-success': mqtt_status === 'connected', 'bg-danger': mqtt_status !== 'connected' }" >{{ mqtt_status }}</span >
132- <span class =" badge rounded-0 bg-secondary ms-2 " >D/L State</span >
131+ <span class =" badge rounded-0 bg-secondary ms-1 " >D/L State</span >
133132 <span v-if =" status_dl" class =" badge rounded-0 text-uppercase" :class =" { 'text-bg-danger': status_dl==='NO_RF', 'text-bg-warning': status_dl==='PLL_LOCK' || status_dl==='PSK_LOCK' || status_dl==='BIT_LOCK', 'text-bg-success': status_dl==='FRAME_LOCK' }" >{{ status_dl }}</span >
134133 <span v-else class =" badge rounded-0 bg-dark" >_</span >
135134 </small >
136135 </h1 >
137136 <hr class =" mb-4" >
138- <!-- END page-header -->
139137
140- <div class =" row" v-if =" renderComponent" >
141- <div class =" col-xl-2 col-lg -2" >
138+ <div class =" row" v-if =" renderComponent && !compact " >
139+ <div class =" col-sm -2" >
142140 <card class =" mb-3" >
143141 <card-header class =" card-header fw-bold small text-center p-1" >AOCS Chain</card-header >
144142 <card-body class =" p-2 mx-2" >
@@ -147,7 +145,7 @@ export default {
147145 </card-body >
148146 </card >
149147 </div >
150- <div class =" col-xl-2 col-lg -2" >
148+ <div class =" col-sm -2" >
151149 <card class =" mb-3" >
152150 <card-header class =" card-header fw-bold small text-center p-1" >AOCS Mode</card-header >
153151 <card-body class =" p-2 mx-2" >
@@ -156,7 +154,7 @@ export default {
156154 </card-body >
157155 </card >
158156 </div >
159- <div class =" col-xl-2 col-lg -2" >
157+ <div class =" col-sm -2" >
160158 <card class =" mb-3" >
161159 <card-header class =" card-header fw-bold small text-center p-1" >AOCS Valid</card-header >
162160 <card-body class =" p-2 mx-2" >
@@ -167,7 +165,7 @@ export default {
167165 </div >
168166 </div >
169167
170- <div class =" row" v-if =" renderComponent" >
168+ <div class =" row" v-if =" renderComponent && !compact " >
171169 <div class =" col-xl-2 col-lg-2" >
172170 <card class =" mb-3" >
173171 <card-header class =" card-header fw-bold small text-center p-1" >Rotation X</card-header >
@@ -209,7 +207,7 @@ export default {
209207 </div >
210208 </div >
211209
212- <div class =" row" v-if =" renderComponent" >
210+ <div class =" row" v-if =" renderComponent && !compact " >
213211 <div class =" col-xl-2 col-lg-2" >
214212 <card class =" mb-3" >
215213 <card-header class =" card-header fw-bold small text-center p-1" >Rate X</card-header >
@@ -251,7 +249,7 @@ export default {
251249 </div >
252250 </div >
253251
254- <div class =" row" v-if =" renderComponent" >
252+ <div class =" row" v-if =" renderComponent && !compact " >
255253 <div class =" col-xl-2 col-lg-2" >
256254 <card class =" mb-3" >
257255 <card-header class =" card-header fw-bold small text-center p-1" >Sun Angle</card-header >
@@ -280,6 +278,74 @@ export default {
280278 </div >
281279 </div >
282280
281+ <div class =" row" v-if =" renderComponent && compact" >
282+ <div class =" col-sm-4" >
283+ <card class =" mb-3" >
284+ <card-body class =" " >
285+ <table class =" table text-nowrap mb-0" >
286+ <tbody >
287+ <tr >
288+ <td class =" app-w-col" >AOCS Chain</td >
289+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_chain }}</div ></td >
290+ <td v-else >_</td >
291+ </tr >
292+ <tr >
293+ <td >AOCS Mode</td >
294+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_mode }}</div ></td >
295+ <td v-else >_</td >
296+ </tr >
297+ <tr >
298+ <td >AOCS Valid</td >
299+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_valid }}</div ></td >
300+ <td v-else >_</td >
301+ </tr >
302+ <tr >
303+ <td >Rotation X</td >
304+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_rotation[0].toFixed(3) }}°</div ></td >
305+ <td v-else >_</td >
306+ </tr >
307+ <tr >
308+ <td >Rotation Y</td >
309+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_rotation[1].toFixed(3) }}°</div ></td >
310+ <td v-else >_</td >
311+ </tr >
312+ <tr >
313+ <td >Rotation Z</td >
314+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_rotation[2].toFixed(3) }}°</div ></td >
315+ <td v-else >_</td >
316+ </tr >
317+ <tr >
318+ <td >Rate X</td >
319+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_rates[0].toFixed(3) }}</div ></td >
320+ <td v-else >_</td >
321+ </tr >
322+ <tr >
323+ <td >Rate Y</td >
324+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_rates[1].toFixed(3) }}</div ></td >
325+ <td v-else >_</td >
326+ </tr >
327+ <tr >
328+ <td >Rate Z</td >
329+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_rates[2].toFixed(3) }}</div ></td >
330+ <td v-else >_</td >
331+ </tr >
332+ <tr >
333+ <td >Sun Angle</td >
334+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_sun_angle.toFixed(3) }}°</div ></td >
335+ <td v-else >_</td >
336+ </tr >
337+ <tr >
338+ <td >Nadir Angle</td >
339+ <td v-if =" state" ><div class =" app-badge rounded-0 text-uppercase bg-dark" >{{ state.aocs_nadir_angle.toFixed(3) }}°</div ></td >
340+ <td v-else >_</td >
341+ </tr >
342+ </tbody >
343+ </table >
344+ </card-body >
345+ </card >
346+ </div >
347+ </div >
348+
283349 <div class =" row mt-3" v-if =" renderComponent" >
284350 <div class =" col" >
285351 <span class =" badge rounded-0 bg-secondary" >Last Update</span >
@@ -290,6 +356,8 @@ export default {
290356</template >
291357
292358<style >
359+ .app-w-col { width : 70% ; }
360+ .app-badge { font-size : 0.7rem ; font-weight : 600 ; text-align : center ; padding : 2px ; }
293361.app-w-100 { width : 100% ; }
294362.app-w-80 { width : 86px ; height : 60px ; }
295363.app-fs-small { font-size : small ; }
0 commit comments