Esempio n. 1
0
def grphosxxx(request):
    if request.method == 'POST':
        vname = request.POST['Vendor_name']
        idesc = request.POST['Item_desc']
        loc = request.POST['Vendor_loc']
        rat = int(request.POST['Overall'])
        cat = request.POST['Category']
        queryset = queryfilter(request, vname, idesc, loc, rat, cat)
        vendors = queryset.values('Category', 'Item_desc', 'Vendor_name',
                                  'Vendor_loc', 'Approval').distinct()
    else:
        vendors = vendor.objects.values('Category', 'Item_desc', 'Vendor_name',
                                        'Vendor_loc', 'Approval').distinct()
    if (len(list(vendors)) == 0):
        messages.warning(request, 'No Data Found!!')
        return redirect("display2")
    data = [['Vendor Name', 'Overall Rating']]
    for i in vendors:
        veninf = vendor.objects.filter(Category=i['Category'],
                                       Item_desc=i['Item_desc'],
                                       Vendor_name=i['Vendor_name'],
                                       Vendor_loc=i['Vendor_loc'],
                                       Approval=i['Approval'])
        new = []
        new.append(veninf[0].Vendor_name + '|' + veninf[0].Category + '|' +
                   veninf[0].Vendor_loc)
        new.append(veninf[0].Average_Rating)
        data.append(new)
    data_source1 = SimpleDataSource(data)
    chart1 = gchart.ColumnChart(
        data_source1,
        options={'title': 'Overall Rating of different Vendors'},
        width='100%',
        height=800)
    return render(request, 'graph2.html', {'chart1': chart1})
Esempio n. 2
0
def comparechart(post1, post2, compare1, compare2):
    data = []
    templist = ['status']
    templist.append(post1)
    templist.append(post2)
    data.append(templist)
    d1 = {}
    d2 = {}
    d1 = draw_chart1(compare1)
    d2 = draw_chart1(compare2)
    candidate1 = d1['data']
    candidate2 = d2['data']
    # agendapercent=[]

    # ['completed', 20, 40, 20]
    # ['Completed', 31.03448275862069],
    for i in range(1, 8):
        agendapercent = []
        agendapercent.append(candidate1[i][0])
        agendapercent.append(candidate1[i][1])
        agendapercent.append(candidate2[i][1])
        if agendapercent[1] or agendapercent[2]:
            data.append(agendapercent.copy())

    print("abc:")
    print(data)
    data_source = SimpleDataSource(data=data)
    # Chart object
    chart = gchart.ColumnChart(data_source)
    return chart
Esempio n. 3
0
def grphosxx(request):
    maxpro = []
    if request.method == 'POST':
        vname = request.POST['Vendor_name']
        idesc = request.POST['Item_desc']
        loc = request.POST['Vendor_loc']
        rat = int(request.POST['Overall'])
        cat = request.POST['Category']
        queryset = queryfilter(request, vname, idesc, loc, rat, cat)
        print(queryset)
    else:
        queryset = vendor.objects.all()
    data = [['Vendor Name']]
    for i in queryset:
        maxpro.append(i.Project)
    maxpro = list(set(maxpro))
    if None in maxpro:
        maxpro.remove(None)
    if (len(maxpro) == 0):
        messages.warning(request, 'Vendor Not Found!!')
        return redirect("display2")
    for i in range(1, max(set(maxpro)) + 1):
        data[0].append('Project' + ' ' + str(i) + ' Rating')
    vendors = queryset.values('Category', 'Item_desc', 'Vendor_name',
                              'Vendor_loc', 'Approval').distinct()
    for i in vendors:
        inlist = []
        veninf = vendor.objects.filter(Category=i['Category'],
                                       Item_desc=i['Item_desc'],
                                       Vendor_name=i['Vendor_name'],
                                       Vendor_loc=i['Vendor_loc'],
                                       Approval=i['Approval'])
        inlist.append(veninf[0].Category + '|' + veninf[0].Vendor_name + '|' +
                      veninf[0].Vendor_loc)
        for j in range(1, max(set(maxpro)) + 1):
            l = veninf.filter(Project=j)
            if len(l) == 0:
                inlist.append(0)
            else:
                inlist.append(l[0].Project_Rating)
        data.append(inlist)
    data_source1 = SimpleDataSource(data)
    chart1 = gchart.ColumnChart(
        data_source1,
        options={'title': 'Rating of different Vendors'},
        width='100%',
        height=800)
    return render(request, 'graph.html', {'chart1': chart1})
