tab-control搞定,但是两个月前自己的GPS模块是怎么写的又忘得一干二净,来理一下思路
main-panel模块
研究了一下main-panel里的加载情况
当main-panel被tabctrl激活了以后,mainpanel把subregion信息传递给mainpanel,mainpenal的程序被激活。
总而言之region-panel是获取设备属性信息的第一步,region-panel会把所有设备下的传感器控制器gps控件读取出来并且分类,是最关键的一步。
mainpanel处理subregion信息:
1、生成sensor、controller列表,传递给sensorpanel等。
2、激活实时信息的websockect传输,就是填上valSubject,这就解释了为什么刚打开不点区域的时候gps模块无数据。
sensor的工作
订阅websockect的valSubject,筛选出和自己的值一致的数据,更新。
总的GPS模块
我最初写的gps模块,目的是在一个图里展示这个账号下所有设备的位置信息,如果走mainpanel的话只能获得某一区域的gps
所以这个模块和regionpanel是同级的,都是订阅了websocket的attrSubject来直接获取的。attrSubject是靠regionpanel激活的
gpsService里的活:
先执行getGPSAttrFromWs()生成GPSList,再执行getRealTimeGPSDataFromWs(),筛选出实时信息里gps相关数据,发布到gps订阅号gpsSubject里。
gps-panel组件就干了一件事:
订阅gpsSubject,更新marker列表,marker每个device的都是唯一的,要根据deiviceId更新对应的marker。
新的GPS模块,根据区域显示Marker
1、把region传进gps模块,毕竟这个组件是可以复用的。
2、生成gps列表
3、根据gps列表找valSubject数据,更新自己的marker list
发现一件事:
public GPSList:GPS[] =[]
一定要赋值赋一个空集才能继续push!