Skip to content

Commit 9b5c68b

Browse files
authored
heatmap added file,case,code maximums of 40 for better display and stop freezing.
1 parent d399910 commit 9b5c68b

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

qualcoder/view_charts.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
https://qualcoder.wordpress.com/
2727
"""
2828

29-
from copy import copy
29+
from copy import copy, deepcopy
3030
import logging
3131
import os
3232
import pandas as pd
@@ -1256,14 +1256,18 @@ def make_heatmap(self):
12561256
TODO include in filters: Selected Attributes for Cases - uses attribute_file_ids and attributes_msg
12571257
"""
12581258

1259+
codes = deepcopy(self.codes)
1260+
if len(codes) > 40:
1261+
codes = codes[:40]
1262+
Message(self.app, _("Too many codes"), _("Too many codes for display. Restricted to 40")).exec()
12591263
# Filters
12601264
heatmap_type = self.ui.comboBox_heatmap.currentText()
12611265
if heatmap_type == "":
12621266
return
12631267
title = heatmap_type + " " + _("Heatmap")
12641268
self.get_selected_categories_and_codes()
12651269
y_labels = []
1266-
for c in self.codes:
1270+
for c in codes:
12671271
y_labels.append(c['name'])
12681272
category = self.ui.comboBox_category.currentText()
12691273
self.ui.lineEdit_filter.setText("")
@@ -1286,11 +1290,14 @@ def make_heatmap(self):
12861290
sql = "select id, name from source where id " + file_ids_txt + " order by name"
12871291
cur.execute(sql)
12881292
files = cur.fetchall()
1293+
if len(files) > 40:
1294+
files = files[:40]
1295+
Message(self.app, _("Too many files"), _("Too many files for display. Restricted to 40")).exec()
12891296
for f in files:
12901297
x_labels.append(f[1])
12911298
# Calculate the frequency of each code in each file
12921299
# Each row is a code, each column is a file
1293-
for code_ in self.codes:
1300+
for code_ in codes:
12941301
code_counts = []
12951302
for f in files:
12961303
code_counts.append(self.heatmap_counter_by_file_and_code(owner, f[0], code_['cid']))
@@ -1300,11 +1307,14 @@ def make_heatmap(self):
13001307
sql = "select caseid, name from cases order by name"
13011308
cur.execute(sql)
13021309
cases = cur.fetchall()
1310+
if len(cases) > 40:
1311+
cases = cases[:40]
1312+
Message(self.app, _("Too many cases"), _("Too many cases for display. Restricted to 40")).exec()
13031313
for c in cases:
13041314
x_labels.append(c[1])
13051315
# Calculate the frequency of each code in each file
13061316
# Each row is a code, each column is a file
1307-
for code_ in self.codes:
1317+
for code_ in codes:
13081318
code_counts = []
13091319
for c in cases:
13101320
cur.execute("SELECT fid FROM case_text where caseid=?", [c[0]])
@@ -1322,7 +1332,7 @@ def make_heatmap(self):
13221332
subtitle += attr_msg
13231333
# Calculate the frequency of each code in each file
13241334
# Each row is a code, each column is a file
1325-
for code_ in self.codes:
1335+
for code_ in codes:
13261336
code_counts = []
13271337
for c in self.attribute_case_ids_and_names:
13281338
cur.execute("SELECT fid FROM case_text where caseid=?", [c[0]])

0 commit comments

Comments
 (0)