Esempio n. 4
0
def global_charts(request):

    qs = Log.objects.all()
    week = [qs.filter(ts_input__week_day=i).count() for i in range(7)]

    data = [[
        'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
        'Sunday'
    ], week]

    #data_source = ModelDataSource(queryset, fields=['year', 'sales'])

    chart = gchart.ColumnChart(SimpleDataSource(data=data),
                               html_id="line_chart")

    return render(request, 'access/global_charts.html', {'chart': chart})
Esempio n. 5
0
def draw_chart(post_dict):
    data = []
    data.append(['status', 'No of task'])
    for status, temp_dict in post_dict.items():
        data.append([status, len(temp_dict)])

    print(data)
    # DataSource object
    # options = { 'width': 400,'height': 240,'title': "Toppings I Like On My Pizza",'colors': ["#00b300", "#e6693e", "#ec8f6e", "#f3b49f", "#e60000"]}
    data = [[
        'status', 'General Secretary, Technical Board 2018-19',
        'Vice-President, Gymkhana Council 2017-18'
    ], ['Completed', 0.0, 31.03448275862069], ['Ongoing-Long-Term', 0.0, 0.0],
            ['Ongoing-Short-Term', 0.0, 0.0],
            ['Not-Evaluated', 0.0, 20.689655172413794],
            ['Not-Evaluated-Subjective', 0.0, 0.0],
            ['Not-Started', 100.0, 37.93103448275862],
            ['Broken', 0.0, 10.344827586206897]]

    data_source = SimpleDataSource(data=data)
    # Chart object
    chart = gchart.ColumnChart(data_source)
    return chart
Esempio n. 6
0
def gchart_demo(request):
    create_demo_accounts()
    queryset = Account.objects.all()
    data_source = ModelDataSource(queryset, fields=['year', 'sales'])
    line_chart = gchart.LineChart(data_source,
                                  options={'title': "Sales Growth"})
    column_chart = gchart.ColumnChart(SimpleDataSource(data=data),
                                      options={'title': "Sales vs Expense"})
    bar_chart = gchart.BarChart(data_source,
                                options={'title': "Expense Growth"})
    candlestick_chart = gchart.CandlestickChart(
        SimpleDataSource(data=candlestick_data))
    pie_chart = gchart.PieChart(data_source)
    custom_chart = CustomGchart(data_source)
    context = {
        "line_chart": line_chart,
        "column_chart": column_chart,
        'bar_chart': bar_chart,
        'candlestick_chart': candlestick_chart,
        'pie_chart': pie_chart,
        "custom_chart": custom_chart
    }
    return render(request, 'demo/gchart.html', context)
