Commit c34dd82d authored by suryakant's avatar suryakant

Table Header Update

parent 9998cd08
...@@ -178,6 +178,12 @@ class CustomReportHandler: ...@@ -178,6 +178,12 @@ class CustomReportHandler:
""" """
dataframes_list = [] dataframes_list = []
header_row = start_row
border_json = dict()
column_counter = 0
previous_category_cols = 0
header_flag = False
logger.info("Iterating through each block to create a dataframe") logger.info("Iterating through each block to create a dataframe")
# Iterate through the categories and concatenate their data # Iterate through the categories and concatenate their data
...@@ -187,6 +193,25 @@ class CustomReportHandler: ...@@ -187,6 +193,25 @@ class CustomReportHandler:
data_frame.columns = category_data.get('columns', []) data_frame.columns = category_data.get('columns', [])
dataframes_list.append(data_frame) dataframes_list.append(data_frame)
shape = data_frame.shape
# Checking if merged border in the JSON
if "addition" in category_data and "merge_header" in category_data[
"addition"]:
header_flag = True
header_start_col = previous_category_cols
header_end_col = header_start_col + shape[1] - 1
border_json[
(header_row, header_start_col, header_row, header_end_col)
] = \
category_data["addition"]["merge_header"]
column_counter += shape[1]
previous_category_cols = column_counter
if header_flag:
start_row += 1
# Concatenate all DataFrames vertically (along rows) # Concatenate all DataFrames vertically (along rows)
logger.info("Concatenating all dataframes to one") logger.info("Concatenating all dataframes to one")
result_df = pd.concat(dataframes_list, axis=1, ignore_index=False) result_df = pd.concat(dataframes_list, axis=1, ignore_index=False)
...@@ -199,6 +224,14 @@ class CustomReportHandler: ...@@ -199,6 +224,14 @@ class CustomReportHandler:
# Get the xlsxwriter workbook and worksheet objects. # Get the xlsxwriter workbook and worksheet objects.
worksheet = writer.sheets[sheet_name] worksheet = writer.sheets[sheet_name]
# Generating merged header for each dataframe
for merge_index, border_value in border_json.items():
# (Start Rows, Start Column, End Row, End Column, Title, Format)
worksheet.merge_range(*merge_index, border_value,
workbook.add_format(
SterliteRefineryTemplate.COLUMN_HEADER_FORMAT)
)
# Write the column headers with the defined format. # Write the column headers with the defined format.
for col_index, value in enumerate(result_df.columns.values): for col_index, value in enumerate(result_df.columns.values):
if value: if value:
...@@ -215,7 +248,7 @@ class CustomReportHandler: ...@@ -215,7 +248,7 @@ class CustomReportHandler:
) )
logger.info(f"Shape of current data frame is {result_df.shape}") logger.info(f"Shape of current data frame is {result_df.shape}")
return result_df.shape, worksheet return result_df.shape, worksheet, header_flag
def custom_report_handler(self, input_json): def custom_report_handler(self, input_json):
""" """
...@@ -262,25 +295,24 @@ class CustomReportHandler: ...@@ -262,25 +295,24 @@ class CustomReportHandler:
input_json=each_blocks, date_filter=each_date_range input_json=each_blocks, date_filter=each_date_range
) )
logger.info(f"start_row: {start_row}")
logger.info("Writing each block into excel sheet") logger.info("Writing each block into excel sheet")
shape, worksheet = self.write_dataframe_to_excel( shape, worksheet, header_flag = \
input_json=each_blocks, self.write_dataframe_to_excel(
writer=writer, input_json=each_blocks,
workbook=workbook, writer=writer,
sheet_name=sheet_name, workbook=workbook,
start_col=start_col, sheet_name=sheet_name,
start_row=start_row, start_col=start_col,
start_row=start_row,
) )
logger.info(f"Last row: {shape[0]}")
logger.info(f"Last column: {shape[1]}")
if total_column < shape[1]: if total_column < shape[1]:
total_column = shape[1] total_column = shape[1]
start_row += shape[0] + 2 start_row += shape[0] + 2
logger.info(f"end_row: {start_row}")
if header_flag:
start_row += 1
# Add a header format. # Add a header format.
main_header_format = workbook.add_format( main_header_format = workbook.add_format(
......
...@@ -87,6 +87,16 @@ class SterliteRefineryTemplate: ...@@ -87,6 +87,16 @@ class SterliteRefineryTemplate:
"anode_availability", "uom", "norms", "anode_availability", "uom", "norms",
"on_date", "mtd", "ytd"], "on_date", "mtd", "ytd"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"SAFETY REPORT": { "SAFETY REPORT": {
"columns": ["SAFETY REPORT", "UOM", "NORMS", "ON DATE", "MTD", "YTD"], "columns": ["SAFETY REPORT", "UOM", "NORMS", "ON DATE", "MTD", "YTD"],
"query": { "query": {
...@@ -173,6 +183,16 @@ class SterliteRefineryTemplate: ...@@ -173,6 +183,16 @@ class SterliteRefineryTemplate:
"norms", "on_date", "mtd", "norms", "on_date", "mtd",
"ytd"], "ytd"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"RM ANODE RECEIPT DETAILS": { "RM ANODE RECEIPT DETAILS": {
"columns": [ "columns": [
"RM ANODE RECEIPT DETAILS", "RM ANODE RECEIPT DETAILS",
...@@ -229,6 +249,16 @@ class SterliteRefineryTemplate: ...@@ -229,6 +249,16 @@ class SterliteRefineryTemplate:
"data_column": ["efficiencies", "uom", "norms", "data_column": ["efficiencies", "uom", "norms",
"on_date", "mtd", "ytd"], "on_date", "mtd", "ytd"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"BANK / CROP": { "BANK / CROP": {
"columns": [ "columns": [
"BANK / CROP", "BANK / CROP",
...@@ -271,6 +301,16 @@ class SterliteRefineryTemplate: ...@@ -271,6 +301,16 @@ class SterliteRefineryTemplate:
"data_column": ["production", "uom", "norms", "data_column": ["production", "uom", "norms",
"on_date", "mtd", "ytd"], "on_date", "mtd", "ytd"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"CIRCULATION": { "CIRCULATION": {
"columns": ["CIRCULATION", "CE%", "THEOR. WEIGHT", "ACTUAL WEIGHT"], "columns": ["CIRCULATION", "CE%", "THEOR. WEIGHT", "ACTUAL WEIGHT"],
"query": { "query": {
...@@ -313,6 +353,16 @@ class SterliteRefineryTemplate: ...@@ -313,6 +353,16 @@ class SterliteRefineryTemplate:
"data": [], "data": [],
"data_column": ["fg_inventory", "on_date", "mtd", "ytd"], "data_column": ["fg_inventory", "on_date", "mtd", "ytd"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"PRODUCTION": { "PRODUCTION": {
"columns": ["PRODUCTION", "ON DATE", "MTD", "YTD"], "columns": ["PRODUCTION", "ON DATE", "MTD", "YTD"],
"query": { "query": {
...@@ -359,6 +409,16 @@ class SterliteRefineryTemplate: ...@@ -359,6 +409,16 @@ class SterliteRefineryTemplate:
"data_column": ["crop", "banks", "total_cells", "data_column": ["crop", "banks", "total_cells",
"cell_voltage", "t_shorts"], "cell_voltage", "t_shorts"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"DEPOSIT LOSS (-) / GAIN (+) DETAILS": { "DEPOSIT LOSS (-) / GAIN (+) DETAILS": {
"columns": [ "columns": [
"CATEGORY", "CATEGORY",
...@@ -505,6 +565,16 @@ class SterliteRefineryTemplate: ...@@ -505,6 +565,16 @@ class SterliteRefineryTemplate:
"primary": "utilities_consumptions" "primary": "utilities_consumptions"
} }
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"SPECIFIC CONSUMPTION": { "SPECIFIC CONSUMPTION": {
"columns": ["CONSUMABLES", "UOM", "NORMS", "ON DATE", "MTD", "YTD"], "columns": ["CONSUMABLES", "UOM", "NORMS", "ON DATE", "MTD", "YTD"],
"query": { "query": {
...@@ -549,6 +619,16 @@ class SterliteRefineryTemplate: ...@@ -549,6 +619,16 @@ class SterliteRefineryTemplate:
"cir_2", "cir_2",
], ],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"SUSPENDED SOLIDS 1": { "SUSPENDED SOLIDS 1": {
"columns": [ "columns": [
"SUSPENDED SOLIDS (Cir-1: I/L)", "SUSPENDED SOLIDS (Cir-1: I/L)",
...@@ -636,6 +716,16 @@ class SterliteRefineryTemplate: ...@@ -636,6 +716,16 @@ class SterliteRefineryTemplate:
"equipment_location", "duration", "equipment_location", "duration",
"production", "cause"], "production", "cause"],
}, },
"BLANK": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
},
"PM COMPLIANCE": { "PM COMPLIANCE": {
"columns": [ "columns": [
"PM COMPLIANCE", "PM COMPLIANCE",
...@@ -663,3 +753,4 @@ class SterliteRefineryTemplate: ...@@ -663,3 +753,4 @@ class SterliteRefineryTemplate:
} }
}, },
] ]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment