Files
dibbler/dibbler/subcommands/statistikk.py
T

232 lines
6.9 KiB
Python

# #! /usr/bin/env python
# # TODO: fixme
# # -*- coding: UTF-8 -*-
# import matplotlib.pyplot as plt
# import matplotlib.dates as mdates
# from dibbler.lib.statistikkHelpers import *
# def getInputType():
# inp = 0
# while not (inp == "1" or inp == "2" or inp == "3" or inp == "4"):
# print("type 1 for user-statistics")
# print("type 2 for product-statistics")
# print("type 3 for global-statistics")
# print("type 4 to enter loop-mode")
# inp = input("")
# return int(inp)
# def getDateFile(date, n):
# try:
# if n == 0:
# inp = input("start date? (yyyy-mm-dd) ")
# elif n == -1:
# inp = input("end date? (yyyy-mm-dd) ")
# year = inp.partition("-")
# month = year[2].partition("-")
# return datetime.date(int(year[0]), int(month[0]), int(month[2]))
# except:
# print("invalid date, setting start start date")
# if n == 0:
# print("to date found on first line")
# elif n == -1:
# print("to date found on last line")
# print(date)
# return datetime.date(
# int(date.partition("-")[0]),
# int(date.partition("-")[2].partition("-")[0]),
# int(date.partition("-")[2].partition("-")[2]),
# )
# def dateToDateNumFile(date, startDate):
# year = date.partition("-")
# month = year[2].partition("-")
# day = datetime.date(int(year[0]), int(month[0]), int(month[2]))
# deltaDays = day - startDate
# return int(deltaDays.days), day.weekday()
# def getProducts(products):
# product = []
# products = products.partition("¤")
# product.append(products[0])
# while products[1] == "¤":
# products = products[2].partition("¤")
# product.append(products[0])
# return product
# def piePlot(dictionary, n):
# keys = []
# values = []
# i = 0
# for key in sorted(dictionary, key=dictionary.get, reverse=True):
# values.append(dictionary[key])
# if i < n:
# keys.append(key)
# i += 1
# else:
# keys.append("")
# plt.pie(values, labels=keys)
# def datePlot(array, dateLine):
# if not array == []:
# plt.bar(dateLine, array)
# plt.gca().xaxis.set_major_formatter(mdates.DateFormatter("%b"))
# def dayPlot(array, days):
# if not array == []:
# for i in range(7):
# array[i] = array[i] * 7.0 / days
# plt.bar(list(range(7)), array)
# plt.xticks(
# list(range(7)),
# [
# " mon",
# " tue",
# " wed",
# " thu",
# " fri",
# " sat",
# " sun",
# ],
# )
# def graphPlot(array, dateLine):
# if not array == []:
# plt.plot(dateLine, array)
# plt.gca().xaxis.set_major_formatter(mdates.DateFormatter("%b"))
# def plotUser(database, dateLine, user, n):
# printUser(database, dateLine, user, n)
# plt.subplot(221)
# piePlot(database.personVareAntall[user], n)
# plt.xlabel("antall varer kjøpt gjengitt i antall")
# plt.subplot(222)
# datePlot(database.personDatoVerdi[user], dateLine)
# plt.xlabel("penger brukt over dato")
# plt.subplot(223)
# piePlot(database.personVareVerdi[user], n)
# plt.xlabel("antall varer kjøpt gjengitt i verdi")
# plt.subplot(224)
# dayPlot(database.personUkedagVerdi[user], len(dateLine))
# plt.xlabel("forbruk over ukedager")
# plt.show()
# def plotProduct(database, dateLine, product, n):
# printProduct(database, dateLine, product, n)
# plt.subplot(221)
# piePlot(database.varePersonAntall[product], n)
# plt.xlabel("personer som har handler produktet")
# plt.subplot(222)
# datePlot(database.vareDatoAntall[product], dateLine)
# plt.xlabel("antall produkter handlet per dag")
# # plt.subplot(223)
# plt.subplot(224)
# dayPlot(database.vareUkedagAntall[product], len(dateLine))
# plt.xlabel("antall over ukedager")
# plt.show()
# def plotGlobal(database, dateLine, n):
# printGlobal(database, dateLine, n)
# plt.subplot(231)
# piePlot(database.globalVareVerdi, n)
# plt.xlabel("varer kjøpt gjengitt som verdi")
# plt.subplot(232)
# datePlot(database.globalDatoForbruk, dateLine)
# plt.xlabel("forbruk over dato")
# plt.subplot(233)
# graphPlot(database.pengebeholdning, dateLine)
# plt.xlabel("pengebeholdning over tid (negativ verdi utgjør samlet kreditt)")
# plt.subplot(234)
# piePlot(database.globalPersonForbruk, n)
# plt.xlabel("penger brukt av personer")
# plt.subplot(235)
# dayPlot(database.globalUkedagForbruk, len(dateLine))
# plt.xlabel("forbruk over ukedager")
# plt.show()
# def alt4menu(database, dateLine, useDatabase):
# n = 10
# while 1:
# print(
# "\n1: user-statistics, 2: product-statistics, 3:global-statistics, n: adjust amount of data shown q:quit"
# )
# try:
# inp = input("")
# except:
# continue
# if inp == "q":
# break
# elif inp == "1":
# if i == "0":
# user = input("input full username: ")
# else:
# user = getUser()
# plotUser(database, dateLine, user, n)
# elif inp == "2":
# if i == "0":
# product = input("input full product name: ")
# else:
# product = getProduct()
# plotProduct(database, dateLine, product, n)
# elif inp == "3":
# plotGlobal(database, dateLine, n)
# elif inp == "n":
# try:
# n = int(input("set number to show "))
# except:
# pass
# def main():
# inputType = getInputType()
# i = input("0:fil, 1:database \n? ")
# if inputType == 1:
# if i == "0":
# user = input("input full username: ")
# else:
# user = getUser()
# product = ""
# elif inputType == 2:
# if i == "0":
# product = input("input full product name: ")
# else:
# product = getProduct()
# user = ""
# else:
# product = ""
# user = ""
# if i == "0":
# inputFile = input("logfil? ")
# if inputFile == "":
# inputFile = "default.dibblerlog"
# database, dateLine = buildDatabaseFromFile(inputFile, inputType, product, user)
# else:
# database, dateLine = buildDatabaseFromDb(inputType, product, user)
# if inputType == 1:
# plotUser(database, dateLine, user, 10)
# if inputType == 2:
# plotProduct(database, dateLine, product, 10)
# if inputType == 3:
# plotGlobal(database, dateLine, 10)
# if inputType == 4:
# alt4menu(database, dateLine, i)
# if __name__ == "__main__":
# main()