activity.py (3565B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\activities\activity.py 2 import time 3 import localization 4 from eve.client.script.ui.shared.activities.activitiesUIConst import SHOW_LEFT_TIME_TEXT_SECONDS, ONE_DAY, ONE_HOUR, LABEL_LEFT_DAYS, LABEL_LEFT_HOURS, LABEL_LESS_HOURS 5 from eve.client.script.ui.shared.activities.bannerEvent import DoAction 6 from localization import GetByMessageID 7 import logging 8 logger = logging.getLogger(__file__) 9 10 class ReleasedActivity(object): 11 datetime_format = '%Y-%m-%d %H:%M' 12 13 def __init__(self, activityID, fsdData): 14 self.activityID = activityID 15 self.fsdData = fsdData 16 self.isForceShown = False 17 self.isUnseen = True 18 19 def SetSeen(self): 20 self.isUnseen = False 21 22 def IsUnseen(self): 23 return self.isUnseen 24 25 def GetID(self): 26 return self.activityID 27 28 def GetName(self): 29 return GetByMessageID(self.fsdData.nameID) 30 31 def GetIntroduce(self): 32 return GetByMessageID(self.fsdData.introduceID) 33 34 def GetInfo(self): 35 if self.fsdData.infoID: 36 return GetByMessageID(self.fsdData.infoID) 37 38 def GetTexturePath(self): 39 return self.fsdData.bannerPath 40 41 def GetIconPath(self): 42 return self.fsdData.iconPath 43 44 def GetStartDatetime(self): 45 return self.fsdData.startDatetime 46 47 def GetEndDatetime(self): 48 return self.fsdData.endDatetime 49 50 def GetIntegerParameter(self): 51 return self.fsdData.integerParameter 52 53 def GetUrl(self): 54 return self.fsdData.url 55 56 def GetIntegerListParameter(self): 57 return self.fsdData.integerListParameter 58 59 def GetRemainingSeconds(self): 60 endTime = time.mktime(time.strptime(self.GetEndDatetime(), self.datetime_format)) 61 nowTime = time.time() 62 return int(endTime - nowTime) 63 64 def _CalcDays(self, leftTime): 65 days = localization.formatters.FormatNumeric(leftTime // ONE_DAY) 66 return localization.GetByLabel(LABEL_LEFT_DAYS, days=days) 67 68 def _CalcHours(self, leftTime): 69 hours = localization.formatters.FormatNumeric(leftTime // ONE_HOUR) 70 return localization.GetByLabel(LABEL_LEFT_HOURS, hours=hours) 71 72 def _CalcLess(self, _): 73 hours = localization.formatters.FormatNumeric(1) 74 return localization.GetByLabel(LABEL_LESS_HOURS, hours=hours) 75 76 def _GetShowedText(self, leftTime): 77 if leftTime >= ONE_DAY: 78 text = self._CalcDays(leftTime) 79 elif leftTime >= ONE_HOUR: 80 text = self._CalcHours(leftTime) 81 else: 82 text = self._CalcLess(leftTime) 83 return text 84 85 def IsCountdownVisible(self): 86 leftTime = self.GetRemainingSeconds() 87 return leftTime <= SHOW_LEFT_TIME_TEXT_SECONDS 88 89 def GetTimeLeftText(self): 90 leftTime = self.GetRemainingSeconds() 91 return self.IsCountdownVisible() and self._GetShowedText(leftTime) or None 92 93 def IsVideo(self): 94 bannerPath = self.GetTexturePath() 95 if bannerPath.find('.') < 0: 96 return False 97 return bannerPath.split('.')[-1].lower() == 'webm' 98 99 def IsShown(self): 100 startTime = time.mktime(time.strptime(self.GetStartDatetime(), self.datetime_format)) 101 endTime = time.mktime(time.strptime(self.GetEndDatetime(), self.datetime_format)) 102 nowTime = time.time() 103 return startTime <= nowTime <= endTime 104 105 def GetEvent(self): 106 return self.fsdData.bannerEvent 107 108 def ExecuteCallToAction(self): 109 return DoAction(self)