MilanM commited on
Commit
a918067
·
verified ·
1 Parent(s): d6d92c4

Update pdf_generator.py

Browse files
Files changed (1) hide show
  1. pdf_generator.py +6 -12
pdf_generator.py CHANGED
@@ -40,12 +40,12 @@ class SliderFlowable(Flowable):
40
  # Add range labels
41
  min_str = self.format_label(self.min_val)
42
  max_str = self.format_label(self.max_val)
43
- drawing.add(String(40, 35, min_str, fontSize=10, fillColor=colors.HexColor("#26004d")))
44
- drawing.add(String(340, 35, max_str, fontSize=10, fillColor=colors.HexColor("#26004d")))
45
 
46
  # Add value label
47
  value_str = self.format_label(self.value)
48
- drawing.add(String(value_width - 20, 60, value_str, fontSize=10, fillColor=colors.HexColor("#26004d")))
49
 
50
  # Add value marker
51
  drawing.add(Line(value_width, 25, value_width, 55, strokeColor=colors.HexColor("#26004d"), strokeWidth=2))
@@ -54,17 +54,12 @@ class SliderFlowable(Flowable):
54
 
55
  def format_label(self, value):
56
  if self.is_percentage:
57
- return f"{value}%"
58
  elif self.is_integer:
59
  return f"{int(value)}"
60
  else:
61
  return f"{value:.2f}"
62
 
63
- def format_value(self, value):
64
- if self.is_percentage:
65
- return value / 100 # Convert percentage back to decimal for calculations
66
- return value
67
-
68
  def create_styles():
69
  styles = getSampleStyleSheet()
70
  styles['Title'].fontName = 'Helvetica-Bold'
@@ -166,7 +161,6 @@ def process_quantitative_criteria(answers, styles):
166
  return story
167
 
168
  def parse_quantitative_criteria(input_string):
169
- # Match "Text [min-max]" format, where min and max can be int, float, or percentage
170
  match = re.match(r'(.+?)\s*\[([-+]?(?:\d*\.*\d+)(?:%)?)\s*-\s*([-+]?(?:\d*\.*\d+)(?:%)?)\]', input_string)
171
  if match:
172
  name, min_val, max_val = match.groups()
@@ -174,7 +168,7 @@ def parse_quantitative_criteria(input_string):
174
 
175
  def parse_value(val):
176
  if '%' in val:
177
- return float(val.rstrip('%')) / 100, True
178
  elif '.' in val:
179
  return float(val), False
180
  else:
@@ -184,7 +178,7 @@ def parse_quantitative_criteria(input_string):
184
  max_val, is_max_percent = parse_value(max_val)
185
 
186
  is_percentage = is_min_percent or is_max_percent
187
- is_integer = isinstance(min_val, int) and isinstance(max_val, int)
188
 
189
  return name, min_val, max_val, is_percentage, is_integer
190
  return None
 
40
  # Add range labels
41
  min_str = self.format_label(self.min_val)
42
  max_str = self.format_label(self.max_val)
43
+ drawing.add(String(40, 10, min_str, fontSize=10, fillColor=colors.HexColor("#26004d")))
44
+ drawing.add(String(340, 10, max_str, fontSize=10, fillColor=colors.HexColor("#26004d")))
45
 
46
  # Add value label
47
  value_str = self.format_label(self.value)
48
+ drawing.add(String(value_width - 20, 55, value_str, fontSize=10, fillColor=colors.HexColor("#26004d")))
49
 
50
  # Add value marker
51
  drawing.add(Line(value_width, 25, value_width, 55, strokeColor=colors.HexColor("#26004d"), strokeWidth=2))
 
54
 
55
  def format_label(self, value):
56
  if self.is_percentage:
57
+ return f"{value:.2f}%"
58
  elif self.is_integer:
59
  return f"{int(value)}"
60
  else:
61
  return f"{value:.2f}"
62
 
 
 
 
 
 
63
  def create_styles():
64
  styles = getSampleStyleSheet()
65
  styles['Title'].fontName = 'Helvetica-Bold'
 
161
  return story
162
 
163
  def parse_quantitative_criteria(input_string):
 
164
  match = re.match(r'(.+?)\s*\[([-+]?(?:\d*\.*\d+)(?:%)?)\s*-\s*([-+]?(?:\d*\.*\d+)(?:%)?)\]', input_string)
165
  if match:
166
  name, min_val, max_val = match.groups()
 
168
 
169
  def parse_value(val):
170
  if '%' in val:
171
+ return float(val.rstrip('%')), True
172
  elif '.' in val:
173
  return float(val), False
174
  else:
 
178
  max_val, is_max_percent = parse_value(max_val)
179
 
180
  is_percentage = is_min_percent or is_max_percent
181
+ is_integer = isinstance(min_val, int) and isinstance(max_val, int) and not is_percentage
182
 
183
  return name, min_val, max_val, is_percentage, is_integer
184
  return None