Esempio n. 7
0
def comparepast(request):
    if request.method == "POST":
        designation = request.POST.get('designation')
        # compare2 = request.POST.get('senator2')
        print("in")
        incldingsenator = agenda.objects.filter(
            user__userprofileinfo__post_description__contains=designation)
        obj1 = incldingsenator.exclude(user__username__contains="senator")
        # agenda.objects.filter(user__userprofileinfo__p)
        # obj2 = agenda.objects.filter(user__username=compare2)

        print(designation)
        # print(obj1)
        # print(compare2)
        chartdict = {}

        chartdict = pastchart(obj1)
        options1 = {'title': "Completed", 'colors': ["#109618"]}
        flag = check(chartdict['Completed'])

        chartcompleted = ''
        chartsubjective = ''
        chartnotevaluated = ''
        chartnotstarted = ''
        chartongoinshort = ''
        chartongoinlong = ''
        chartbroken = ''
        if flag == 1:
            data_source = SimpleDataSource(data=chartdict['Completed'])
            chartcompleted = gchart.ColumnChart(data_source, options=options1)
            # type(chartcompleted)
        flag = check(chartdict['Ongoing-Long-Term'])
        if flag == 1:
            options2 = {}
            options2['title'] = "Ongoing-Long-Term"
            options2['colors'] = ["#660066"]
            # options['colors']=[""]

            data_source = SimpleDataSource(data=chartdict['Ongoing-Long-Term'])
            chartongoinlong = gchart.ColumnChart(data_source, options=options2)

        flag = check(chartdict['Ongoing-Short-Term'])
        if flag == 1:

            options3 = {}
            options3['colors'] = ["#ff9900"]
            options3['title'] = "Ongoing-Short-Term"
            data_source = SimpleDataSource(
                data=chartdict['Ongoing-Short-Term'])
            chartongoinshort = gchart.ColumnChart(data_source,
                                                  options=options3)

        flag = check(chartdict['Not-Evaluated'])
        if flag == 1:

            options4 = {}
            options4['colors'] = ["#3366cc"]
            options4['title'] = "Not-Evaluated"
            data_source = SimpleDataSource(data=chartdict['Not-Evaluated'])
            chartnotevaluated = gchart.ColumnChart(data_source,
                                                   options=options4)

        flag = check(chartdict['Not-Evaluated-Subjective'])
        if flag == 1:

            options5 = {}
            options5['colors'] = ["#0099c6"]
            options5['title'] = "Not-Evaluated-Subjective"
            data_source = SimpleDataSource(
                data=chartdict['Not-Evaluated-Subjective'])

            chartsubjective = gchart.ColumnChart(data_source, options=options5)
            print(chartsubjective)
        flag = check(chartdict['Not-Started'])
        if flag == 1:

            options6 = {}
            options6['colors'] = ["#ff6600"]
            options6['title'] = "Not-Started"
            data_source = SimpleDataSource(data=chartdict['Not-Started'])
            chartnotstarted = gchart.ColumnChart(data_source, options=options6)
        flag = check(chartdict['Broken'])
        if flag == 1:

            options7 = {}
            options7['colors'] = ["#dc3912"]
            options7['title'] = "Broken"
            data_source = SimpleDataSource(data=chartdict['Broken'])
            chartbroken = gchart.ColumnChart(data_source, options=options7)

        # print(chart)
        return render(
            request, 'gsecWorkStatus/compareview.html', {
                'chartcompleted': chartcompleted,
                'chartbroken': chartbroken,
                'chartnotstarted': chartnotstarted,
                'chartsubjective': chartsubjective,
                'chartnotevaluated': chartnotevaluated,
                'chartongoinshort': chartongoinshort,
                'chartongoinlong': chartongoinlong
            })
        # return HttpResponseRedirect(reverse('candidate:vp'))

    else:
        # members = UserProfileInfo.objects.all()
        # senators = User.objects.filter(username__contains="senator")
        return render(request, 'gsecWorkStatus/compare.html')
