Initial commit
This commit is contained in:
29
configs/ci_dict.json
Normal file
29
configs/ci_dict.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"KPS": [
|
||||
"KPS Hardware",
|
||||
"Bump Bar",
|
||||
"Sticky Printer",
|
||||
"Receipt Printer",
|
||||
"Configuration Issue",
|
||||
"Order Accuracy Issue",
|
||||
"New Issue"
|
||||
],
|
||||
"POS_Android": [
|
||||
"POS Hardware Android",
|
||||
"Printer Android",
|
||||
"Card Reader Android",
|
||||
"Cash Drawer Android",
|
||||
"Menu Issue Android",
|
||||
"Connectivity Android",
|
||||
"New Issues Android"
|
||||
],
|
||||
"POS_iOS": [
|
||||
"POS Hardware iOS",
|
||||
"Printer iOS",
|
||||
"Card Reader iOS",
|
||||
"Cash Drawer iOS",
|
||||
"Menu Issue iOS",
|
||||
"Connectivity iOS",
|
||||
"New Issues iOS"
|
||||
]
|
||||
}
|
||||
6
configs/new_activations.json
Normal file
6
configs/new_activations.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"Pennsylvania Ave": {
|
||||
"date": "2025-9-01",
|
||||
"product": ["KPS", "POS_android", "POS_iOS"]
|
||||
}
|
||||
}
|
||||
554
csv_transformer.py
Normal file
554
csv_transformer.py
Normal file
@@ -0,0 +1,554 @@
|
||||
import csv
|
||||
import pandas as pd
|
||||
import xlsxwriter
|
||||
import datetime
|
||||
import json
|
||||
|
||||
class CSVTransform:
|
||||
_wip_total = 0
|
||||
_on_hold_total = 0
|
||||
_weekly_resolved = 0
|
||||
_daily_total = 0
|
||||
_weekly_total = 0
|
||||
_yearly_total = 0
|
||||
|
||||
_priority_daily_counter = {
|
||||
'P1 - Critical': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P2 - High': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P3 - Medium': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P4 - Low': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'Total': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
}
|
||||
}
|
||||
|
||||
_priority_weekly_counter = {
|
||||
'P1 - Critical': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P2 - High': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P3 - Medium': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P4 - Low': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'Total': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
}
|
||||
}
|
||||
|
||||
_priority_rolling_week_counter = {
|
||||
'P1 - Critical': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P2 - High': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P3 - Medium': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P4 - Low': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'Total': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
}
|
||||
}
|
||||
|
||||
_priority_monthly_counter = {
|
||||
'P1 - Critical': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P2 - High': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P3 - Medium': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P4 - Low': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'Total': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
}
|
||||
}
|
||||
|
||||
_priority_yearly_counter = {
|
||||
'P1 - Critical': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P2 - High': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P3 - Medium': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'P4 - Low': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
},
|
||||
'Total': {
|
||||
'Closed':0,
|
||||
'On Hold':0,
|
||||
'Work in Progress':0,
|
||||
'Resolved':0,
|
||||
'Cancelled':0,
|
||||
'Total':0
|
||||
}
|
||||
}
|
||||
|
||||
_se_counter = {
|
||||
'Total': {}
|
||||
}
|
||||
|
||||
_location_counter = {
|
||||
'Total': {}
|
||||
}
|
||||
|
||||
_new_activation_counter = {
|
||||
'Total': {}
|
||||
}
|
||||
|
||||
_new_activation_priority_counter = {}
|
||||
_new_activation_ci_counter = {}
|
||||
_new_activations = {}
|
||||
|
||||
_ci_dict = {}
|
||||
_ci_counter = {
|
||||
'Total': {
|
||||
'KPS': 0,
|
||||
'POS_Android':0,
|
||||
'POS_iOS': 0,
|
||||
'Misc': 0,
|
||||
}
|
||||
}
|
||||
|
||||
_daily_incidents = []
|
||||
_weekly_incidents = []
|
||||
_8_to_14_incidents = []
|
||||
_monthly_incidents = []
|
||||
|
||||
_sla_tracker = {
|
||||
'P1 - Critical': {
|
||||
'time': datetime.timedelta(),
|
||||
'Total': 0
|
||||
},
|
||||
'P2 - High': {
|
||||
'time': datetime.timedelta(),
|
||||
'Total': 0
|
||||
},
|
||||
'P3 - Medium': {
|
||||
'time': datetime.timedelta(),
|
||||
'Total': 0
|
||||
},
|
||||
'P4 - Low': {
|
||||
'time': datetime.timedelta(),
|
||||
'Total': 0
|
||||
}
|
||||
}
|
||||
|
||||
_today = datetime.date.today()
|
||||
_last_week = _today - datetime.timedelta(days=7)
|
||||
_8_days = _today - datetime.timedelta(days=8)
|
||||
_14_days = _today - datetime.timedelta(days=14)
|
||||
_this_month = _today.replace(day=1) -datetime.timedelta(days=1)
|
||||
|
||||
def __init__(self, filename):
|
||||
self._set_new_activation_variables()
|
||||
self._set_ci_dictionary_variables()
|
||||
self._ingest_csv(filename)
|
||||
|
||||
def _set_new_activation_variables(self):
|
||||
with open('./configs/new_activations.json') as new_sites:
|
||||
temp_dict = json.load(new_sites)
|
||||
for key in temp_dict.keys():
|
||||
## Used to skip locations who haven't been activated yet.
|
||||
## Could also add a lower bound if we want to auto remove
|
||||
## locations activated after a certain amount of time.
|
||||
if temp_dict[key]['date'] > str(self._today):
|
||||
continue
|
||||
self._new_activations[key] = temp_dict[key]
|
||||
self._new_activation_counter['Total'][key] = 0
|
||||
self._new_activation_priority_counter[key] = {
|
||||
'P1 - Critical': 0,
|
||||
'P2 - High': 0,
|
||||
'P3 - Medium': 0,
|
||||
'P4 - Low': 0
|
||||
}
|
||||
self._new_activation_ci_counter[key] = {
|
||||
'KPS': 0,
|
||||
'POS_Android':0,
|
||||
'POS_iOS': 0,
|
||||
'Misc': 0,
|
||||
}
|
||||
|
||||
def _set_ci_dictionary_variables(self):
|
||||
with open('./configs/ci_dict.json') as json_file:
|
||||
self._ci_dict = json.load(json_file)
|
||||
|
||||
def _ingest_csv(self, filename):
|
||||
with open(filename, newline='', encoding='cp1252') as csvfile:
|
||||
reader = csv.DictReader(csvfile)
|
||||
for row in reader:
|
||||
self._update_counters(row)
|
||||
self._extract_incidents(row)
|
||||
|
||||
def _update_counters(self, row):
|
||||
created_datetime = row['sys_created_on']
|
||||
created_date = datetime.datetime.strptime(created_datetime, '%Y-%m-%d %H:%M:%S %p').date()
|
||||
row_loc = row['location']
|
||||
|
||||
if created_date == self._today:
|
||||
self._update_daily_counters(row)
|
||||
|
||||
if created_date >= self._last_week:
|
||||
self._update_weekly_counters(row)
|
||||
if created_date > self._this_month:
|
||||
self._update_monthly_counters(row)
|
||||
if created_date <= self._8_days and created_date >= self._14_days:
|
||||
self._update_last_week_counters(row)
|
||||
self._yearly_total += 1
|
||||
|
||||
self._update_state_counter(row['state'])
|
||||
self._update_assigned_counter(row['assigned_to'])
|
||||
self._update_location_counter(row_loc)
|
||||
self._update_new_activations(row)
|
||||
self._update_ci_counter(row)
|
||||
|
||||
def _update_daily_counters(self, row):
|
||||
self._daily_total += 1
|
||||
if self._priority_daily_counter['Total'][row['state']]:
|
||||
self._priority_daily_counter['Total'][row['state']] += 1
|
||||
else:
|
||||
self._priority_daily_counter['Total'][row['state']] = 1
|
||||
|
||||
if self._priority_daily_counter[row['priority']][row['state']]:
|
||||
self._priority_daily_counter[row['priority']][row['state']] += 1
|
||||
else:
|
||||
self._priority_daily_counter[row['priority']][row['state']] = 1
|
||||
|
||||
def _update_weekly_counters(self, row):
|
||||
self._weekly_total += 1
|
||||
|
||||
if row['state'] == 'Closed' or row['state'] == 'Resolved':
|
||||
self._weekly_resolved += 1
|
||||
|
||||
if self._priority_weekly_counter['Total'][row['state']]:
|
||||
self._priority_weekly_counter['Total'][row['state']] += 1
|
||||
else:
|
||||
self._priority_weekly_counter['Total'][row['state']] = 1
|
||||
|
||||
if self._priority_weekly_counter[row['priority']][row['state']]:
|
||||
self._priority_weekly_counter[row['priority']][row['state']] += 1
|
||||
else:
|
||||
self._priority_weekly_counter[row['priority']][row['state']] = 1
|
||||
|
||||
def _update_last_week_counters(self, row):
|
||||
if self._priority_rolling_week_counter['Total'][row['state']]:
|
||||
self._priority_rolling_week_counter['Total'][row['state']] += 1
|
||||
else:
|
||||
self._priority_rolling_week_counter['Total'][row['state']] = 1
|
||||
|
||||
if self._priority_rolling_week_counter[row['priority']][row['state']]:
|
||||
self._priority_rolling_week_counter[row['priority']][row['state']] += 1
|
||||
else:
|
||||
self._priority_rolling_week_counter[row['priority']][row['state']] = 1
|
||||
|
||||
def _update_monthly_counters(self, row):
|
||||
if self._priority_monthly_counter['Total'][row['state']]:
|
||||
self._priority_monthly_counter['Total'][row['state']] += 1
|
||||
else:
|
||||
self._priority_monthly_counter['Total'][row['state']] = 1
|
||||
|
||||
if self._priority_monthly_counter[row['priority']][row['state']]:
|
||||
self._priority_monthly_counter[row['priority']][row['state']] += 1
|
||||
else:
|
||||
self._priority_monthly_counter[row['priority']][row['state']] = 1
|
||||
|
||||
if row['resolved_at'] != '':
|
||||
self._update_resolved_sla(row)
|
||||
|
||||
def _update_ci_counter(self, row):
|
||||
if row['ci'] in self._ci_dict['KPS']:
|
||||
self._ci_counter['Total']['KPS'] += 1
|
||||
elif row['ci'] in self._ci_dict['POS_Android']:
|
||||
self._ci_counter['Total']['POS_Android'] += 1
|
||||
elif row['ci'] in self._ci_dict['POS_iOS']:
|
||||
self._ci_counter['Total']['POS_iOS'] += 1
|
||||
else:
|
||||
self._ci_counter['Total']['Misc'] += 1
|
||||
|
||||
def _update_new_activations(self, row):
|
||||
created_datetime = row['sys_created_on']
|
||||
created_date = datetime.datetime.strptime(created_datetime, '%Y-%m-%d %H:%M:%S %p').date()
|
||||
row_loc = row['location']
|
||||
|
||||
if row['ci'] in self._ci_dict['KPS']:
|
||||
row_ci = 'KPS'
|
||||
elif row['ci'] in self._ci_dict['POS_Android']:
|
||||
row_ci = 'POS_Android'
|
||||
elif row['ci'] in self._ci_dict['POS_iOS']:
|
||||
row_ci = 'POS_iOS'
|
||||
else:
|
||||
return
|
||||
|
||||
if row_loc in self._new_activations.keys():
|
||||
if str(created_date) < self._new_activations[row_loc]['date']:
|
||||
return
|
||||
if row_ci not in self._new_activations[row_loc]['product']:
|
||||
return
|
||||
self._new_activation_counter['Total'][row_loc] += 1
|
||||
self._new_activation_priority_counter[row_loc][row['priority']] += 1
|
||||
self._new_activation_ci_counter[row_loc][row_ci] += 1
|
||||
|
||||
def _extract_incidents(self, row):
|
||||
created_datetime = row['sys_created_on']
|
||||
created_date = datetime.datetime.strptime(created_datetime, '%Y-%m-%d %H:%M:%S %p').date()
|
||||
|
||||
if created_date == self._today:
|
||||
self._daily_incidents.append(row)
|
||||
if created_date >= self._last_week:
|
||||
self._weekly_incidents.append(row)
|
||||
if created_date > self._this_month:
|
||||
self._monthly_incidents.append(row)
|
||||
if created_date <= self._8_days and created_date >= self._14_days:
|
||||
self._8_to_14_incidents.append(row)
|
||||
|
||||
def _update_state_counter(self, state):
|
||||
if state == 'Work in Progress':
|
||||
self._wip_total += 1
|
||||
if state == 'On Hold':
|
||||
self._on_hold_total += 1
|
||||
|
||||
def _update_assigned_counter(self, assignee):
|
||||
if assignee in self._se_counter['Total']:
|
||||
self._se_counter['Total'][assignee] += 1
|
||||
else:
|
||||
self._se_counter['Total'][assignee] = 1
|
||||
|
||||
def _update_location_counter(self, row_loc):
|
||||
if row_loc in self._location_counter['Total']:
|
||||
self._location_counter['Total'][row_loc] += 1
|
||||
else:
|
||||
self._location_counter['Total'][row_loc] = 1
|
||||
|
||||
def _update_resolved_sla(self, row):
|
||||
created = datetime.datetime.strptime(row['sys_created_on'], '%Y-%m-%d %H:%M:%S %p')
|
||||
resolved = datetime.datetime.strptime(row['resolved_at'], '%Y-%m-%d %H:%M:%S %p')
|
||||
|
||||
self._sla_tracker[row['priority']]['time'] += (resolved - created)
|
||||
self._sla_tracker[row['priority']]['Total'] += 1
|
||||
|
||||
###### Getters #####
|
||||
def get_priority_daily_counters(self):
|
||||
return self._priority_daily_counter
|
||||
|
||||
def get_priority_weekly_counters(self):
|
||||
return self._priority_weekly_counter
|
||||
|
||||
def get_priority_rolling_week_counters(self):
|
||||
return self._priority_rolling_week_counter
|
||||
|
||||
def get_priority_monthly_counters(self):
|
||||
return self._priority_monthly_counter
|
||||
|
||||
def get_se_counter(self):
|
||||
return self._se_counter
|
||||
|
||||
def get_location_counter(self):
|
||||
return self._location_counter
|
||||
|
||||
def get_new_activations_counter(self):
|
||||
return self._new_activation_counter
|
||||
|
||||
def get_na_priority_counter(self):
|
||||
return self._new_activation_priority_counter
|
||||
|
||||
def get_na_ci_counter(self):
|
||||
return self._new_activation_ci_counter
|
||||
|
||||
def get_ci_counter(self):
|
||||
return self._ci_counter
|
||||
|
||||
def get_daily_incident(self):
|
||||
return self._daily_incidents
|
||||
|
||||
def get_weekly_incident(self):
|
||||
return self._weekly_incidents
|
||||
|
||||
def get_8_to_14_incident(self):
|
||||
return self._8_to_14_incidents
|
||||
|
||||
def get_monthly_incident(self):
|
||||
return self._monthly_incidents
|
||||
|
||||
def get_daily_total(self):
|
||||
return self._daily_total
|
||||
|
||||
def get_weekly_total(self):
|
||||
return self._weekly_total
|
||||
|
||||
def get_yearly_total(self):
|
||||
return self._yearly_total
|
||||
|
||||
def get_weekly_resolved(self):
|
||||
return self._weekly_resolved
|
||||
|
||||
def get_wip_total(self):
|
||||
return self._wip_total
|
||||
|
||||
def get_on_hold_total(self):
|
||||
return self._on_hold_total
|
||||
|
||||
def get_p1_sla_average(self):
|
||||
if self._sla_tracker['P1 - Critical']['Total'] == 0:
|
||||
return 'Not enough data.'
|
||||
return self._sla_tracker['P1 - Critical']['time'] / self._sla_tracker['P1 - Critical']['Total']
|
||||
|
||||
def get_p2_sla_average(self):
|
||||
if self._sla_tracker['P2 - High']['Total'] == 0:
|
||||
return 'Not enough data.'
|
||||
return self._sla_tracker['P2 - High']['time'] / self._sla_tracker['P2 - High']['Total']
|
||||
|
||||
def get_p3_sla_average(self):
|
||||
if self._sla_tracker['P3 - Medium']['Total'] == 0:
|
||||
return 'Not enough data.'
|
||||
return self._sla_tracker['P3 - Medium']['time'] / self._sla_tracker['P3 - Medium']['Total']
|
||||
|
||||
def get_p4_sla_average(self):
|
||||
if self._sla_tracker['P4 - Low']['Total'] == 0:
|
||||
return 'Not enough data.'
|
||||
return self._sla_tracker['P4 - Low']['time'] / self._sla_tracker['P4 - Low']['Total']
|
||||
|
||||
if __name__ == "__main__":
|
||||
CSVTransform('incident.csv')
|
||||
101
incident.csv
Normal file
101
incident.csv
Normal file
@@ -0,0 +1,101 @@
|
||||
number,location,state,ci,priority,short_description,description,assignment_group,assigned_to,sys_created_on,resolved_at
|
||||
1000,Pennsylvania Ave,Resolved,Connectivity iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-11-05 10:46:28 AM,2025-11-06 02:51:24 AM
|
||||
1007,Santa Monica Blvd,On Hold,Connectivity iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-11-05 10:04:26 AM,
|
||||
1014,Park Ave,Resolved,Receipt Printer,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-11-05 04:08:04 AM,2025-11-05 08:28:12 PM
|
||||
1021,Pennsylvania Ave,On Hold,Card Reader Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-11-04 05:01:51 PM,
|
||||
1028,LAX,Work in Progress,Printer Android,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-11-03 08:23:47 PM,
|
||||
1035,Lombard St,Cancelled,Printer iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-11-03 09:08:02 AM,2025-11-03 03:58:50 PM
|
||||
1042,Broadway,Cancelled,Menu Issue iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-11-02 10:05:49 AM,2025-11-03 01:50:16 AM
|
||||
1049,Pennsylvania Ave,Work in Progress,Card Reader iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-11-01 10:56:30 PM,
|
||||
1056,Pennsylvania Ave,Resolved,New Issue,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-11-01 09:39:10 PM,2025-11-02 08:38:26 PM
|
||||
1063,DEN,Work in Progress,Cash Drawer iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-11-01 09:11:02 PM,
|
||||
1070,MIA,Work in Progress,Order Accuracy Issue,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-11-01 04:38:30 PM,
|
||||
1077,Market St,Work in Progress,Receipt Printer,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-11-01 03:05:37 PM,
|
||||
1084,Wall St,Work in Progress,Card Reader Android,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-31 08:09:00 PM,
|
||||
1091,Miccosukee Rd,Cancelled,Printer iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-31 01:49:49 PM,2025-11-01 08:34:36 AM
|
||||
1098,Lombard St,Work in Progress,Printer iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-30 03:03:17 PM,
|
||||
1105,LAX,Cancelled,POS Hardware iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-29 11:37:21 PM,2025-10-30 09:02:46 PM
|
||||
1112,Washington Ave,Cancelled,New Issue,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-29 03:01:36 AM,2025-10-30 01:21:56 AM
|
||||
1119,Broadway,On Hold,New Issues iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-28 01:33:51 PM,
|
||||
1126,MIA,On Hold,POS Hardware Android,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-27 11:25:44 PM,
|
||||
1133,Miccosukee Rd,Cancelled,POS Hardware Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-27 07:34:08 AM,2025-10-28 04:37:44 AM
|
||||
1140,DFW,On Hold,Menu Issue iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-27 02:02:08 AM,
|
||||
1147,LAX,Resolved,Card Reader Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-26 11:28:51 AM,2025-10-27 02:48:58 AM
|
||||
1154,Broadway,On Hold,New Issues iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-26 08:39:26 AM,
|
||||
1161,DEN,On Hold,Configuration Issue,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-26 07:54:24 AM,
|
||||
1168,Magnolia Blvd,Cancelled,POS Hardware iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-25 11:12:30 PM,2025-10-26 07:39:44 PM
|
||||
1175,Abbey Road,Cancelled,Configuration Issue,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-25 04:30:52 PM,2025-10-26 05:50:59 AM
|
||||
1182,Santa Monica Blvd,Resolved,POS Hardware iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-25 07:15:57 AM,2025-10-25 07:48:49 AM
|
||||
1189,Magnolia Blvd,Cancelled,Sticky Printer,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-24 10:35:04 PM,2025-10-25 06:56:42 AM
|
||||
1196,Bourbon St,Resolved,Printer Android,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-24 01:55:49 AM,2025-10-24 09:40:55 AM
|
||||
1203,LAX,Resolved,Connectivity Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-23 04:30:47 AM,2025-10-23 08:39:08 AM
|
||||
1210,Pennsylvania Ave,On Hold,Order Accuracy Issue,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-22 09:22:12 AM,
|
||||
1217,Broadway,On Hold,Printer iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-22 08:03:35 AM,
|
||||
1224,Canal St,On Hold,Menu Issue iOS,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-22 05:15:08 AM,
|
||||
1231,Market St,Resolved,Cash Drawer iOS,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-21 04:57:03 PM,2025-10-22 09:27:00 AM
|
||||
1238,Market St,Cancelled,Printer iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-21 06:42:07 AM,2025-10-21 08:50:27 PM
|
||||
1245,MIA,Resolved,Connectivity iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-20 11:19:05 PM,2025-10-21 12:22:33 PM
|
||||
1252,Abbey Road,Cancelled,Connectivity iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-20 10:12:08 PM,2025-10-21 07:10:39 PM
|
||||
1259,Broadway,Resolved,Connectivity Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-20 08:27:40 AM,2025-10-20 09:56:48 PM
|
||||
1266,Park Ave,On Hold,Card Reader iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-20 07:05:36 AM,
|
||||
1273,Bourbon St,Cancelled,Receipt Printer,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-19 09:54:11 PM,2025-10-20 09:09:28 AM
|
||||
1280,Broadway,Cancelled,POS Hardware iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-19 07:02:49 PM,2025-10-20 12:32:45 PM
|
||||
1287,Pennsylvania Ave,Resolved,Receipt Printer,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-19 10:19:40 AM,2025-10-20 09:21:52 AM
|
||||
1294,Miccosukee Rd,On Hold,Cash Drawer Android,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-19 01:00:56 AM,
|
||||
1301,Park Ave,Cancelled,New Issue,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-18 10:03:44 PM,2025-10-19 04:20:58 AM
|
||||
1308,Park Ave,Resolved,Sticky Printer,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-18 10:57:09 AM,2025-10-18 07:53:12 PM
|
||||
1315,Los Vegas Strip,Cancelled,POS Hardware Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-18 08:30:29 AM,2025-10-18 12:30:13 PM
|
||||
1322,Los Vegas Strip,Cancelled,Connectivity iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-17 11:47:05 PM,2025-10-18 08:42:37 PM
|
||||
1329,Abbey Road,Cancelled,Card Reader iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-17 09:42:37 AM,2025-10-18 03:50:16 AM
|
||||
1336,LAX,Resolved,Receipt Printer,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-16 11:15:18 AM,2025-10-17 02:16:53 AM
|
||||
1343,DFW,Cancelled,Receipt Printer,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-16 06:46:29 AM,2025-10-16 02:59:19 PM
|
||||
1350,Broadway,Resolved,Menu Issue Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-15 10:48:56 PM,2025-10-16 05:07:18 PM
|
||||
1357,Market St,Resolved,Sticky Printer,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-15 02:32:52 AM,2025-10-15 08:30:23 AM
|
||||
1364,Market St,Resolved,Bump Bar,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-14 09:35:50 AM,2025-10-14 11:29:56 AM
|
||||
1371,Wall St,Cancelled,Card Reader Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-13 11:04:40 AM,2025-10-13 04:16:01 PM
|
||||
1378,Miccosukee Rd,Cancelled,KPS Hardware,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-12 09:52:38 PM,2025-10-13 11:30:24 AM
|
||||
1385,DEN,Cancelled,KPS Hardware,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-12 11:20:15 AM,2025-10-12 03:33:48 PM
|
||||
1392,Park Ave,Resolved,New Issues Android,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-12 09:31:09 AM,2025-10-12 09:24:47 PM
|
||||
1399,MIA,Cancelled,Configuration Issue,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-10-11 07:17:06 PM,2025-10-12 04:17:58 PM
|
||||
1406,Bourbon St,Resolved,Order Accuracy Issue,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-11 10:38:41 AM,2025-10-12 08:10:02 AM
|
||||
1413,Pennsylvania Ave,Cancelled,POS Hardware iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-10 05:02:12 PM,2025-10-11 12:12:28 AM
|
||||
1420,Los Vegas Strip,Cancelled,New Issue,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-09 05:42:15 PM,2025-10-09 05:42:36 PM
|
||||
1427,DEN,Resolved,Menu Issue Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-09 04:02:48 AM,2025-10-09 08:03:59 PM
|
||||
1434,Canal St,Cancelled,KPS Hardware,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-08 10:58:01 PM,2025-10-09 11:50:46 AM
|
||||
1441,Magnolia Blvd,Cancelled,New Issues Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-08 01:12:50 PM,2025-10-09 02:21:07 AM
|
||||
1448,Canal St,Cancelled,New Issues iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-07 05:57:56 PM,2025-10-08 10:24:17 AM
|
||||
1455,Los Vegas Strip,Resolved,Sticky Printer,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-07 04:39:07 PM,2025-10-08 06:16:49 AM
|
||||
1462,Market St,Cancelled,Cash Drawer iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-07 02:10:53 AM,2025-10-07 11:05:29 PM
|
||||
1469,LAX,Cancelled,Connectivity Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-06 10:55:52 AM,2025-10-06 03:25:44 PM
|
||||
1476,Market St,Cancelled,Card Reader Android,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-06 08:14:22 AM,2025-10-07 05:19:17 AM
|
||||
1483,Magnolia Blvd,Cancelled,Connectivity iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-05 01:23:12 PM,2025-10-06 01:00:15 PM
|
||||
1490,DFW,Cancelled,Configuration Issue,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-04 03:29:25 PM,2025-10-04 04:51:27 PM
|
||||
1497,Broadway,Resolved,Connectivity Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-10-04 01:04:19 PM,2025-10-04 02:46:00 PM
|
||||
1504,Los Vegas Strip,Cancelled,Sticky Printer,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-03 05:17:54 PM,2025-10-04 05:44:13 AM
|
||||
1511,DFW,Cancelled,Cash Drawer iOS,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-10-03 06:05:22 AM,2025-10-03 03:51:22 PM
|
||||
1518,Wall St,Cancelled,Receipt Printer,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-03 04:53:13 AM,2025-10-03 01:45:20 PM
|
||||
1525,MIA,Cancelled,Menu Issue Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-10-02 09:54:22 AM,2025-10-02 03:29:24 PM
|
||||
1532,Baker St,Cancelled,Card Reader iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-10-01 06:38:19 PM,2025-10-02 07:12:00 AM
|
||||
1539,Market St,Resolved,Card Reader Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-10-01 02:18:42 AM,2025-10-01 10:13:19 AM
|
||||
1546,DEN,Resolved,Connectivity Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-09-30 06:22:03 AM,2025-10-01 12:04:45 AM
|
||||
1553,Wall St,Cancelled,KPS Hardware,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-09-29 12:32:43 PM,2025-09-30 09:08:59 AM
|
||||
1560,Bourbon St,Resolved,Printer Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-09-28 11:00:38 PM,2025-09-29 12:23:34 AM
|
||||
1567,Canal St,Resolved,Sticky Printer,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-28 04:43:49 PM,2025-09-29 07:54:52 AM
|
||||
1574,Abbey Road,Cancelled,KPS Hardware,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-09-27 05:11:58 PM,2025-09-27 07:58:17 PM
|
||||
1581,Canal St,Resolved,Cash Drawer Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-09-27 10:49:08 AM,2025-09-28 03:19:31 AM
|
||||
1588,Los Vegas Strip,Resolved,New Issues iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-09-26 11:21:24 PM,2025-09-27 01:47:21 AM
|
||||
1595,DEN,Resolved,Menu Issue iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-26 09:14:18 PM,2025-09-27 02:00:50 AM
|
||||
1602,Los Vegas Strip,Resolved,POS Hardware Android,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-09-26 03:49:50 AM,2025-09-26 03:52:48 AM
|
||||
1609,Washington Ave,Cancelled,Configuration Issue,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-09-25 06:01:03 AM,2025-09-25 12:14:44 PM
|
||||
1616,LAX,Resolved,Sticky Printer,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-09-24 07:30:15 AM,2025-09-25 02:46:26 AM
|
||||
1623,LAX,Cancelled,Card Reader Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Kevin Von Stork,2025-09-23 09:26:34 AM,2025-09-24 06:12:10 AM
|
||||
1630,DFW,Cancelled,Menu Issue iOS,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-22 09:36:55 AM,2025-09-22 12:44:40 PM
|
||||
1637,Canal St,Resolved,Connectivity iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Adam Lee,2025-09-21 11:54:05 PM,2025-09-22 12:04:50 AM
|
||||
1644,Santa Monica Blvd,Resolved,Menu Issue Android,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-21 09:48:56 AM,2025-09-22 01:50:13 AM
|
||||
1651,Park Ave,Resolved,Menu Issue Android,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-09-20 11:07:58 PM,2025-09-21 09:46:15 PM
|
||||
1658,Baker St,Resolved,New Issues iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Jacob Yero,2025-09-20 02:54:42 PM,2025-09-20 04:12:09 PM
|
||||
1665,Magnolia Blvd,Cancelled,New Issue,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Michelle Crawford,2025-09-20 12:20:33 PM,2025-09-20 02:55:21 PM
|
||||
1672,DEN,Cancelled,New Issues iOS,P3 - Medium,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L4,Nick Kalar,2025-09-19 04:09:02 PM,2025-09-20 10:25:52 AM
|
||||
1679,Fifth Ave,Resolved,Cash Drawer iOS,P2 - High,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-18 04:39:33 PM,2025-09-19 03:36:26 AM
|
||||
1686,Fifth Ave,Resolved,Menu Issue iOS,P4 - Low,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-17 07:15:49 PM,2025-09-17 10:28:11 PM
|
||||
1693,Wall St,Cancelled,New Issues Android,P1 - Critical,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",Managed Support L3,Jeff Singleton,2025-09-16 07:58:58 PM,2025-09-16 11:38:20 PM
|
||||
|
48
pandas_helper.py
Normal file
48
pandas_helper.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import pandas as pd
|
||||
import xlsxwriter
|
||||
|
||||
# Just a few functions to help with Pandas
|
||||
|
||||
def set_data_frame_transposed(passed_data):
|
||||
df_data = pd.DataFrame(data=passed_data)
|
||||
df_data = df_data.T
|
||||
(col, row) = df_data.shape
|
||||
|
||||
return (df_data, col, row)
|
||||
|
||||
def set_data_frame(passed_data):
|
||||
df_data = pd.DataFrame(data=passed_data)
|
||||
(col, row) = df_data.shape
|
||||
|
||||
return (df_data, col, row)
|
||||
|
||||
def make_bar_chart(workbook, title, series_length, series_height, start_row, start_col):
|
||||
end_row = (series_height + start_row - 1)
|
||||
chart = workbook.add_chart({'type': 'column'})
|
||||
|
||||
chart.set_title({'name': f'{title}'})
|
||||
for series in range(series_length):
|
||||
chart.add_series({
|
||||
'name': ['Tables', start_row-1, start_col+series],
|
||||
'categories': ['Tables', start_row, start_col-1, end_row, start_col-1],
|
||||
'values': ['Tables', start_row, start_col+series, end_row, start_col+series],
|
||||
})
|
||||
chart.set_size({'x_scale': 1.5, 'y_scale': 1.5})
|
||||
|
||||
return chart
|
||||
|
||||
def make_pie_chart(workbook, title, series_length, series_height, start_row, start_col):
|
||||
end_row = (series_height + start_row - 1)
|
||||
chart = workbook.add_chart({'type': 'pie'})
|
||||
|
||||
chart.set_title({'name': f'{title}'})
|
||||
for series in range(series_length):
|
||||
chart.add_series({
|
||||
'name': ['Tables', start_row-1, start_col+series],
|
||||
'categories': ['Tables', start_row, start_col-1, end_row, start_col-1],
|
||||
'values': ['Tables', start_row, start_col+series, end_row, start_col+series],
|
||||
'data_labels': {'category': True},
|
||||
})
|
||||
chart.set_size({'x_scale': 1.5, 'y_scale': 1.5})
|
||||
|
||||
return chart
|
||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
pandas
|
||||
openpyxl
|
||||
xlsxwriter
|
||||
jinja2
|
||||
257
transform.py
Normal file
257
transform.py
Normal file
@@ -0,0 +1,257 @@
|
||||
import csv
|
||||
import pandas as pd
|
||||
import xlsxwriter
|
||||
import csv_transformer as csv_t
|
||||
import pandas_helper as ph
|
||||
|
||||
def get_letter_from_col(col):
|
||||
# Excel uses capital English characters for it's columns.
|
||||
# To simplify finding it, we can mod the index with 26 and
|
||||
# return the indexed character as done below.
|
||||
# NOTE: Creaks after index 701.
|
||||
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
result = ''
|
||||
if col > 25:
|
||||
result += alphabet[(col // 26)-1 % 26]
|
||||
result += alphabet[col % 26]
|
||||
return result
|
||||
|
||||
def make_and_insert_title_box(text, row_offset = 0, col_offset = 0):
|
||||
global title_row
|
||||
global title_col
|
||||
title_options = {
|
||||
'height': 40,
|
||||
'width': 360,
|
||||
'fill': {'color': '#D3D3D3'},
|
||||
'align': {'vertical': 'middle', 'horizontal': 'center'},
|
||||
'font': {'bold': True, 'underline': True, 'size': 16}
|
||||
}
|
||||
|
||||
title_row += row_offset
|
||||
title_col += col_offset
|
||||
|
||||
worksheet_charts.insert_textbox(title_row, title_col, text, title_options)
|
||||
|
||||
def make_and_insert_body_box(text, row_offset = 0, col_offset = 0, font_size = 125):
|
||||
global body_row
|
||||
global body_col
|
||||
body_options = {
|
||||
'height': 178,
|
||||
'width' : 360,
|
||||
'align' : {'vertical': 'middle', 'horizontal': 'center'},
|
||||
'font' : {'size': font_size},
|
||||
}
|
||||
|
||||
body_row += row_offset
|
||||
body_col += col_offset
|
||||
|
||||
worksheet_charts.insert_textbox(body_row, body_col, text, body_options)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
###### Process Row CSV ######
|
||||
raw_data = csv_t.CSVTransform('incident.csv')
|
||||
|
||||
###### Time Based Counters ######
|
||||
(df_p_d_count, pd_col, pd_row) = ph.set_data_frame_transposed(raw_data.get_priority_daily_counters())
|
||||
(df_p_w_count, pw_col, pw_row) = ph.set_data_frame_transposed(raw_data.get_priority_weekly_counters())
|
||||
(df_p_lw_count, plw_col, plw_row) = ph.set_data_frame_transposed(raw_data.get_priority_rolling_week_counters())
|
||||
(df_p_m_count, pm_col, pm_row) = ph.set_data_frame_transposed(raw_data.get_priority_monthly_counters())
|
||||
|
||||
###### New Activation Location Incident Counters ######
|
||||
(df_na_p_count, nap_col, nap_row) = ph.set_data_frame_transposed(raw_data.get_na_priority_counter())
|
||||
(df_na_ci_count, naci_col, naci_row) = ph.set_data_frame_transposed(raw_data.get_na_ci_counter())
|
||||
|
||||
###### Category Counters ######
|
||||
(df_se_count, df_se_col, df_se_row) = ph.set_data_frame(raw_data.get_se_counter())
|
||||
(df_loc_count, df_loc_col, df_loc_row) = ph.set_data_frame(raw_data.get_location_counter())
|
||||
(df_ci_count, df_ci_col, df_ci_row) = ph.set_data_frame(raw_data.get_ci_counter())
|
||||
(df_na_count, df_na_col, df_na_row) = ph.set_data_frame(raw_data.get_new_activations_counter())
|
||||
|
||||
###### Time Based Incident Data ######
|
||||
(df_daily_incidents, _, _) = ph.set_data_frame(raw_data.get_daily_incident())
|
||||
if not df_daily_incidents.empty:
|
||||
df_daily_incidents = df_daily_incidents.set_index('number')
|
||||
(df_weekly_incidents, _, _) = ph.set_data_frame(raw_data.get_weekly_incident())
|
||||
if not df_weekly_incidents.empty:
|
||||
df_weekly_incidents = df_weekly_incidents.set_index('number')
|
||||
(df_8_to_14_incidents, _, _) = ph.set_data_frame(raw_data.get_8_to_14_incident())
|
||||
if not df_8_to_14_incidents.empty:
|
||||
df_8_to_14_incidents = df_8_to_14_incidents.set_index('number')
|
||||
(df_monthly_incidents, _, _) = ph.set_data_frame(raw_data.get_monthly_incident())
|
||||
if not df_monthly_incidents.empty:
|
||||
df_monthly_incidents = df_monthly_incidents.set_index('number')
|
||||
|
||||
|
||||
with open('incident.csv', newline='', encoding='cp1252') as csvfile:
|
||||
df_raw_data = pd.DataFrame(data=csv.DictReader(csvfile))
|
||||
df_raw_data = df_raw_data.set_index('number')
|
||||
|
||||
with pd.ExcelWriter(f'./outputs/Incident_Report_{raw_data._today}.xlsx', engine='xlsxwriter') as writer:
|
||||
workbook = writer.book
|
||||
bold_text = workbook.add_format({'bold': True})
|
||||
worksheet_charts = workbook.add_worksheet('Charts')
|
||||
worksheet_tables = workbook.add_worksheet('Tables')
|
||||
|
||||
###### Text Boxes for at-a-glance information
|
||||
title_row = 1
|
||||
title_col = 2
|
||||
body_row = title_row + 2
|
||||
body_col = title_col
|
||||
|
||||
make_and_insert_title_box('New Incidents Logged Today')
|
||||
make_and_insert_body_box(str(raw_data.get_daily_total()))
|
||||
|
||||
make_and_insert_title_box('New Incidents Logged Last 7 Days', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_weekly_total()), col_offset=6)
|
||||
|
||||
make_and_insert_title_box('New Incidents Logged This Year', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_yearly_total()), col_offset=6)
|
||||
|
||||
make_and_insert_title_box('P1 Monthly Average Resolved Time', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_p1_sla_average()), col_offset=6, font_size=36)
|
||||
|
||||
make_and_insert_title_box("P2 Monthly Average Resolved Time", col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_p2_sla_average()), col_offset=6, font_size=36)
|
||||
|
||||
make_and_insert_title_box('Work In Progress Incidents', row_offset=12, col_offset=-24)
|
||||
make_and_insert_body_box(str(raw_data.get_wip_total()), row_offset=12, col_offset=-24)
|
||||
|
||||
make_and_insert_title_box('On Hold Incidents', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_on_hold_total()), col_offset=6)
|
||||
|
||||
make_and_insert_title_box('Resolved/Closed Last 7 days', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_weekly_resolved()), col_offset=6)
|
||||
|
||||
make_and_insert_title_box('P3 Monthly Average Resolved Time', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_p3_sla_average()), col_offset=6, font_size=36)
|
||||
|
||||
make_and_insert_title_box('P4 Monthly Average Resolved Time', col_offset=6)
|
||||
make_and_insert_body_box(str(raw_data.get_p4_sla_average()), col_offset=6, font_size=36)
|
||||
|
||||
|
||||
|
||||
##################################
|
||||
### Start Left 'Tables' Column ###
|
||||
##### Includes their charts ######
|
||||
##################################
|
||||
tables_start_row = 1
|
||||
tables_start_col = 1
|
||||
space = 3
|
||||
col_letter = get_letter_from_col(tables_start_col)
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'Daily Incidents by Priority and Status', bold_text)
|
||||
df_p_d_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - Daily', pd_row,
|
||||
pd_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(25, 1, chart)
|
||||
|
||||
tables_start_row = tables_start_row + pd_row + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row),
|
||||
'Incidents for Last 7 Days by Priority and Status', bold_text)
|
||||
df_p_w_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - Last 7 Days', pw_row,
|
||||
pw_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(48, 1, chart)
|
||||
|
||||
tables_start_row = tables_start_row + pd_row + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row),
|
||||
'Incidents Between 8 and 14 Days by Priority and Status', bold_text)
|
||||
df_p_lw_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - Last 8-14 Days', plw_row,
|
||||
plw_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(71, 1, chart)
|
||||
|
||||
tables_start_row = tables_start_row + pd_row + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'Monthly incidents by Priority Count', bold_text)
|
||||
df_p_m_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - Last 8-14 Days', pm_row,
|
||||
pm_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(91, 1, chart)
|
||||
|
||||
tables_start_row = tables_start_row + pd_row + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'New Activations Priority Count', bold_text)
|
||||
df_na_p_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'New Activation Site - Incident Priority', nap_row,
|
||||
nap_col, tables_start_row+1, tables_start_col+1)
|
||||
if chart.series:
|
||||
worksheet_charts.insert_chart(48, 25, chart)
|
||||
|
||||
tables_start_row = tables_start_row + pd_row + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'New Activations Platform', bold_text)
|
||||
df_na_ci_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
|
||||
chart = ph.make_bar_chart(workbook, 'New Activation Site - Incident Platform', nap_row,
|
||||
nap_col, tables_start_row+1, tables_start_col+1)
|
||||
if chart.series:
|
||||
worksheet_charts.insert_chart(71, 25, chart)
|
||||
################################
|
||||
### End Left 'Tables' Column ###
|
||||
################################
|
||||
|
||||
|
||||
####################################
|
||||
### Start Middle 'Tables' Column ###
|
||||
###### Includes their charts #######
|
||||
####################################
|
||||
tables_start_row = 1
|
||||
tables_start_col += max(pd_col, pw_col, plw_col, pm_col, nap_col, naci_col) + space
|
||||
col_letter = get_letter_from_col(tables_start_col)
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'Incident Count By Support Personnel - CY', bold_text)
|
||||
df_se_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - Assignee - CY',
|
||||
df_se_row, df_se_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(25, 13, chart)
|
||||
|
||||
tables_start_row = tables_start_row + df_se_col + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'Incident Count By Known Platform', bold_text)
|
||||
df_ci_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - Platform - CY',
|
||||
df_ci_row, df_ci_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(78, 13, chart)
|
||||
|
||||
tables_start_row = tables_start_row + df_ci_col + space
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'Incident Count By New Activation Site', bold_text)
|
||||
df_na_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_bar_chart(workbook, 'Incident Chart - New Activations',
|
||||
df_na_row, df_na_col, tables_start_row+1, tables_start_col+1)
|
||||
|
||||
if chart.series:
|
||||
worksheet_charts.insert_chart(25, 25, chart)
|
||||
##################################
|
||||
### End Middle 'Tables' Column ###
|
||||
##################################
|
||||
|
||||
|
||||
###################################
|
||||
### Start Right 'Tables' Column ###
|
||||
###### Includes their charts ######
|
||||
###################################
|
||||
tables_start_row = 1
|
||||
tables_start_col += max(df_se_row, df_ci_row, df_na_row) + space
|
||||
col_letter = get_letter_from_col(tables_start_col)
|
||||
|
||||
worksheet_tables.write(col_letter + str(tables_start_row), 'Incident Count By Location Number - CY', bold_text)
|
||||
df_loc_count.to_excel(writer, sheet_name='Tables', startrow=tables_start_row, startcol=tables_start_col)
|
||||
chart = ph.make_pie_chart(workbook, 'Incident Chart - Location Number - CY', df_loc_row, df_loc_col, tables_start_row+1, tables_start_col+1)
|
||||
worksheet_charts.insert_chart(48, 13, chart)
|
||||
#################################
|
||||
### End Right 'Tables' Column ###
|
||||
#################################
|
||||
|
||||
|
||||
### Extra Sheets ###
|
||||
df_daily_incidents.to_excel(writer, sheet_name='Daily Incidents', startrow=0, startcol=0)
|
||||
df_weekly_incidents.to_excel(writer, sheet_name='Last 7 Day Incidents', startrow=0, startcol=0)
|
||||
df_8_to_14_incidents.to_excel(writer, sheet_name='8 to 14 Day Incidents', startrow=0, startcol=0)
|
||||
df_monthly_incidents.to_excel(writer, sheet_name='Monthly Incidents', startrow=0, startcol=0)
|
||||
df_raw_data.to_excel(writer, sheet_name='Raw Data', startrow=0, startcol=0)
|
||||
Reference in New Issue
Block a user