コード例 #1
0
 def __getStatsVO(self):
     notActual = self.__ratings.getFbBattlesCount28d() <= 0
     hasFortRating = self.__ratings.hasFortRating()
     if self.__fortLevel is None:
         self.__getFortLevel()
     if not hasFortRating:
         if self.__fortLevel is None:
             fortInfo = (False, CLANS.CLANPROFILE_SUMMARYVIEW_BLOCKLBL_HASNOBATTLES)
         elif self.__fortLevel > 0:
             fortInfo = (True, 0)
         else:
             fortInfo = (False, CLANS.CLANPROFILE_SUMMARYVIEW_BLOCKLBL_EMPTYFORT)
     else:
         fortInfo = (True, '')
     return ([{'local': 'rageLevel10',
        'value': formatField(getter=self.__ratings.getEloRating10, formatter=BigWorld.wg_getIntegralFormat),
        'timeExpired': notActual,
        'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_ELO_RAGE_10_BODY},
       {'local': 'rageLevel8',
        'value': formatField(getter=self.__ratings.getEloRating8, formatter=BigWorld.wg_getIntegralFormat),
        'timeExpired': notActual,
        'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_ELO_RAGE_8_BODY},
       {'local': 'sortiesPerDay',
        'value': formatField(getter=self.__ratings.getFsBattlesCount28d, formatter=BigWorld.wg_getIntegralFormat),
        'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_SORTIE_COUNT_28_BODY},
       {'local': 'battlesPerDay',
        'value': formatField(getter=self.__ratings.getFbBattlesCount28d, formatter=BigWorld.wg_getIntegralFormat),
        'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_BATTLES_COUNT_28_BODY},
       {'local': 'fortLevel',
        'value': self.__fortLevelStr,
        'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_LEVEL_BODY}], fortInfo)
コード例 #2
0
 def __makeGlobalMapBlock(self, globalMapStats, ratings):
     hasGlobalMap = globalMapStats.hasGlobalMap()
     if hasGlobalMap:
         notActual = ratings.getGlobalMapBattlesFor28Days() <= 0
         stats = [{'local': 'rageLevel10',
           'value': formatField(getter=ratings.getGlobalMapEloRating10, formatter=BigWorld.wg_getIntegralFormat),
           'timeExpired': notActual,
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_ELO_RAGE_10_BODY},
          {'local': 'rageLevel8',
           'value': formatField(getter=ratings.getGlobalMapEloRating8, formatter=BigWorld.wg_getIntegralFormat),
           'timeExpired': notActual,
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_ELO_RAGE_8_BODY},
          {'local': 'rageLevel6',
           'value': formatField(getter=ratings.getGlobalMapEloRating6, formatter=BigWorld.wg_getIntegralFormat),
           'timeExpired': notActual,
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_ELO_RAGE_6_BODY},
          {'local': 'battlesCount',
           'value': formatField(getter=ratings.getGlobalMapBattlesFor28Days, formatter=BigWorld.wg_getIntegralFormat),
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_BATTLES_COUNT_BODY},
          {'local': 'provinces',
           'value': formatField(getter=globalMapStats.getCurrentProvincesCount, formatter=BigWorld.wg_getIntegralFormat),
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_PROVINCE_BODY}]
         statsBlock = self.__makeStatsBlock(stats)
         emptyLbl = ''
     else:
         statsBlock = ()
         if isValueAvailable(globalMapStats.hasGlobalMap):
             emptyLbl = text_styles.standard(CLANS.CLANPROFILE_SUMMARYVIEW_BLOCKLBL_EMPTYGLOBALMAP)
         else:
             emptyLbl = '%s %s' % (icons.alert(), text_styles.standard(CLANS.CLANPROFILE_SUMMARYVIEW_NODATA))
     return {'isShowHeader': True,
      'header': text_styles.highTitle(CLANS.CLANPROFILE_MAINWINDOWTAB_GLOBALMAP),
      'statBlocks': statsBlock,
      'emptyLbl': emptyLbl,
      'isActivated': hasGlobalMap}
コード例 #3
0
 def _makeVO(self, item):
     vo = {
         'players':
         text_styles.main(str(item.getMembersCount())),
         'creationDate':
         text_styles.main(
             formatField(getter=item.getCreationDate,
                         formatter=BigWorld.wg_getShortDateFormat)),
         'rating':
         text_styles.stats(
             formatField(getter=item.getPersonalRating,
                         formatter=BigWorld.wg_getIntegralFormat)),
         'arrowIcon':
         RES_ICONS.MAPS_ICONS_LIBRARY_ARROWORANGERIGHTICON8X8,
         'clanInfo': {
             'dbID': item.getClanDbID(),
             'clanAbbrev': formatField(getter=item.getClanAbbrev),
             'clanName': formatField(getter=item.getClanName),
             'fullName': formatField(getter=item.getClanFullName),
             'isActive': item.isClanActive(),
             'showIcon': True,
             'iconSource': None
         }
     }
     return vo
コード例 #4
0
 def __makeGlobalMapBlock(self, globalMapStats, ratings):
     hasGlobalMap = globalMapStats.hasGlobalMap()
     if hasGlobalMap:
         notActual = ratings.getGlobalMapBattlesFor28Days() <= 0
         stats = [{'local': 'rageLevel10',
           'value': formatField(getter=ratings.getGlobalMapEloRating10, formatter=BigWorld.wg_getIntegralFormat),
           'timeExpired': notActual,
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_ELO_RAGE_10_BODY},
          {'local': 'rageLevel8',
           'value': formatField(getter=ratings.getGlobalMapEloRating8, formatter=BigWorld.wg_getIntegralFormat),
           'timeExpired': notActual,
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_ELO_RAGE_8_BODY},
          {'local': 'rageLevel6',
           'value': formatField(getter=ratings.getGlobalMapEloRating6, formatter=BigWorld.wg_getIntegralFormat),
           'timeExpired': notActual,
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_ELO_RAGE_6_BODY},
          {'local': 'battlesCount',
           'value': formatField(getter=ratings.getGlobalMapBattlesFor28Days, formatter=BigWorld.wg_getIntegralFormat),
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_BATTLES_COUNT_BODY},
          {'local': 'provinces',
           'value': formatField(getter=globalMapStats.getCurrentProvincesCount, formatter=BigWorld.wg_getIntegralFormat),
           'tooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_GMAP_PROVINCE_BODY}]
         statsBlock = self.__makeStatsBlock(stats)
         emptyLbl = ''
     else:
         statsBlock = ()
         if isValueAvailable(globalMapStats.hasGlobalMap):
             emptyLbl = text_styles.standard(CLANS.CLANPROFILE_SUMMARYVIEW_BLOCKLBL_EMPTYGLOBALMAP)
         else:
             emptyLbl = '%s %s' % (icons.alert(), text_styles.standard(CLANS.CLANPROFILE_SUMMARYVIEW_NODATA))
     return {'isShowHeader': True,
      'header': text_styles.highTitle(CLANS.CLANPROFILE_MAINWINDOWTAB_GLOBALMAP),
      'statBlocks': statsBlock,
      'emptyLbl': emptyLbl,
      'isActivated': hasGlobalMap}
コード例 #5
0
def _getLevelParams(i18nFunc, battlesCountGetter, winsEfficiencyGetter, eloRatingGetter, placeGetter, favArenaNameGetter, ratingOutdated):
    battlesCount = formatField(getter=battlesCountGetter, formatter=BigWorld.wg_getIntegralFormat)
    winsEfficiency = formatField(getter=winsEfficiencyGetter, formatter=lambda x: PUtils.formatFloatPercent(x))
    eloRating = formatField(getter=eloRatingGetter, formatter=BigWorld.wg_getIntegralFormat)
    place = formatField(getter=placeGetter, formatter=BigWorld.wg_getIntegralFormat)
    favArenaName = formatField(getter=favArenaNameGetter, formatter=lambda x: getI18ArenaById(getArenaGeomentryName(x)))
    return [_getDataObject('battles', i18nFunc, battlesCount),
     _getDataObject('wins', i18nFunc, winsEfficiency),
     _getDataObject('eloRating', i18nFunc, eloRating),
     _getDataObject('place', i18nFunc, place, ratingOutdated),
     _getDataObjectTruncatedValue('favoriteMap', i18nFunc, favArenaName)]
コード例 #6
0
def _getLevelParams(i18nFunc, battlesCountGetter, winsEfficiencyGetter, eloRatingGetter, placeGetter, favArenaNameGetter, ratingOutdated):
    battlesCount = formatField(getter=battlesCountGetter, formatter=backport.getIntegralFormat)
    winsEfficiency = formatField(getter=winsEfficiencyGetter, formatter=PUtils.formatFloatPercent)
    eloRating = formatField(getter=eloRatingGetter, formatter=backport.getIntegralFormat)
    place = formatField(getter=placeGetter, formatter=backport.getIntegralFormat)
    favArenaName = formatField(getter=favArenaNameGetter, formatter=getI18ArenaById)
    return [_getDataObject('battles', i18nFunc, battlesCount),
     _getDataObject('wins', i18nFunc, winsEfficiency),
     _getDataObject('eloRating', i18nFunc, eloRating),
     _getDataObject('place', i18nFunc, place, ratingOutdated),
     _getDataObjectTruncatedValue('favoriteMap', i18nFunc, favArenaName)]
コード例 #7
0
 def _makeVO(self, item, extraData):
     return {'dbID': item.getDbID(),
      'userInfo': {'userName': item.getAccountName(),
                   'dbID': item.getAccountDbID()},
      'personalRating': formatField(getter=item.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat),
      'battlesCount': formatField(getter=item.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat),
      'wins': formatField(getter=item.getBattlesPerformanceAvg, formatter=lambda value: BigWorld.wg_getNiceNumberFormat(value) + '%'),
      'awgExp': formatField(getter=item.getBattleXpAvg, formatter=BigWorld.wg_getIntegralFormat),
      'status': {'text': self._makeInviteStateString(item),
                 'tooltip': self._makeTooltip(body=self._makeRequestTooltip(status=item.getStatus(), user=formatField(getter=item.getChangerName), date=formatField(getter=item.getUpdatedAt, formatter=formatters.formatShortDateShortTimeString)))},
      'canShowContextMenu': True,
      'messageTooltip': self._makeTooltip(body=item.getComment() if isValueAvailable(getter=item.getComment) else str()),
      'actions': self.__buildActionsSection(item.getStatus())}
コード例 #8
0
 def _makeVO(self, item):
     vo = {'players': text_styles.main(str(item.getMembersCount())),
      'creationDate': text_styles.main(formatField(getter=item.getCreationDate, formatter=BigWorld.wg_getShortDateFormat)),
      'rating': text_styles.stats(formatField(getter=item.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat)),
      'arrowIcon': RES_ICONS.MAPS_ICONS_LIBRARY_ARROWORANGERIGHTICON8X8,
      'clanInfo': {'dbID': item.getClanDbID(),
                   'clanAbbrev': formatField(getter=item.getClanAbbrev),
                   'clanName': formatField(getter=item.getClanName),
                   'fullName': formatField(getter=item.getClanFullName),
                   'isActive': item.isClanActive(),
                   'showIcon': True,
                   'iconSource': None}}
     return vo
コード例 #9
0
 def _makeVO(self, item, extraData):
     return {'dbID': item.getDbID(),
      'userInfo': {'userName': item.getAccountName(),
                   'dbID': item.getAccountDbID()},
      'personalRating': formatField(getter=item.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat),
      'battlesCount': formatField(getter=item.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat),
      'wins': formatField(getter=item.getBattlesPerformanceAvg, formatter=lambda value: BigWorld.wg_getNiceNumberFormat(value) + '%'),
      'awgExp': formatField(getter=item.getBattleXpAvg, formatter=BigWorld.wg_getIntegralFormat),
      'status': {'text': self._makeInviteStateString(item),
                 'tooltip': self._makeTooltip(body=self._makeRequestTooltip(status=item.getStatus(), user=formatField(getter=item.getChangerName), date=formatField(getter=item.getUpdatedAt, formatter=formatters.formatShortDateShortTimeString)))},
      'canShowContextMenu': True,
      'messageTooltip': self._makeTooltip(body=item.getComment() if isValueAvailable(getter=item.getComment) else str()),
      'actions': self.__buildActionsSection(item.getStatus())}
コード例 #10
0
 def _updateDetailedInfo(self):
     clanID = self.__selectedClan.getClanDbID()
     clanName = formatField(self.__selectedClan.getClanFullName)
     rating = formatField(getter=self.__selectedClan.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat)
     battlesCount = formatField(getter=self.__selectedClan.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat)
     wins = formatField(getter=self.__selectedClan.getBattleXpAvg, formatter=lambda value: BigWorld.wg_getNiceNumberFormat(value) + '%')
     avgExp = formatField(getter=self.__selectedClan.getBattlesPerformanceAvg, formatter=BigWorld.wg_getIntegralFormat)
     stats = [_packItemData(battlesCount, CLANS.SEARCH_INFO_STATS_BATTLES, CLANS.SEARCH_INFO_STATS_BATTLES_TOOLTIP, 'avgBattlesCount40x32.png'), _packItemData(wins, CLANS.SEARCH_INFO_STATS_WINS, CLANS.SEARCH_INFO_STATS_WINS_TOOLTIP, 'avgWins40x32.png'), _packItemData(avgExp, CLANS.SEARCH_INFO_STATS_AVGEXP, CLANS.SEARCH_INFO_STATS_AVGEXP_TOOLTIP, 'avgExp40x32.png')]
     self.as_setDataS({'clanId': clanID,
      'clanName': clanName,
      'ratingTitle': text_styles.main(CLANS.SEARCH_INFO_RATINGTITLE),
      'rating': text_styles.promoTitle(rating),
      'stats': stats})
コード例 #11
0
 def _updateClanInfo(self, clanInfo):
     creationDate = i18n.makeString(
         CLANS.CLAN_HEADER_CREATIONDATE,
         creationDate=items.formatField(
             getter=clanInfo.getCreatedAt,
             formatter=backport.getShortDateFormat))
     self.as_setClanInfoS({
         'name':
         items.formatField(getter=clanInfo.getFullName),
         'bgIcon':
         RES_ICONS.MAPS_ICONS_CLANS_CLAN_CARD_HEADER,
         'creationDate':
         creationDate
     })
コード例 #12
0
 def setClanDossier(self, clanDossier):
     super(ClanProfileSummaryView, self).setClanDossier(clanDossier)
     self._showWaiting()
     clanInfo = yield clanDossier.requestClanInfo()
     if not clanInfo.isValid():
         self._dummyMustBeShown = True
         self._updateDummy()
         self._hideWaiting()
         return
     ratings = yield clanDossier.requestClanRatings()
     globalMapStats = yield clanDossier.requestGlobalMapStats()
     if self.isDisposed():
         return
     self._updateClanInfo(clanInfo)
     ratingStrBuilder = text_styles.builder(delimiter='\n')
     ratingStrBuilder.addStyledText(text_styles.promoTitle, formatField(getter=ratings.getEfficiency, formatter=BigWorld.wg_getIntegralFormat))
     ratingStrBuilder.addStyledText(text_styles.stats, CLANS.CLANPROFILE_SUMMARYVIEW_TOTALRAGE)
     motto = clanInfo.getMotto()
     if motto:
         description = text_styles.main(motto)
     else:
         description = text_styles.standard(CLANS.CLANPROFILE_SUMMARYVIEW_DEFAULTCLANDESCR)
     hasGlobalMap = globalMapStats.hasGlobalMap()
     self.as_setDataS({'totalRating': ratingStrBuilder.render(),
      'totalRatingTooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_TOTALRATING,
      'clanDescription': description,
      'isShowFortBtn': True,
      'isShowClanNavBtn': hasGlobalMap,
      'isShowUrlString': not hasGlobalMap})
     self.as_updateGeneralBlockS(self.__makeGeneralBlock(clanInfo, syncUserInfo=True))
     self.__strongholdStatsVOReceiver = StrongholdDataReceiver(clanDossier, self.__updateStrongholdBlock)
     self.__strongholdStatsVOReceiver.updateStrongholdStatistics()
     self.as_updateGlobalMapBlockS(self.__makeGlobalMapBlock(globalMapStats, ratings))
     self.__updateStatus()
     self._hideWaiting()
コード例 #13
0
 def _updateHeaderState(self):
     freePlaces = self.clanInfo.getFreePlaces()
     freePlacesInClanText = text_styles.concatStylesToSingleLine(
         text_styles.standard(
             _ms(CLANS.CLANINVITESWINDOW_HEADER_FREEPLACESINCLAN,
                 count=text_styles.main(
                     formatField(getter=self.clanInfo.getFreePlaces)))))
     if freePlaces == 0:
         inviteButtonEnabled = False
         inviteButtonTooltip = _ms(
             CLANS.CLANINVITESWINDOW_HEADER_TOOLTIPS_NOPLACES)
         freePlacesInClanText = gui.makeHtmlString(
             'html_templates:lobby/research', 'warningMessage',
             {'text': freePlacesInClanText})
     else:
         inviteButtonEnabled = True
         inviteButtonTooltip = _ms(
             CLANS.CLANINVITESWINDOW_TOOLTIPS_HEADER_INVITEBUTTON)
     self.as_setHeaderStateS({
         'inviteButtonEnabled':
         inviteButtonEnabled,
         'inviteButtonText':
         CLANS.CLANINVITESWINDOW_HEADER_INVITEINCLAN,
         'inviteButtonTooltip':
         makeTooltip(body=inviteButtonTooltip),
         'freePlacesInClanText':
         freePlacesInClanText
     })
コード例 #14
0
 def __makeGeneralBlock(self, clanInfo, syncUserInfo = False):
     stats = [{'local': 'commander',
       'value': formatField(getter=clanInfo.getLeaderDbID, formatter=self.getGuiUserName),
       'textStyle': _STYLE.STATS_TEXT}, {'local': 'totalPlayers',
       'value': formatField(getter=clanInfo.getMembersCount, formatter=BigWorld.wg_getIntegralFormat)}]
     canSeeTreasury = self.clansCtrl.getLimits().canSeeTreasury(self._clanDossier)
     if canSeeTreasury.success:
         stats.append({'local': 'gold',
          'value': formatField(getter=clanInfo.getTreasuryValue, formatter=BigWorld.wg_getIntegralFormat),
          'icon': RES_ICONS.MAPS_ICONS_LIBRARY_GOLDICON_2})
     if syncUserInfo:
         self.syncUsersInfo()
     return {'isShowHeader': False,
      'header': '',
      'statBlocks': self.__makeStatsBlock(stats),
      'isActivated': True}
コード例 #15
0
 def __makeGeneralBlock(self, clanInfo, syncUserInfo = False):
     stats = [{'local': 'commander',
       'value': formatField(getter=clanInfo.getLeaderDbID, formatter=self.getGuiUserName),
       'textStyle': _STYLE.STATS_TEXT}, {'local': 'totalPlayers',
       'value': formatField(getter=clanInfo.getMembersCount, formatter=BigWorld.wg_getIntegralFormat)}]
     canSeeTreasury = self.clansCtrl.getLimits().canSeeTreasury(self._clanDossier)
     if canSeeTreasury.success:
         stats.append({'local': 'gold',
          'value': formatField(getter=clanInfo.getTreasuryValue, formatter=BigWorld.wg_getIntegralFormat),
          'icon': RES_ICONS.MAPS_ICONS_LIBRARY_GOLDICON_2})
     if syncUserInfo:
         self.syncUsersInfo()
     return {'isShowHeader': False,
      'header': '',
      'statBlocks': self.__makeStatsBlock(stats),
      'isActivated': True}
コード例 #16
0
 def setClanDossier(self, clanDossier):
     super(ClanProfileSummaryView, self).setClanDossier(clanDossier)
     self._showWaiting()
     clanInfo = yield clanDossier.requestClanInfo()
     ratings = yield clanDossier.requestClanRatings()
     globalMapStats = yield clanDossier.requestGlobalMapStats()
     if self.isDisposed():
         return
     self._updateClanInfo(clanInfo)
     ratingStrBuilder = text_styles.builder(delimiter='\n')
     ratingStrBuilder.addStyledText(text_styles.promoTitle, formatField(getter=ratings.getEfficiency, formatter=BigWorld.wg_getIntegralFormat))
     ratingStrBuilder.addStyledText(text_styles.stats, CLANS.CLANPROFILE_SUMMARYVIEW_TOTALRAGE)
     motto = clanInfo.getMotto()
     if motto:
         description = text_styles.main(motto)
     else:
         description = text_styles.standard(CLANS.CLANPROFILE_SUMMARYVIEW_DEFAULTCLANDESCR)
     hasGlobalMap = globalMapStats.hasGlobalMap()
     self.as_setDataS({'totalRating': ratingStrBuilder.render(),
      'totalRatingTooltip': CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_TOTALRATING,
      'clanDescription': description,
      'isShowFortBtn': True,
      'isShowClanNavBtn': hasGlobalMap,
      'isShowUrlString': not hasGlobalMap})
     self.as_updateGeneralBlockS(self.__makeGeneralBlock(clanInfo, syncUserInfo=True))
     if clanDossier.isMyClan():
         self.__fortStatsVOReceiver = _MyFortDataReceiver(ratings, clanDossier, self.__updateFortBlock)
     else:
         self.__fortStatsVOReceiver = _FortDataReceiver(ratings, clanDossier, self.__updateFortBlock)
     self.as_updateGlobalMapBlockS(self.__makeGlobalMapBlock(globalMapStats, ratings))
     self.__updateStatus()
     self._hideWaiting()
コード例 #17
0
 def setProxy(self, proxy, clanDossier):
     self._proxy = weakref.proxy(proxy)
     self._clanDossier = clanDossier
     proxy.showWaiting()
     globalMapStats = yield clanDossier.requestGlobalMapStats()
     ratings = yield clanDossier.requestClanRatings()
     favouriteAttrs = yield clanDossier.requestFavouriteAttributes()
     if self.isDisposed():
         return
     primeTime = items.formatField(
         getter=favouriteAttrs.getFavoritePrimetime,
         formatter=lambda x: BigWorld.wg_getShortTimeFormat(
             x.hour * time_utils.ONE_HOUR + x.minute * time_utils.ONE_MINUTE
         ))
     primeTime = text_styles.standard(
         _ms(CLANS.GLOBALMAPVIEW_POPULARPRIMETIME,
             time=text_styles.main(primeTime)))
     data = FortGlobalMapStatistics({
         'stats': globalMapStats,
         'ratings': ratings,
         'favouriteAttrs': favouriteAttrs
     })
     data['primeTimeText'] = primeTime
     self.as_setDataS(data)
     proxy.hideWaiting()
コード例 #18
0
 def _makeVO(self, item, extraData):
     isChecked = extraData['checked']
     status = item.getStatus()
     outcome = {
         'dbID':
         item.getDbID(),
         'checked':
         isChecked,
         'clanVO': {
             'fullName': formatField(getter=item.getClanFullName),
             'clanName': formatField(getter=item.getClanName),
             'clanAbbrev': formatField(getter=item.getClanAbbrev),
             'dbID': item.getClanDbID(),
             'isActive': item.isClanActive()
         },
         'personalRating':
         formatField(getter=item.getPersonalRating,
                     formatter=BigWorld.wg_getIntegralFormat),
         'battlesCount':
         formatField(getter=item.getBattlesCount,
                     formatter=BigWorld.wg_getIntegralFormat),
         'wins':
         formatField(getter=item.getBattleXpAvg,
                     formatter=lambda value: BigWorld.
                     wg_getNiceNumberFormat(value) + '%'),
         'awgExp':
         formatField(getter=item.getBattlesPerformanceAvg,
                     formatter=BigWorld.wg_getIntegralFormat),
         'status': {
             'text':
             self._makeInviteStateString(item),
             'tooltip':
             self._makeTooltip(body=self._makeRequestTooltip(
                 status=item.getStatus(),
                 user=formatField(getter=item.getSenderName),
                 date=formatField(
                     getter=item.getUpdatedAt,
                     formatter=formatters.formatShortDateShortTimeString)))
         },
         'enabled':
         status == CLAN_INVITE_STATES.ACTIVE
         or status == CLAN_INVITE_STATES.ERROR,
         'canShowContextMenu':
         True,
         'messageTooltip':
         self._makeTooltip(
             body=escape(item.getComment()) if isValueAvailable(
                 getter=item.getComment) else str()),
         'actions':
         self.__buildActionsSection(item.getStatus())
     }
     return outcome
コード例 #19
0
 def _getHeaderData(self, data):
     stats = data['stats']
     return (PUtils.packLditItemData(
         formatField(getter=stats.getBattlesCount,
                     formatter=BigWorld.wg_getIntegralFormat),
         CL.GLOBALMAPVIEW_STATS_BATTLES,
         CL.GLOBALMAPVIEW_STATS_BATTLES_TOOLTIP, 'battles40x32.png'),
             PUtils.packLditItemData(
                 formatField(getter=stats.getWinsEfficiency,
                             formatter=PUtils.formatFloatPercent),
                 CL.GLOBALMAPVIEW_STATS_WINS,
                 CL.GLOBALMAPVIEW_STATS_WINS_TOOLTIP, 'wins40x32.png'),
             PUtils.packLditItemData(
                 formatField(getter=stats.getCapturedProvincesCount,
                             formatter=BigWorld.wg_getIntegralFormat),
                 CL.GLOBALMAPVIEW_STATS_SEIZED,
                 CL.GLOBALMAPVIEW_STATS_SEIZED_TOOLTIP,
                 'seizedProvinces40x32.png'))
コード例 #20
0
 def __formatActiveStateString(self, item):
     if not isValueAvailable(getter=item.getCreatedAt):
         return _ms(CLANS.CLANINVITESWINDOW_STATUS_MINUTESLEFT, min=formatField(getter=item.getCreatedAt))
     createdAt = item.getCreatedAt()
     delta = time_utils.getTimeDeltaFromNow(createdAt + ACTIVE_INVITE_LIFE_TIME)
     if delta >= time_utils.ONE_DAY:
         state = _ms(CLANS.CLANINVITESWINDOW_STATUS_DAYSLEFT, days=int(math.ceil(float(delta) / time_utils.ONE_DAY)))
     elif delta >= time_utils.ONE_HOUR:
         state = _ms(CLANS.CLANINVITESWINDOW_STATUS_HOURSLEFT, hours=int(math.ceil(float(delta) / time_utils.ONE_HOUR)))
     else:
         mins = max(1, int(delta / time_utils.ONE_MINUTE))
         state = _ms(CLANS.CLANINVITESWINDOW_STATUS_MINUTESLEFT, min=mins)
     return state
コード例 #21
0
 def __formatActiveStateString(self, item):
     if not isValueAvailable(getter=item.getCreatedAt):
         return _ms(CLANS.CLANINVITESWINDOW_STATUS_MINUTESLEFT, min=formatField(getter=item.getCreatedAt))
     createdAt = item.getCreatedAt()
     delta = time_utils.getTimeDeltaFromNow(createdAt + ACTIVE_INVITE_LIFE_TIME)
     if delta >= time_utils.ONE_DAY:
         state = _ms(CLANS.CLANINVITESWINDOW_STATUS_DAYSLEFT, days=int(math.ceil(float(delta) / time_utils.ONE_DAY)))
     elif delta >= time_utils.ONE_HOUR:
         state = _ms(CLANS.CLANINVITESWINDOW_STATUS_HOURSLEFT, hours=int(math.ceil(float(delta) / time_utils.ONE_HOUR)))
     else:
         mins = max(1, int(delta / time_utils.ONE_MINUTE))
         state = _ms(CLANS.CLANINVITESWINDOW_STATUS_MINUTESLEFT, min=mins)
     return state
コード例 #22
0
 def _makeVO(self, province):
     isRobbed = self.__isRobbed(province)
     result = {
         'front':
         '%s %s' %
         (self.__getFront(province),
          text_styles.standard(
              formatField(province.getFrontLevel,
                          formatter=fort_formatters.getTextLevel))),
         'province':
         self.__getProvinceName(province),
         'map':
         self.__getMap(province),
         'primeTime':
         text_styles.main(province.getUserPrimeTime()),
         'days':
         text_styles.main(
             BigWorld.wg_getIntegralFormat(self.__getDays(province))),
         'isRobbed':
         isRobbed
     }
     if isRobbed:
         restoreTime = province.getPillageEndDatetime()
         result.update({
             'robbedTooltip':
             makeTooltip(
                 None,
                 text_styles.concatStylesToMultiLine(
                     text_styles.main(
                         _ms(CLANS.
                             GLOBALMAPVIEW_TABLE_PROVINCEROBBED_TOOLTIP_NOINCOME
                             )),
                     text_styles.neutral(
                         _ms(CLANS.
                             GLOBALMAPVIEW_TABLE_PROVINCEROBBED_TOOLTIP_RESTORETIME,
                             date=text_styles.main(
                                 formatters.formatShortDateShortTimeString(
                                     restoreTime))))))
         })
     if self.__showTreasuryData:
         result.update({
             'income':
             text_styles.gold(
                 BigWorld.wg_getIntegralFormat(self.__getIncome(province))),
             'noIncomeIconVisible':
             not province.isHqConnected() or isRobbed,
             'noIncomeTooltip':
             CLANS.GLOBALMAPVIEW_NOINCOME_TOOLTIP
         })
     return result
コード例 #23
0
 def setProxy(self, proxy, clanDossier):
     self._proxy = weakref.proxy(proxy)
     self._clanDossier = clanDossier
     proxy.showWaiting()
     globalMapStats = yield clanDossier.requestGlobalMapStats()
     ratings = yield clanDossier.requestClanRatings()
     favouriteAttrs = yield clanDossier.requestFavouriteAttributes()
     if self.isDisposed():
         return
     primeTime = items.formatField(getter=favouriteAttrs.getFavoritePrimetime, formatter=lambda x: BigWorld.wg_getShortTimeFormat(x.hour * time_utils.ONE_HOUR + x.minute * time_utils.ONE_MINUTE))
     primeTime = text_styles.standard(_ms(CLANS.GLOBALMAPVIEW_POPULARPRIMETIME, time=text_styles.main(primeTime)))
     data = FortGlobalMapStatistics({'stats': globalMapStats,
      'ratings': ratings,
      'favouriteAttrs': favouriteAttrs})
     data['primeTimeText'] = primeTime
     self.as_setDataS(data)
     proxy.hideWaiting()
コード例 #24
0
 def _makeVO(self, item, extraData):
     isChecked = extraData["checked"]
     status = item.getStatus()
     outcome = {
         "dbID": item.getDbID(),
         "checked": isChecked,
         "clanVO": {
             "fullName": formatField(getter=item.getClanFullName),
             "clanName": formatField(getter=item.getClanName),
             "clanAbbrev": formatField(getter=item.getClanAbbrev),
             "dbID": item.getClanDbID(),
             "isActive": item.isClanActive(),
         },
         "personalRating": formatField(getter=item.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat),
         "battlesCount": formatField(getter=item.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat),
         "wins": formatField(
             getter=item.getBattleXpAvg, formatter=lambda value: BigWorld.wg_getNiceNumberFormat(value) + "%"
         ),
         "awgExp": formatField(getter=item.getBattlesPerformanceAvg, formatter=BigWorld.wg_getIntegralFormat),
         "status": {
             "text": self._makeInviteStateString(item),
             "tooltip": self._makeTooltip(
                 body=self._makeRequestTooltip(
                     status=item.getStatus(),
                     user=formatField(getter=item.getSenderName),
                     date=formatField(getter=item.getUpdatedAt, formatter=formatters.formatShortDateShortTimeString),
                 )
             ),
         },
         "enabled": status == CLAN_INVITE_STATES.ACTIVE or status == CLAN_INVITE_STATES.ERROR,
         "canShowContextMenu": True,
         "messageTooltip": self._makeTooltip(
             body=escape(item.getComment()) if isValueAvailable(getter=item.getComment) else str()
         ),
         "actions": self.__buildActionsSection(item.getStatus()),
     }
     return outcome
コード例 #25
0
 def _updateDetailedInfo(self):
     clanID = self.__selectedClan.getClanDbID()
     clanName = formatField(self.__selectedClan.getClanFullName)
     creationDate = formatField(getter=self.__selectedClan.getCreationDate, formatter=BigWorld.wg_getShortDateFormat)
     rating = formatField(getter=self.__selectedClan.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat)
     battlesCount = formatField(getter=self.__selectedClan.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat)
     wins = formatField(getter=self.__selectedClan.getBattleXpAvg, formatter=lambda value: BigWorld.wg_getNiceNumberFormat(value) + '%')
     avgExp = formatField(getter=self.__selectedClan.getBattlesPerformanceAvg, formatter=BigWorld.wg_getIntegralFormat)
     stats = [_packItemData(battlesCount, CLANS.SEARCH_INFO_STATS_BATTLES, CLANS.SEARCH_INFO_STATS_BATTLES_TOOLTIP, 'avgBattlesCount40x32.png'), _packItemData(wins, CLANS.SEARCH_INFO_STATS_WINS, CLANS.SEARCH_INFO_STATS_WINS_TOOLTIP, 'avgWins40x32.png'), _packItemData(avgExp, CLANS.SEARCH_INFO_STATS_AVGEXP, CLANS.SEARCH_INFO_STATS_AVGEXP_TOOLTIP, 'avgExp40x32.png')]
     self.as_setDataS({'clanId': clanID,
      'clanName': clanName,
      'creationDate': text_styles.main(_ms(CLANS.SEARCH_INFO_CREATIONDATE, date=creationDate)),
      'rating': text_styles.promoTitle(rating),
      'stats': stats})
コード例 #26
0
 def _makeVO(self, province):
     isRobbed = self.__isRobbed(province)
     result = {
         "front": "%s %s"
         % (
             self.__getFront(province),
             text_styles.standard(formatField(province.getFrontLevel, formatter=fort_formatters.getTextLevel)),
         ),
         "province": self.__getProvinceName(province),
         "map": self.__getMap(province),
         "primeTime": text_styles.main(province.getUserPrimeTime()),
         "days": text_styles.main(BigWorld.wg_getIntegralFormat(self.__getDays(province))),
         "isRobbed": isRobbed,
     }
     if isRobbed:
         restoreTime = province.getPillageEndDatetime()
         result.update(
             {
                 "robbedTooltip": makeTooltip(
                     None,
                     text_styles.concatStylesToMultiLine(
                         text_styles.main(_ms(CLANS.GLOBALMAPVIEW_TABLE_PROVINCEROBBED_TOOLTIP_NOINCOME)),
                         text_styles.neutral(
                             _ms(
                                 CLANS.GLOBALMAPVIEW_TABLE_PROVINCEROBBED_TOOLTIP_RESTORETIME,
                                 date=text_styles.main(formatters.formatShortDateShortTimeString(restoreTime)),
                             )
                         ),
                     ),
                 )
             }
         )
     if self.__showTreasuryData:
         result.update(
             {
                 "income": text_styles.gold(BigWorld.wg_getIntegralFormat(self.__getIncome(province))),
                 "noIncomeIconVisible": not province.isHqConnected() or isRobbed,
                 "noIncomeTooltip": CLANS.GLOBALMAPVIEW_NOINCOME_TOOLTIP,
             }
         )
     return result
コード例 #27
0
 def _makeVO(self, item, extraData):
     isChecked = extraData['checked']
     status = item.getStatus()
     outcome = {'dbID': item.getDbID(),
      'checked': isChecked,
      'clanVO': {'fullName': formatField(getter=item.getClanFullName),
                 'clanName': formatField(getter=item.getClanName),
                 'clanAbbrev': formatField(getter=item.getClanAbbrev),
                 'dbID': item.getClanDbID(),
                 'isActive': item.isClanActive()},
      'personalRating': formatField(getter=item.getPersonalRating, formatter=BigWorld.wg_getIntegralFormat),
      'battlesCount': formatField(getter=item.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat),
      'wins': formatField(getter=item.getBattleXpAvg, formatter=lambda value: BigWorld.wg_getNiceNumberFormat(value) + '%'),
      'awgExp': formatField(getter=item.getBattlesPerformanceAvg, formatter=BigWorld.wg_getIntegralFormat),
      'status': {'text': self._makeInviteStateString(item),
                 'tooltip': self._makeTooltip(body=self._makeRequestTooltip(status=item.getStatus(), user=formatField(getter=item.getSenderName), date=formatField(getter=item.getUpdatedAt, formatter=formatters.formatShortDateShortTimeString)))},
      'enabled': status == CLAN_INVITE_STATES.ACTIVE or status == CLAN_INVITE_STATES.ERROR,
      'canShowContextMenu': True,
      'messageTooltip': self._makeTooltip(body=item.getComment() if isValueAvailable(getter=item.getComment) else str()),
      'actions': self.__buildActionsSection(item.getStatus())}
     return outcome
コード例 #28
0
 def _makeVO(self, memberData):
     memberDBID = memberData.getDbID()
     contactEntity = self.userStorage.getUser(memberDBID)
     if contactEntity:
         userVO = ContactConverter().makeVO(contactEntity)
         userVO['userProps']['clanAbbrev'] = ''
     else:
         userVO = {'userProps': {'userName': self.__getMemberName(memberData)}}
     return {'dbID': memberDBID,
      'userName': self.__getMemberName(memberData),
      'post': items.formatField(getter=memberData.getRoleString),
      'postIcon': memberData.getRoleIcon(),
      'personalRating': items.formatField(getter=memberData.getGlobalRating, formatter=BigWorld.wg_getIntegralFormat),
      'battlesCount': items.formatField(getter=memberData.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat),
      'wins': items.formatField(getter=memberData.getBattlesPerformanceAvg, formatter=lambda x: BigWorld.wg_getNiceNumberFormat(x) + '%'),
      'awgExp': items.formatField(getter=memberData.getBattleXpAvg, formatter=BigWorld.wg_getIntegralFormat),
      'daysInClan': items.formatField(getter=memberData.getDaysInClan, formatter=BigWorld.wg_getIntegralFormat),
      'canShowContextMenu': memberDBID != getAccountDatabaseID(),
      'contactItem': userVO}
コード例 #29
0
 def _makeVO(self, memberData):
     memberDBID = memberData.getDbID()
     contactEntity = self.userStorage.getUser(memberDBID)
     if contactEntity:
         userVO = ContactConverter().makeVO(contactEntity)
         userVO['userProps']['clanAbbrev'] = ''
     else:
         userVO = {'userProps': {'userName': self.__getMemberName(memberData)}}
     return {'dbID': memberDBID,
      'userName': self.__getMemberName(memberData),
      'post': items.formatField(getter=memberData.getRoleString),
      'postIcon': memberData.getRoleIcon(),
      'personalRating': items.formatField(getter=memberData.getGlobalRating, formatter=BigWorld.wg_getIntegralFormat),
      'battlesCount': items.formatField(getter=memberData.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat),
      'wins': items.formatField(getter=memberData.getBattlesPerformanceAvg, formatter=lambda x: BigWorld.wg_getNiceNumberFormat(x) + '%'),
      'awgExp': items.formatField(getter=memberData.getBattleXpAvg, formatter=BigWorld.wg_getIntegralFormat),
      'daysInClan': items.formatField(getter=memberData.getDaysInClan, formatter=BigWorld.wg_getIntegralFormat),
      'canShowContextMenu': memberDBID != getAccountDatabaseID(),
      'contactItem': userVO}
コード例 #30
0
 def _requestFortLevel(self, callback):
     strongholdInfo = yield self._clanDossier.requestStrongholdInfo()
     fortLevel = strongholdInfo.getLevel()
     fortLevelStr = formatField(getter=strongholdInfo.getLevel,
                                formatter=fort_formatters.getTextLevel)
     callback((fortLevel, fortLevelStr))
コード例 #31
0
 def __getMemberName(self, memberData):
     return items.formatField(getter=memberData.getDbID,
                              formatter=self.getUserName)
コード例 #32
0
 def _updateHeaderState(self):
     freePlaces = self.clanInfo.getFreePlaces()
     freePlacesInClanText = text_styles.concatStylesToSingleLine(text_styles.standard(_ms(CLANS.CLANINVITESWINDOW_HEADER_FREEPLACESINCLAN, count=text_styles.main(formatField(getter=self.clanInfo.getFreePlaces)))))
     if freePlaces == 0:
         inviteButtonEnabled = False
         inviteButtonTooltip = _ms(CLANS.CLANINVITESWINDOW_HEADER_TOOLTIPS_NOPLACES)
         freePlacesInClanText = gui.makeHtmlString('html_templates:lobby/research', 'warningMessage', {'text': freePlacesInClanText})
     else:
         inviteButtonEnabled = True
         inviteButtonTooltip = _ms(CLANS.CLANINVITESWINDOW_TOOLTIPS_HEADER_INVITEBUTTON)
     self.as_setHeaderStateS({'inviteButtonEnabled': inviteButtonEnabled,
      'inviteButtonText': CLANS.CLANINVITESWINDOW_HEADER_INVITEINCLAN,
      'inviteButtonTooltip': makeTooltip(body=inviteButtonTooltip),
      'freePlacesInClanText': freePlacesInClanText})
コード例 #33
0
 def _makeVO(self, province):
     result = {'front': '%s %s' % (self.__getFront(province), text_styles.standard(formatField(province.getFrontLevel, formatter=fort_formatters.getTextLevel))),
      'province': self.__getProvinceName(province),
      'map': self.__getMap(province),
      'primeTime': text_styles.main(province.getUserPrimeTime()),
      'days': text_styles.main(BigWorld.wg_getIntegralFormat(self.__getDays(province)))}
     if self.__showTreasuryData:
         result.update({'income': text_styles.gold(BigWorld.wg_getIntegralFormat(self.__getIncome(province))),
          'noIncomeIconVisible': not province.isHqConnected(),
          'noIncomeTooltip': CLANS.GLOBALMAPVIEW_NOINCOME_TOOLTIP})
     return result
コード例 #34
0
 def __getMap(self, province):
     return formatField(getter=province.getArenaId, formatter=lambda arena_id: getI18ArenaById(arena_id))
コード例 #35
0
 def __getMap(self, province):
     return formatField(
         getter=province.getArenaId,
         formatter=lambda arena_id: getI18ArenaById(arena_id))
コード例 #36
0
 def __getMap(self, province):
     return formatField(getter=province.getArenaId,
                        formatter=getI18ArenaById)
コード例 #37
0
 def __getMemberName(self, memberData):
     return items.formatField(getter=memberData.getDbID, formatter=self.getUserName)
コード例 #38
0
 def _getHeaderData(self, data):
     stats = data['stats']
     return (PUtils.packLditItemData(formatField(getter=stats.getBattlesCount, formatter=BigWorld.wg_getIntegralFormat), CLANS.GLOBALMAPVIEW_STATS_BATTLES, CLANS.GLOBALMAPVIEW_STATS_BATTLES_TOOLTIP, 'battles40x32.png'), PUtils.packLditItemData(formatField(getter=stats.getWinsEfficiency, formatter=PUtils.formatFloatPercent), CLANS.GLOBALMAPVIEW_STATS_WINS, CLANS.GLOBALMAPVIEW_STATS_WINS_TOOLTIP, 'wins40x32.png'), PUtils.packLditItemData(formatField(getter=stats.getCapturedProvincesCount, formatter=BigWorld.wg_getIntegralFormat), CLANS.GLOBALMAPVIEW_STATS_SEIZED, CLANS.GLOBALMAPVIEW_STATS_SEIZED_TOOLTIP, 'seizedProvinces40x32.png'))
コード例 #39
0
 def __getStatsVO(self):
     notActual = self.__fortStats and self.__fortStats.getFbBattlesCount28d(
     ) <= 0
     hasFortRating = self.__ratings.hasFortRating()
     if self.__fortLevel is None:
         self.__getFortLevel()
     if self.__fortStats is None:
         self.__getFortStatistics()
     if not hasFortRating and not self.__has28dFortStatistics():
         if self.__fortLevel is None:
             fortInfo = (
                 False, CLANS.CLANPROFILE_SUMMARYVIEW_BLOCKLBL_HASNOBATTLES)
         elif self.__fortLevel > 0:
             fortInfo = (True, 0)
         else:
             fortInfo = (False,
                         CLANS.CLANPROFILE_SUMMARYVIEW_BLOCKLBL_EMPTYFORT)
     else:
         fortInfo = (True, '')
     if self.__fortStats:
         fsBattleCount28d = formatField(
             getter=self.__fortStats.getFsBattlesCount28d,
             formatter=BigWorld.wg_getIntegralFormat)
         fbBattleCount28d = formatField(
             getter=self.__fortStats.getFbBattlesCount28d,
             formatter=BigWorld.wg_getIntegralFormat)
     else:
         fsBattleCount28d, fbBattleCount28d = clan_fmts.DUMMY_UNAVAILABLE_DATA, clan_fmts.DUMMY_UNAVAILABLE_DATA
     return ([{
         'local':
         'rageLevel10',
         'value':
         formatField(getter=self.__ratings.getEloRating10,
                     formatter=BigWorld.wg_getIntegralFormat),
         'timeExpired':
         notActual,
         'tooltip':
         CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_ELO_RAGE_10_BODY
     }, {
         'local':
         'rageLevel8',
         'value':
         formatField(getter=self.__ratings.getEloRating8,
                     formatter=BigWorld.wg_getIntegralFormat),
         'timeExpired':
         notActual,
         'tooltip':
         CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_ELO_RAGE_8_BODY
     }, {
         'local':
         'sortiesPerDay',
         'value':
         fsBattleCount28d,
         'tooltip':
         CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_SORTIE_COUNT_28_BODY
     }, {
         'local':
         'battlesPerDay',
         'value':
         fbBattleCount28d,
         'tooltip':
         CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_BATTLES_COUNT_28_BODY
     }, {
         'local':
         'fortLevel',
         'value':
         self.__fortLevelStr,
         'tooltip':
         CLANS.CLANPROFILE_SUMMARYVIEW_TOOLTIP_FORT_LEVEL_BODY
     }], fortInfo)
コード例 #40
0
 def _updateClanInfo(self, clanInfo):
     creationDate = i18n.makeString(CLANS.CLAN_HEADER_CREATIONDATE, creationDate=items.formatField(getter=clanInfo.getCreatedAt, formatter=BigWorld.wg_getLongDateFormat))
     self.as_setClanInfoS({'name': items.formatField(getter=clanInfo.getFullName),
      'bgIcon': RES_ICONS.MAPS_ICONS_CLANS_CLAN_CARD_HEADER,
      'creationDate': creationDate})
コード例 #41
0
 def _requestFortLevel(self, callback):
     strongholdInfo = yield self._clanDossier.requestStrongholdInfo()
     fortLevel = strongholdInfo.getLevel()
     fortLevelStr = formatField(getter=strongholdInfo.getLevel, formatter=fort_formatters.getTextLevel)
     callback((fortLevel, fortLevelStr))