NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

ledgerMinimap.py (3926B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\ledger\ledgerMinimap.py
      2 import signals
      3 import uthread
      4 from carbon.common.script.util.format import FmtDate
      5 from carbonui.graphs import axis
      6 from carbonui.graphs.areagraph import AreaGraph
      7 from carbonui.graphs.axis import FixupRange
      8 from carbonui.primitives.container import Container
      9 import carbonui.const as uiconst
     10 from eve.client.script.ui.control.eveLabel import EveLabelMedium
     11 from eve.client.script.ui.shared.ledger.ledgerUtil import GetDataForMinimap, GetDataForPersonaMinimap
     12 from eve.client.script.ui.shared.ledger.genericMiniMap import GenericMiniMap
     13 from localization import GetByLabel
     14 
     15 class LedgerMinimap(Container):
     16 
     17     def ApplyAttributes(self, attributes):
     18         Container.ApplyAttributes(self, attributes)
     19         self.sliderController = attributes.sliderController
     20         self.miniMap = GenericMiniMap(name='MiniMap', parent=self, align=uiconst.TOALL, sliderController=self.sliderController)
     21         self.noContentLabel = EveLabelMedium(parent=self, text='%s' % GetByLabel('UI/Ledger/NoDataToDisplay'), idx=0, align=uiconst.CENTER)
     22         self.noContentLabel.display = False
     23         self.areaGraph = None
     24         self.horizontalAxis = axis.MonthlyTimeAxis([])
     25         self.miniMap.AddAxis(axis.AxisOrientation.HORIZONTAL, self.horizontalAxis)
     26         minValue = 0
     27         maxValue = 1
     28         self.verticalAxis = axis.AutoTicksAxis((minValue, maxValue), behavior=axis.AXIS_FROM_ZERO)
     29         self.miniMap.AddAxis(axis.AxisOrientation.VERTICAL, self.verticalAxis, 1.0, 0.0)
     30 
     31     def LoadMiniMap(self, summaryData):
     32         data = [ x[1] for x in summaryData ]
     33         timestamps = [ x[0] for x in summaryData ]
     34         if self.areaGraph:
     35             self.areaGraph.Close()
     36         self.horizontalAxis.SetDataPoints(timestamps, True)
     37         minValue = min(data) if data else 0
     38         maxValue = max(data) if data else 1
     39         self.verticalAxis.SetDataRange(FixupRange((minValue, maxValue)))
     40         self.areaGraph = AreaGraph(parent=self.miniMap, categoryAxis=self.horizontalAxis, valueAxis=self.verticalAxis, values=data, graphColor=(1.0,
     41          1.0,
     42          1.0,
     43          0.09), state=uiconst.UI_DISABLED)
     44         if data and any(data):
     45             self.noContentLabel.display = False
     46         else:
     47             self.noContentLabel.display = True
     48 
     49 
     50 class MiniMapSliderController(object):
     51 
     52     def __init__(self, minRange, maxRange):
     53         self.on_change = signals.Signal(signalName='on_change')
     54         self._dataRange = (minRange, maxRange)
     55         storedRange = _GetSetting('dateRange', 30 * const.DAY)
     56         visibleMin = max(minRange, maxRange - storedRange)
     57         self._visibleRange = (visibleMin, maxRange)
     58 
     59     def GetVisibleRange(self):
     60         return self._visibleRange
     61 
     62     def GetDataRange(self):
     63         return self._dataRange
     64 
     65     def GetRangeText(self, start, end):
     66         return '%s - %s' % (self.GetRangeForTimestamp(start), self.GetRangeForTimestamp(end))
     67 
     68     def GetRangeForTimestamp(self, timestamp):
     69         return FmtDate(timestamp, 'ln')
     70 
     71     def SetVisibleRange(self, visibleRange):
     72         self._visibleRange = visibleRange
     73         self.SetSettings()
     74         self._OnChange()
     75 
     76     def _OnChange(self):
     77         self.on_change()
     78 
     79     def GetStartAndEndPoint(self):
     80         visibleStart, visibleEnd = self.GetVisibleRange()
     81         dataStart, dataEnd = self.GetDataRange()
     82         dataRange = dataEnd - dataStart
     83         start = float(visibleStart - dataStart) / dataRange
     84         end = float(visibleEnd - dataStart) / dataRange
     85         return (start, end)
     86 
     87     def SetSettings(self):
     88         _SetSetting('dateRange', int(self._visibleRange[1] - self._visibleRange[0]))
     89 
     90 
     91 def _GetSetting(name, default):
     92     return settings.user.ui.Get('ledger_setting_%s' % name, default)
     93 
     94 
     95 def _SetSetting(name, value):
     96     settings.user.ui.Set('ledger_setting_%s' % name, value)