Esempio n. 8
0
    def get_context_data(self, **kwargs):
        context = super(Dashboard, self).get_context_data(**kwargs)

        startd = self.request.GET.get('start-date')
        endd = self.request.GET.get('end-date')
        if self.request.GET.get('date'):
            try:
                today = datetime.strptime(self.request.GET.get('date'),
                                          '%Y-%m-%d').date()
                context["data_list"] = context["data_list"].filter(
                    datetime__year=today.year,
                    datetime__month=today.month,
                    datetime__day=today.day).order_by("datetime")
                dv = Site.objects.all()
                context["device1"] = context["data_list"].filter(
                    file__site=dv[0])[:24]
                context["device2"] = context["data_list"].filter(
                    file__site=dv[1])
            except Exception as e:
                context['errors'] = ["Invalid Date Format Selected"]
        elif startd and endd:
            try:
                startd = datetime.strptime(startd, '%Y-%m-%d').date()
                endd = datetime.strptime(endd, '%Y-%m-%d').date()
                context["data_list"] = context["data_list"].filter(
                    datetime__date__range=[startd, endd])
                dv = Site.objects.all()
                context["device1"] = context["data_list"].filter(
                    file__site=dv[0])
                context["device2"] = context["data_list"].filter(
                    file__site=dv[1])
            except Exception as e:
                context['errors'] = ["Invalid Date Format Selected"]
        else:
            today = datetime.today()
            context["data_list"] = context["data_list"].filter(
                datetime__year=today.year,
                datetime__month=today.month,
                datetime__day=today.day).order_by("datetime")
            dv = Site.objects.all()
            context["device1"] = context["data_list"].filter(
                file__site=dv[0])[:24]
            context["device2"] = context["data_list"].filter(file__site=dv[1])

        # # print(context)
        # if self.request.GET.get('date'):
        # 	try:
        # 		today = datetime.strptime(self.request.GET.get('date'), '%Y-%m-%d').date()
        # 		context["data_list"] = context["data_list"].filter(datetime__year=today.year, datetime__month=today.month, datetime__day=today.day).order_by("datetime")
        # 		# print(context['data_list'])
        # 		dv = Site.objects.all()
        # 		# print(dv)
        # 		print(context['data_list'])
        # 		context["device1"]   = context["data_list"].filter(file__name=dv[0].name)
        # 		context["device2"] 	 = context["data_list"].filter(file__name=dv[1])
        # 		print("context is ", context['device1'])
        # 	except Exception as e:
        # 		context['errors'] = ["Invalid Date Format Selected"]

        # return context

        data = []
        data1 = []
        r1 = []
        r2 = []
        r3 = []
        r4 = []
        if context['device1']:
            data = [['DateTime', 'Water_Level']]
            for i in context['device1']:
                data.append([i.datetime, i.volt])
            chart = gchart.ColumnChart(SimpleDataSource(data=data),
                                       options={'title': 'NHPC_Sewa'},
                                       height=400,
                                       width=600)
            context["chart"] = chart
        # return context

        if context['device2']:
            data1 = [['DateTime', 'Water_Level']]
            for i in context['device2']:
                data1.append([i.datetime, i.level])
            chart1 = gchart.ColumnChart(SimpleDataSource(data=data1),
                                        options={'title': 'NHPC_Sewa'},
                                        height=400,
                                        width=600)
            context["chart1"] = chart1

        # if context['device3']:
        r1 = [['DateTime', 'Rain_Fall']]
        for i in range(5):
            r1.append([0, 0])
        chart2 = gchart.ColumnChart(SimpleDataSource(data=r1),
                                    options={'title': 'NHPC_Sewa'},
                                    height=400,
                                    width=600)
        context["chart2"] = chart2

        # if context['device4']:
        r2 = [['DateTime', 'Rain_Fall']]
        for i in range(5):
            r2.append([0, 0])
        chart3 = gchart.ColumnChart(SimpleDataSource(data=r2),
                                    options={'title': 'NHPC_Sewa'},
                                    height=400,
                                    width=600)
        context["chart3"] = chart3

        # if context['device5']:
        r3 = [['DateTime', 'Rain_Fall']]
        for i in range(5):
            r3.append([0, 0])
        chart4 = gchart.ColumnChart(SimpleDataSource(data=r3),
                                    options={'title': 'NHPC_Sewa'},
                                    height=400,
                                    width=600)
        context["chart4"] = chart4

        # if context['device6']:
        r4 = [['DateTime', 'Rain_Fall']]
        for i in range(5):
            r4.append([0, 0])
        chart5 = gchart.ColumnChart(SimpleDataSource(data=r4),
                                    options={'title': 'NHPC_Sewa'},
                                    height=400,
                                    width=600)
        context["chart5"] = chart5

        return context
