PainterBase.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import redis
  2. import time as time
  3. import logging
  4. import json
  5. from .DataStream import span_days, day_stamp, span_days, time_border, calc_interval
  6. import logging
  7. logger = logging.getLogger('PainterBase')
  8. all_colors = ['#000000', '#0000FF', '#FF0000', '#FF00FF', '#00FFFF', '#008080', '#808080',
  9. '#800080', '#FF8000', '#800000', '#008000', '#8080FF', '#FF8080', '#8000FF', '#808000', '#0080FF', '#80FF80', '#80FF00', '#FF0080',
  10. '#FF80FF', '#FFFF80', '#000080', '#400000', '#400040', '#4040FF', '#FF4000', '#408000','#FF4080',
  11. '#404000', '#808040', '#FF8040', '#804000', '#000040', '#408040', '#FF0040', '#804040',
  12. '#008040', '#800040', '#FF4040', '#804080', '#400080', '#404040', '#004000', '#4080FF', '#0040FF', '#004040', '#4000FF',
  13. '#404080', '#004080', '#8040FF', '#408080', '#8000C0', '#C000C0', '#40C000', '#40C080',
  14. '#C000FF', '#FF00C0', '#40C040', '#40C0C0', '#80C040', '#4040C0', '#4000C0', '#00C040', '#C00040',
  15. '#8040C0', '#40C0FF', '#C08080', '#C00080', '#8080C0', '#C04080', '#C080C0', '#C04040',
  16. '#C040C0', '#00C080', '#C080FF', '#C00000',
  17. '#80C000', '#0040C0', '#C04000', '#00C0FF', '#FF40C0', '#0080C0', '#00C000',
  18. '#0000C0', '#4080C0', '#C0C000', '#C08000', '#C08040']
  19. class PainterBase(object):
  20. def __init__(self):
  21. self._redis_client = None
  22. pass
  23. def set_redis(self, rhost, rport):
  24. pool = redis.ConnectionPool(host=rhost, port=rport)
  25. self._redis_client = redis.Redis(connection_pool=pool)
  26. pass
  27. def redis_client(self):
  28. return self._redis_client
  29. def calc_time(self, reader, start_time: int, end_time: int):
  30. end_time = end_time or int(time.time())
  31. if start_time is None or start_time > end_time:
  32. start_time = end_time - 7200
  33. stime = lambda t: time.strftime('%y-%m-%d %H:%M:%S', time.localtime(t))
  34. interval = calc_interval(start_time, end_time)
  35. logger.debug("start_time %d=%s end_time=%s interval=%d", start_time, stime(start_time), stime(end_time), interval)
  36. days = span_days(start_time, end_time)
  37. sdays = [stime(day) for day in days]
  38. logger.debug(sdays)
  39. return days, start_time, end_time, interval
  40. def calc_xticks(self,start,end,interval):
  41. ticks = []
  42. _start = start
  43. while True:
  44. if start < end:
  45. ticks.append(start - _start)
  46. if start % interval == 0:
  47. start += interval
  48. else:
  49. start += interval - start % interval
  50. else:
  51. ticks.append(end - _start)
  52. break
  53. return ticks
  54. def clac_xlables(self, start, end, interval):
  55. xticks = self.calc_xticks(start, end, interval)
  56. if len(xticks) == 0:
  57. return xticks,[]
  58. min = xticks[0]
  59. max = xticks[-1]
  60. diff = max - min
  61. if diff > 86400 * 30:
  62. xlables = [time.strftime('%m-%d-%H:%M:%S', time.localtime(d + self._start_time)) for d in xticks]
  63. elif diff > 86400:
  64. xlables = [time.strftime('%d-%H:%M:%S', time.localtime(d + self._start_time)) for d in xticks]
  65. else:
  66. xlables = [time.strftime('%H:%M:%S', time.localtime(d + self._start_time)) for d in xticks]
  67. return xticks,xlables
  68. def color(self,index):
  69. return all_colors[index]