00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 import time
00019 from objects.logic.common.globalStrings import globalStrings
00020 from objects.logic.common.logger import logger
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 class baseFilter():
00032 def __init__(self):
00033 self.minXferCheck = False
00034 self.minXfer = -1
00035
00036 self.maxIdleTimeCheck = False
00037 self.maxIdleTime = -1
00038
00039 self.lineZoomOption = "Always"
00040 self.lineZoomLevel = globalStrings.DISP_SETT_COUNTRY_STATE
00041
00042 self.labelZoomOption = "Always"
00043 self.labelZoomLevel = globalStrings.DISP_SETT_COUNTRY_STATE
00044
00045 self.filteredItems = []
00046
00047 zoomFactor = 0
00048
00049
00050 self.zoomRanking = dict()
00051
00052 self.zoomRanking[globalStrings.DISP_SETT_CITY] = 0
00053 self.zoomRanking[globalStrings.DISP_SETT_COUNTRY_STATE] = 1
00054 self.zoomRanking[globalStrings.DISP_SETT_CONTINENT] = 2
00055 self.zoomRanking[globalStrings.DISP_SETT_WORLDWIDE] = 3
00056
00057 self.initilized = False
00058
00059
00060
00061
00062
00063 def getUserFriendlyZoomLevel(self, zoomFactor):
00064
00065 if zoomFactor >= 8500000: return globalStrings.DISP_SETT_WORLDWIDE
00066 elif zoomFactor < 8500000 and zoomFactor >= 2000000: return globalStrings.DISP_SETT_CONTINENT
00067 elif zoomFactor < 2000000 and zoomFactor >= 500000: return globalStrings.DISP_SETT_COUNTRY_STATE
00068 else: return globalStrings.DISP_SETT_CITY
00069
00070
00071
00072
00073
00074 def shouldDisplayLines(self):
00075
00076 if self.lineZoomOption == "Always":
00077 return True
00078 elif self.lineZoomOption == "Never":
00079 return False
00080 else:
00081 try:
00082 currZoomRank = self.zoomRanking[self.getUserFriendlyZoomLevel(self.zoomFactor)]
00083 settingLineZoomRank = self.zoomRanking[ self.lineZoomLevel]
00084 except Exception, ex:
00085
00086 errMsg = ": Could not determine Line zoom ranking (Defaulting). Error: %s" % (ex)
00087 logger.log(__name__ + errMsg)
00088
00089 return True
00090 else:
00091 if currZoomRank <= settingLineZoomRank:
00092 return True
00093 else:
00094 return False
00095
00096
00097
00098
00099 def shouldDisplayLabels(self):
00100
00101 if self.labelZoomOption == "Always":
00102 return True
00103 elif self.labelZoomOption == "Never":
00104 return False
00105 else:
00106 try:
00107 currZoomRank = self.zoomRanking[self.getUserFriendlyZoomLevel(self.zoomFactor)]
00108 settingLabelZoomRank = self.zoomRanking[ self.labelZoomLevel]
00109 except Exception, ex:
00110
00111 errMsg = ": Could not determine Label zoom ranking (Defaulting). Error: %s" % (ex)
00112 logger.log(__name__ + errMsg)
00113
00114 return True
00115 else:
00116 if currZoomRank <= settingLabelZoomRank:
00117 return True
00118 else:
00119 return False
00120
00121
00122
00123
00124 def shouldDisplayEntity(self, networkEntity):
00125
00126 if self.initilized == False:
00127 return False
00128
00129 if self.minXferCheck == True:
00130 ajdXfer = float(networkEntity.totalBytes)/float(self.minXferScale)
00131 if ajdXfer < self.minXfer:
00132 return False
00133
00134 if self.maxIdleTimeCheck == True:
00135 ts = time.time()
00136
00137 deltaTime = (ts - networkEntity.lastUpdateTS) / self.idleTimeScale
00138 if deltaTime > self.maxIdleTime:
00139 return False
00140
00141
00142 return True
00143
00144
00145
00146
00147
00148
00149 def setFromDisplayConfig(self, config, zoomFactor):
00150
00151 self.zoomFactor = zoomFactor
00152
00153 self.minXferCheck, self.minXfer, self.minXferScale = config.glb_getMinXferOptions()
00154 self.maxIdleTimeCheck, self.maxIdleTime, self.idleTimeScale = config.glb_getMaxIdleOptions()
00155
00156 self.lineZoomOption, self.lineZoomLevel = config.glb_getLineOptions()
00157 self.labelZoomOption, self.labelZoomLevel = config.glb_getLabelOptions()
00158
00159
00160 self.initilized = True
00161
00162