Esempio n. 9
0
    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(Dashboard, self).get_context_data(**kwargs)
        startd = self.request.GET.get('start-date')
        endd = self.request.GET.get('end-date')
        if self.request.GET.get('date'):
            try:
                today = datetime.strptime(self.request.GET.get('date'),
                                          '%Y-%m-%d').date()
                context["data_list"] = context["data_list"].filter(
                    datetime__year=today.year,
                    datetime__month=today.month,
                    datetime__day=today.day).order_by("datetime")
                dv = Devices.objects.all()
                context["device1"] = context["data_list"].filter(
                    port__device=dv[0])
                context["device2"] = context["data_list"].filter(
                    port__device=dv[1])
            except Exception as e:
                context['errors'] = ["Invalid Date Format Selected"]
        elif startd and endd:
            try:
                startd = datetime.strptime(startd, '%Y-%m-%d').date()
                endd = datetime.strptime(endd, '%Y-%m-%d').date()
                context["data_list"] = context["data_list"].filter(
                    datetime__date__range=[startd, endd])
                dv = Devices.objects.all()
                context["device1"] = context["data_list"].filter(
                    port__device=dv[0])
                context["device2"] = context["data_list"].filter(
                    port__device=dv[1])
            except Exception as e:
                context['errors'] = ["Invalid Date Format Selected"]
        else:
            today = datetime.today()
            context["data_list"] = context["data_list"].filter(
                datetime__year=today.year,
                datetime__month=today.month,
                datetime__day=today.day).order_by("datetime")
            dv = Devices.objects.all()
            context["device1"] = context["data_list"].filter(
                port__device=dv[0])
            context["device2"] = context["data_list"].filter(
                port__device=dv[1])
        print("devices", context)
        context['mobile'] = Mobile.objects.all()
        context["device1_max"] = context["device1"].aggregate(
            Max('value'))["value__max"]
        context["device1_min"] = context["device1"].aggregate(
            Min('value'))["value__min"]
        context["device1_avg"] = context["device1"].aggregate(
            Avg('value'))["value__avg"]
        context["device2_max"] = context["device2"].aggregate(
            Max('value'))["value__max"]
        context["device2_min"] = context["device2"].aggregate(
            Min('value'))["value__min"]
        context["device2_avg"] = context["device2"].aggregate(
            Avg('value'))["value__avg"]
        context["today_alert_times"] = len(
            [i for i in context['device1'] if i.value > i.port.alert_level])
        context["today_alert_times"] = len(
            [i for i in context['device2'] if i.value > i.port.alert_level])
        #context["last_sms"] = context["sms"].latest("datetime").datetime
        data = []
        data1 = []
        if context['device1']:
            data = [['DateTime', 'Water']]
            for i in context['device1']:
                data.append(
                    [i.datetime.strftime("%d/%m/%y %H:%I %p"), i.value])
            chart = gchart.ColumnChart(SimpleDataSource(data=data),
                                       options={'title': 'Water Level'},
                                       height=400,
                                       width=600)
            context["chart"] = chart
        # return context

        if context['device2']:
            data1 = [['DateTime', 'Water']]
            for i in context['device2']:
                data1.append(
                    [i.datetime.strftime("%d/%m/%y %H:%I %p"), i.value])
            chart1 = gchart.ColumnChart(SimpleDataSource(data=data1),
                                        options={'title': 'Water Level'},
                                        height=400,
                                        width=600)
            context["chart1"] = chart1
        return context
Esempio n. 10
0
def index(request):
    # Used later to keep track of the maximum JSS
    lastResets = []
    no_seum_delta = timedelta.max

    # First select our counter
    try:
        myCounter = Counter.objects.get(user__id=request.user.id)
        myLastReset = Reset.objects.select_related('who').filter(
            counter=myCounter).order_by('-timestamp').first()

        if myLastReset is None:
            # This person never had the seum
            myCounter.lastReset = Reset()
            myCounter.lastReset.delta = no_seum_delta
            myCounter.lastReset.formatted_delta = format_timedelta(
                myCounter.lastReset.delta, locale=get_language(), threshold=1)
            myCounter.lastReset.noSeum = True
        else:
            myCounter.lastReset = myLastReset
            myCounter.lastReset.noSeum = False
            if myCounter.lastReset.who is None or myCounter.lastReset.who.id == myCounter.id:
                myCounter.lastReset.selfSeum = True
            else:
                myCounter.lastReset.selfSeum = False
            likesMe = list(
                Like.objects.select_related('liker').filter(
                    reset=myCounter.lastReset))
            myCounter.likeCount = len(likesMe)
            if myCounter.likeCount > 0:
                myCounter.likersString = ", ".join(
                    [like.liker.trigramme for like in likesMe])
            myCounter.lastReset.formatted_delta = arrow.Arrow.fromdatetime(
                myCounter.lastReset.timestamp).humanize(locale=get_language())

    except Counter.DoesNotExist:
        return HttpResponseRedirect(reverse('login'))

    # Building data for counters display
    counters = Counter.objects.prefetch_related(
        'resets__likes',
        Prefetch('resets',
                 queryset=Reset.objects.prefetch_related(
                     'who',
                     Prefetch('likes',
                              queryset=Like.objects.select_related(
                                  'liker'))).order_by('-timestamp'),
                 to_attr='lastReset'))
    for counter in counters:
        # Only the last reset is displayed
        lastReset = list(counter.lastReset)
        if len(lastReset) == 0:  # This person never had the seum
            counter.lastReset = Reset()
            counter.lastReset.delta = no_seum_delta
            counter.lastReset.formatted_delta = format_timedelta(
                counter.lastReset.delta, locale=get_language(), threshold=1)
            counter.lastReset.noSeum = True
            counter.lastReset.likes_count = -1
            counter.CSSclass = "warning"
        else:  # This person already had the seum
            counter.lastReset = lastReset[0]
            # To display the last seum we have to know if it is self-inflicted
            if counter.lastReset.who is None or counter.lastReset.who == counter:
                counter.lastReset.selfSeum = True
            else:
                counter.lastReset.selfSeum = False
            # Now we compute the duration since the reset
            counter.lastReset.noSeum = False
            counter.lastReset.delta = datetime.now(
            ) - counter.lastReset.timestamp.replace(tzinfo=None)
            # Defining CSS attributes for the counter
            counter.CSSclass = 'primary' if counter == myCounter else 'default'
            # Computing the total number of likes for this counter
            likesMe = list(counter.lastReset.likes.all())
            counter.lastReset.likes_count = len(likesMe)
            counter.alreadyLiked = myCounter.id in [
                likeMe.liker.id for likeMe in likesMe
            ]
            if counter.lastReset.likes_count > 0:
                counter.likersString = ", ".join(
                    [like.liker.trigramme for like in likesMe])
            counter.lastReset.formatted_delta = arrow.Arrow.fromdatetime(
                counter.lastReset.timestamp).humanize(locale=get_language())

        counter.likeCount = counter.lastReset.likes_count
        counter.isHidden = 'hidden'

    if myCounter.sort_by_score:
        # Now we sort the counters according to a reddit-like ranking formula
        # We take into account the number of likes of a reset and recentness
        # The log on the score will give increased value to the first likes
        # The counters with no seum have a like count of -1 by convention
        sorting_key = lambda t: -(math.log(t.lastReset.likes_count + 2) /
                                  (1 + (t.lastReset.delta.total_seconds()) /
                                   (24 * 3600)))
        counters = sorted(counters, key=sorting_key)
    else:
        counters = sorted(counters,
                          key=lambda t: +t.lastReset.delta.total_seconds())

    # ### GRAPHS ###
    resets_raw = list(
        Reset.objects.select_related(
            'who', 'counter').annotate(likes_count=Count('likes')))
    likes_raw = list(
        Like.objects.select_related('liker', 'reset__counter').all())
    hashtags_raw = list(Hashtag.objects.select_related('keyword').all())
    # Prepare pandas.DataFrames to efficiently process the data
    # About the counters
    resets_cols = [
        'date', 'counter', 'counter_trigram', 'who', 'who_trigram', 'reason',
        'likes_count'
    ]
    resets_data = [[
        r.timestamp, r.counter.id, r.counter.trigramme, r.who, r.who, r.reason,
        r.likes_count
    ] for r in resets_raw]
    for r in resets_data:
        r[3] = 0 if r[3] is None else r[3].id
        r[4] = '' if r[4] is None else r[4].trigramme
    resets_df = pd.DataFrame(resets_data, columns=resets_cols)
    resets_df['timestamp'] = resets_df.date.map(lambda d: d.timestamp())
    resets_df['self_seum'] = (resets_df.who.eq(np.zeros(resets_df.shape[0]))
                              | resets_df.who.eq(resets_df.counter)).map(float)
    resets_df['formatted_delta'] = resets_df.date.map(
        lambda d: arrow.Arrow.fromdatetime(d).humanize(locale=get_language()))
    # About the likes
    likes_cols = ['liker', 'liker_trigram', 'counter', 'counter_trigram']
    likes_data = [[
        l.liker.id, l.liker.trigramme, l.reset.counter.id,
        l.reset.counter.trigramme
    ] for l in likes_raw]
    likes_df = pd.DataFrame(likes_data, columns=likes_cols)
    # About the hashtags
    hashtags_cols = ['keyword']
    hashtags_data = [[h.keyword.text] for h in hashtags_raw]
    hashtags_df = pd.DataFrame(hashtags_data, columns=hashtags_cols)

    # Timeline graph
    timeline_resets = resets_df[resets_df.date > (
        datetime.now() - timedelta(days=1))].copy().reset_index()
    if timeline_resets.shape[0] == 0:
        noTimeline = True
        line_chart = None
    else:
        noTimeline = False

        # Construct legend for timeline dots
        legend_ = np.zeros(timeline_resets.shape[0], dtype=np.object)
        for i in range(timeline_resets.shape[0]):
            row = timeline_resets.iloc[i]
            if row['self_seum'] == 1:
                legend_[i] = _('%(counter)s: %(reason)s') % {
                    'counter': row['counter_trigram'],
                    'reason': row['reason']
                }
            else:
                legend_[i] = _('%(who)s to %(counter)s: %(reason)s') % {
                    'who': row['who_trigram'],
                    'counter': row['counter_trigram'],
                    'reason': row['reason']
                }
        timeline_resets['legend'] = legend_

        # Generate graph
        resets_ = [['', _('Seum')]]
        for i in range(timeline_resets.shape[0]):
            r = timeline_resets.iloc[i]
            resets_.append([{
                'v': r.timestamp,
                'f': r.formatted_delta
            }, {
                'v': 0,
                'f': r.legend
            }])
            # resets_.append({
            #     'timestamp': {'v': r.date.timestamp(), 'f': r.formatted_delta},
            #     'Seum': {'v': 0, 'f': r.legend},
            # })
        line_data = SimpleDataSource(resets_)
        line_chart = gchart.LineChart(
            line_data,
            options={
                'lineWidth': 0,
                'pointSize': 10,
                'title': '',
                'vAxis': {
                    'ticks': []
                },
                'hAxis': {
                    'ticks': [{
                        'v': (datetime.now() - timedelta(days=1)).timestamp(),
                        'f':
                        _('24h ago')
                    }, {
                        'v': datetime.now().timestamp(),
                        'f': _('Now')
                    }]
                },
                'legend': 'none',
                'height': 90
            })

    # Graph of greatest seumers
    seum_counts_df = resets_df[['counter_trigram', 'self_seum']].copy()
    seum_counts_df['seum_count'] = np.ones(seum_counts_df.shape[0],
                                           dtype=np.float32)
    seum_counts_df = seum_counts_df.groupby(['counter_trigram'
                                             ]).sum().reset_index()
    # TODO: Add the ratio self_seum / seum_count
    if (seum_counts_df.shape[0] == 0):
        noBestSeum = True
        best_chart = None
    else:
        noBestSeum = False
        seum_counts_data = seum_counts_df.sort_values(by='seum_count',
                                                      ascending=False)[[
                                                          'counter_trigram',
                                                          'seum_count'
                                                      ]].values.tolist()
        seum_counts_data.insert(0, [_('Trigram'), _('Number of seums')])
        best_data = SimpleDataSource(seum_counts_data[:bestSeumeursNumber])
        best_chart = gchart.ColumnChart(best_data,
                                        options={
                                            'title': '',
                                            'legend': 'none',
                                            'vAxis': {
                                                'title': _('Number of seums')
                                            },
                                            'hAxis': {
                                                'title': _('Trigram')
                                            },
                                        })

    # Graph of seum activity
    resets_act = resets_df[resets_df.date > (timezone.now() -
                                             timedelta(days=365))][['date'
                                                                    ]].copy()
    resets_act['year'] = resets_df.date.map(lambda d: d.year)
    resets_act['month'] = resets_df.date.map(lambda d: d.month)
    resets_act = resets_act.drop(['date'], axis=1)
    resets_act['month_counts'] = np.ones(resets_act.shape[0], dtype=int)
    resets_act = resets_act.groupby(['year', 'month']).sum().reset_index()
    if resets_act.shape[0] == 0:
        noSeumActivity = True
        activity_chart = None
    else:
        noSeumActivity = False
        seumActivity = [[
            arrow.Arrow(a[0], a[1],
                        1).format("MMM YYYY",
                                  locale=get_language()).capitalize(), a[2]
        ] for a in resets_act.values.tolist()]
        seumActivity.insert(0, [_('Month'), _('Number of seums')])
        activity_data = SimpleDataSource(seumActivity)
        activity_chart = gchart.ColumnChart(activity_data,
                                            options={
                                                'title': '',
                                                'legend': 'none',
                                                'vAxis': {
                                                    'title':
                                                    _('Number of seums')
                                                },
                                                'hAxis': {
                                                    'title': _('Month')
                                                },
                                            })

    # Graph of best likers
    best_likers_df = likes_df.drop(['liker', 'counter', 'counter_trigram'],
                                   axis=1)
    best_likers_df['count'] = np.ones(best_likers_df.shape[0], dtype=int)
    best_likers_df = best_likers_df.groupby(['liker_trigram'
                                             ]).sum().reset_index()
    if best_likers_df.shape[0] == 0:
        noBestLikers = True
        likers_chart = None
    else:
        noBestLikers = False
        likersCounts = best_likers_df.sort_values(
            by='count', ascending=False).values.tolist()
        likersCounts.insert(0, [_('Trigram'), _('Number of given likes')])
        likers_data = SimpleDataSource(likersCounts[:bestSeumeursNumber])
        likers_chart = gchart.ColumnChart(likers_data,
                                          options={
                                              'title': '',
                                              'legend': 'none',
                                              'vAxis': {
                                                  'title':
                                                  _('Number of given likes')
                                              },
                                              'hAxis': {
                                                  'title': _('Trigram')
                                              },
                                          })

    # Graph of popular hashtags
    hashtags_df['count'] = np.ones(hashtags_df.shape[0], dtype=int)
    hashtags_df = hashtags_df.groupby(['keyword']).sum().reset_index()
    hashtags_df['keyword'] = hashtags_df.keyword.map(lambda x: '#' + x)
    if hashtags_df.shape[0] == 0:
        noBestHashtags = True
        hashtags_chart = None
    else:
        noBestHashtags = False
        hashtags_data = hashtags_df.sort_values(
            by='count', ascending=False).values.tolist()
        hashtags_data.insert(
            0, [_('Hashtag'),
                _('Number of seums containing the hashtag')])
        hashtags_data = SimpleDataSource(hashtags_data[:bestSeumeursNumber])
        hashtags_chart = gchart.ColumnChart(
            hashtags_data,
            options={
                'title': '',
                'legend': 'none',
                'vAxis': {
                    'title': _('Number of seums containing the hashtag')
                },
                'hAxis': {
                    'title': _('Hashtag')
                },
            })

    # Graph of best likee
    best_likees_df = likes_df.drop(['counter', 'liker', 'liker_trigram'],
                                   axis=1)
    best_likees_df['count'] = np.ones(best_likees_df.shape[0], dtype=int)
    best_likees_df = best_likees_df.groupby(['counter_trigram'
                                             ]).sum().reset_index()
    if best_likees_df.shape[0] == 0:
        noBestLikees = True
        likees_chart = None
    else:
        noBestLikees = False
        likeesCounts = best_likees_df.sort_values(
            by='count', ascending=False).values.tolist()
        likeesCounts.insert(0, [_('Trigram'), _('Number of received likes')])
        likees_data = SimpleDataSource(likeesCounts[:bestSeumeursNumber])
        likees_chart = gchart.ColumnChart(likees_data,
                                          options={
                                              'title': '',
                                              'legend': 'none',
                                              'vAxis': {
                                                  'title':
                                                  _('Number of received likes')
                                              },
                                              'hAxis': {
                                                  'title': _('Trigram')
                                              },
                                          })

    # At last we render the page
    return render(
        request, 'homeTemplate.html', {
            'counters': counters,
            'line_chart': line_chart,
            'best_chart': best_chart,
            'likers_chart': likers_chart,
            'likees_chart': likees_chart,
            'hashtags_chart': hashtags_chart,
            'activity_chart': activity_chart,
            'noTimeline': noTimeline,
            'noBestSeum': noBestSeum,
            'noBestLikers': noBestLikers,
            'noBestLikees': noBestLikees,
            'noBestHashtags': noBestHashtags,
            'noSeumActivity': noSeumActivity,
            'myCounter': myCounter,
        })