import tkinter as tk
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
from tkinter import filedialog
import os
import pandas as pd
import pickle
from PIL import Image, ImageTk
from pandastable import Table, TableModel
import matplotlib.pyplot as plt
import seaborn as sns

# Instantiate GUI and Set Display Dimensions
root = tk.Tk()
root.title('Jora WebScrape Dashboard')
root.geometry("440x850")
folder_path = StringVar()

# Set Up Tabs
tabControl = ttk.Notebook(root)  
tab1 = ttk.Frame(tabControl) 

tabControl.add(tab1, text ='Search') 
tabControl.grid(row=0, column=0) 

def Search_Jora_Button():
	global Kw
	global Ct
	global St

	# Country Selectors
	country = variable.get()
	if country == 'Australia':
		c = 'au'
	elif country == 'United Kingdom':
		c = 'uk'
	elif country == 'New Zealand':
		c = 'nz'
	elif country == 'United States':
		c = 'us'
	elif country == 'Singapore':
		c = 'sg'
	elif country == 'Canada':
		c = 'ca' 

	
	# Job Type Selectors
	jobtype = variable2.get()
	if jobtype == 'Any Type':
		c2 = ''
	elif jobtype == 'Full Time':
		c2 = 'jt=3&'
	elif jobtype == 'Part Time':
		c2 = 'jt=1&'
	elif jobtype == 'Casual/Temp':
		c2 = 'jt=2&'
	elif jobtype == 'Contract':
		c2 = 'jt=4&'
	elif jobtype == 'Permanent':
		c2 = 'jt=6&'


	#Listing Age Selectors
	lage = variable3.get()
	if lage == 'Any Time':
		c3 = ''
	elif lage == 'Last 24 hrs':
		c3 = 'a=1&'
	elif lage == 'Last 7 days':
		c3 = 'a=7&'
	elif lage == 'Last 14 days':
		c3 = 'a=14&'
	elif lage == 'Last 30 days':
		c3 = 'a=30&'




	
	print('Country: '+str(c))
	os.chdir(str(folder_selected))

	Kw = Keyword_entry.get()
	Ct = City_entry.get()
	try:
		St = State_entry.get()
	except:
		St = ''
	# Dealing with spaces
	try:
		Ct = Ct.str.replace(' ','+')
	except:
		pass
	try:
		Kw = Kw.str.replace(' ','+')
	except:
		pass
	try:
		St = St.str.replace(' ','+') 
	except:
		pass

	Path = (str(folder_selected)+str('/'))
	Search = [Kw, Ct, St, Path, c, c2, c3]

	with open("test.txt", "wb") as fp:
		pickle.dump(Search, fp)
		print('Keyword: '+str(Kw))
		print('City: '+str(Ct))
		print('State: '+str(St)+'\n')
		print('Path: '+str(Path))
   
	import Jora_Scrape_test

####### Tab 1 - Search Input and Run Script ##############

# Inputs for the Search
Keyword = tk.Label(tab1, text="Keyword: ").grid(row=0, column=0, sticky='e')
Keyword_entry = tk.Entry(tab1)
Keyword_entry.grid(row=0,column=1,stick='w', columnspan=3)

City = tk.Label(tab1, text="City: ").grid(row=1,column=0, sticky='e')
City_entry = tk.Entry(tab1)
City_entry.grid(row=1,column=1, sticky='w')

State = tk.Label(tab1, text="State: ").grid(row=2,column=0, sticky='e')
State_entry = tk.Entry(tab1)
State_entry.grid(row=2,column=1, sticky='w')

tk.Label(tab1, text="    ").grid(row=0,column=2, sticky='e')
tk.Label(tab1, text="    ").grid(row=0,column=6, sticky='e')






# Country Selector
global country
global variable
OList = ['Australia','United States','United Kingdom','Canada','Singapore','New Zealand']
variable = tk.StringVar(tab1)
variable.set(OList[0])
opt = tk.OptionMenu(tab1, variable, *OList)
opt.config(width=14)
opt.grid(row=0,column=2, sticky='w', columnspan=2)

# Job Type Selector
global job_type
global variable2
OList2 = ['Any Type','Full Time','Permanent','Contract','Casual/Temp','Part Time']
variable2 = tk.StringVar(tab1)
variable2.set(OList2[0])
opt = tk.OptionMenu(tab1, variable2, *OList2)
opt.config(width=14)
opt.grid(row=1,column=2, sticky='w', columnspan=2)

# Listing Age Selector
global listing_age
global variable3
OList3 = ['Any Time','Last 24 hrs','Last 7 days','Last 14 days','Last 30 days']
variable3 = tk.StringVar(tab1)
variable3.set(OList3[0])
opt = tk.OptionMenu(tab1, variable3, *OList3)
opt.config(width=14)
opt.grid(row=2,column=2, sticky='w', columnspan=2)






def getFolderPath():
	global folder_selected
	folder_selected = filedialog.askdirectory()
	folder_path.set(folder_selected)
	print(folder_selected)
	


# Add Options
Dictionary = tk.Label(tab1, text="Step 3: ").grid(row=2,column=4, sticky='e')
KInput = tk.Label(tab1, text="Step 2: ").grid(row=1,column=4, sticky='e')
Save = tk.Label(tab1, text="Step 1: ").grid(row=0,column=4, sticky='e')







############## - Filters ##################
def update_salary():
	os.chdir(str(folder_selected))
	salsfilter = int(salary.get())
	print(salsfilter)

	# Filter DataFrame
	global df
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv')
	df['SalMin'] = df['Salary'].str.replace(",","")
	df['SalMin'] = df.SalMin.str.extract('(\d+)')
	df.dropna(subset=['SalMin'],inplace=True)
	df['SalMin'] = df['SalMin'].astype(int)

	df[df['SalMin'] >= salsfilter].to_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv', index=False) 
	
	# Pandas Table - Update
	LF = tk.LabelFrame(tab1)
	LF.grid(row=11, column=7, rowspan=3, sticky='ns', columnspan=2)
	pt = Table(LF)
	pt.importCSV(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
	pt.show()

	# Update Job Titles Based on Salary Filter
	jts = df
	var = tk.StringVar()
	var.set(list(jts['Title'].drop_duplicates()))
	jt = tk.Listbox(tab1, listvariable=var)
	jt.grid(row=11, column=1, sticky='ns')

	# Update Company Based on Salary Filter
	cc = df
	var = tk.StringVar()
	var.set(list(cc['Company'].drop_duplicates()))
	cc = tk.Listbox(tab1, listvariable=var)
	cc.grid(row=13, column=1, sticky='ns')

	# Update Company Based on Salary Filter
	ss = df
	var = tk.StringVar()
	var.set(list(ss['Location'].drop_duplicates()))
	ss = tk.Listbox(tab1, listvariable=var)
	ss.grid(row=15, column=1, sticky='ns')

	############### Update Salary Histogram #########################################################


	def describe_helper(series):
	    splits = str(series.describe()).split()
	    keys, values = "", ""
	    for i in range(0, len(splits), 2):
	    	keys += "{:8}\n".format(splits[i])
	    	values += "{:>.7}\n".format(splits[i+1])
	    return keys, values

	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
	fig, ax = plt.subplots()
	sals = ((df['SalMin'].astype(int))/1000)

	ax.hist(sals)
	plt.figtext(.95, .49, describe_helper(pd.Series(sals))[0])
	plt.figtext(1.05, .49, describe_helper(pd.Series(sals))[1])
	plt.ylabel('Frequency')
	plt.xlabel('Annual Wage')
	sns.set()
	plt.title('Keyword: '+str(Kw)+' '+str(Ct)+' - Salary $K pa (Filtered)')
	plt.savefig(str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_Salary_filtered.png',dpi=300, bbox_inches = "tight")

	zoom = 0.16

	# Image 2 - SALARY

	file = str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_Salary_filtered.png'
	image = Image.open(file)
	pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
	photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
	label = Label(tab1, image = photo)
	label.image = photo
	label.grid(row=13, column=3, sticky='we', columnspan=3)

	############ Update Listings Chart ##############################################################

	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
	Date = df.groupby(by=['Listed']).count().reset_index()
	plt.figure(figsize=(10,2))
	plt.plot(Date['Listed'], Date['Company'])
	plt.title('Keyword: '+str(Kw)+' '+str(Ct)+' - Job Listings (filtered)')
	plt.ylabel('Number of New Listings')
	plt.xlabel('Listing Date')
	plt.xticks(Date['Listed'], Date['Listed'], rotation='vertical')
	plt.savefig(str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_ListingsDate_Filtered.png',dpi=500, bbox_inches = "tight")

	# Image 1 - LISTING DATE
	zoom = 0.085
	file = str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_ListingsDate_Filtered.png'
	image = Image.open(file)
	#multiple image size by zoom
	pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
	# Plots
	photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
	label = Label(tab1, image = photo)
	label.image = photo
	label.grid(row=11, column=3, sticky='we', columnspan=3)












def update_ListingDate():
	os.chdir(str(folder_selected))
	datefilter = int(ListingDate.get())
	print(datefilter)

	# Pandas Table - Update
	LF = tk.LabelFrame(tab1)
	LF.grid(row=11, column=7, rowspan=3, sticky='ns', columnspan=2)
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv')
	df[df['LAge'] < datefilter].to_csv(
		str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv', index=False) 
	pt = Table(LF)
	pt.importCSV(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
	pt.show()

	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
	Date = df.groupby(by=['Listed']).count().reset_index()
	plt.figure(figsize=(10,2))
	plt.plot(Date['Listed'], Date['Company'])
	plt.title('Keyword: '+str(Kw)+' '+str(Ct)+' - Job Listings (filtered)')
	plt.ylabel('Number of New Listings')
	plt.xlabel('Listing Date')
	plt.xticks(Date['Listed'], Date['Listed'], rotation='vertical')
	plt.savefig(str(Kw)+'_'+str(City)+'_ListingsDate_Filtered.png',dpi=500, bbox_inches = "tight")

	# Image 1 - LISTING DATE
	zoom = 0.085
	file = str(Kw)+'_'+str(City)+'_ListingsDate_Filtered.png'
	image = Image.open(file)
	#multiple image size by zoom
	pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
	# Plots
	photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
	label = Label(tab1, image = photo)
	label.image = photo
	label.grid(row=11, column=3, sticky='we', columnspan=3)







def update_titles():
	# Job Title - Update Database based on Job Title Selection
	os.chdir(str(folder_selected))
	global jt
	if jt.curselection():
		for i in jt.curselection():
			jtfilter = jt.get(i)
			print(jtfilter)
		dfFiltered = df[df['Title']==jtfilter] 
		# print(dfFiltered)


		# Pandas Table - Update
		LF = tk.LabelFrame(tab1)
		LF.grid(row=11, column=7, rowspan=3, sticky='ns', columnspan=2)
		df[df['Title']==jtfilter].to_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv', index=False) 
		pt = Table(LF)
		pt.importCSV(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
		pt.show()

		# Update Job Titles Based on Salary Filter
		jt = df
		var = tk.StringVar()
		var.set(list(jt['Title'].drop_duplicates()))
		
		jt = tk.Listbox(tab1, listvariable=var)
		jt.grid(row=11, column=1, sticky='ns')

		# Update Company Based on Salary Filter
		cc = df
		var = tk.StringVar()
		var.set(list(cc['Company'].drop_duplicates()))
		cc = tk.Listbox(tab1, listvariable=var)
		cc.grid(row=13, column=1, sticky='ns')

	else:
		pass












def update_company():
	# Company - Update Database based on Company Selection
	os.chdir(str(folder_selected))
	if cc.curselection():
		for i in cc.curselection():
			ccfilter = cc.get(i)
			print(ccfilter)
		dfFiltered = df[df['Company']==ccfilter] 
		# print(dfFiltered)

		# Pandas Table - Update
		LF = tk.LabelFrame(tab1)
		LF.grid(row=11, column=7, rowspan=3, sticky='ns', columnspan=2)
		df[df['Company']==ccfilter].to_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv', index=False) 
		pt = Table(LF)
		pt.importCSV(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
		pt.show()

		# Update Job Titles Based on Salary Filter
		global cjts
		cjts = df
		var = tk.StringVar()
		var.set(list(cjts['Title'].drop_duplicates()))
		cjts = tk.Listbox(tab1, listvariable=var)
		cjts.grid(row=11, column=1, sticky='ns')

		# Update Company Based on Salary Filter
		global ccc
		ccc = df
		var = tk.StringVar()
		var.set(list(ccc['Company'].drop_duplicates()))
		ccc= tk.Listbox(tab1, listvariable=var)
		ccc.grid(row=13, column=1, sticky='ns')

	else:
		pass









def update_location():
	# Software - Update Database based on Software Selection
	os.chdir(str(folder_selected))
	if ss.curselection():
		for i in ss.curselection():
			ssfilter = ss.get(i)
		print(ssfilter)

		# Pandas Table - Update
		LF = tk.LabelFrame(tab1)
		LF.grid(row=11, column=7, rowspan=3, sticky='ns', columnspan=2)
		df[df['Location']==ssfilter].to_csv(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv', index=False) 
		pt = Table(LF)
		pt.importCSV(str(Kw)+'_'+str(Ct)+'/MasterData_Filtered.csv')
		pt.show()
	else:
		pass



def Up_Software():
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv').drop_duplicates()
	if lb.curselection():
		for i in lb.curselection():
			soft = lb.get(i)
		print(soft)
		df = df[df['Software'].str.contains(str(soft))]
		print(df)

def Up_Qualities():
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv').drop_duplicates()
	qual = lb.curselection()
	print(qual)
	df = df[df['Qualities'].str.contains(str(qual))]
	print(df)

def Up_Industries():
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv').drop_duplicates()
	Ind = lb.curselection()
	print(Ind)
	df = df[df['Industries'].str.contains(str(Ind))]
	print(df)

def Up_Skills():
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv').drop_duplicates()
	sk = lb.curselection()
	print(sk)
	df = df[df['Skills'].str.contains(str(sk))]
	print(df)

def Up_Education():
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv').drop_duplicates()
	ed = lb.curselection()
	print(ed)
	df = df[df['Education'].str.contains(str(ed))]
	print(df)





def Import_Results():
# try:
	root.geometry("1320x980")
	global df
	os.chdir(str(folder_selected))
	df = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv').drop_duplicates()
	# df['Title'] = df.apply(lambda x: make_clickable(x['URL'], x['Title']), axis=1)
	# Pandas Table - Plot Master DataTable to GUI
	LF = tk.LabelFrame(tab1)
	LF.grid(row=11, column=7, rowspan=3, sticky='nsew', columnspan=5)

	# f = Frame(xx, bd=2)
	# f.pack(fill='both',expand=True)
	pt = Table(LF)
	pt.importCSV(str(Kw)+'_'+str(Ct)+'/MasterData.csv')
	pt.show()

	# Advanced Filters
	adv_filters = ['Software', 'Qualities', 'Industries', 'Skills', 'Education']
	funcs = (Up_Software, Up_Qualities, Up_Industries, Up_Skills, Up_Education)
	cols = range(7,12)
	for f, cs, func in zip(adv_filters, cols, funcs):
		Output = tk.Label(tab1, text=str(f)+": ").grid(row=0,column=cs, sticky='s')
		var2 = tk.StringVar()
		chars = [',','n/a']
		for c in chars:
			df[f] = df[f].astype(str).str.replace(c,'')
		varr = list(dict.fromkeys(' '.join([i for i in df[f]]).split()))
		# print(varr)
		try:
			varr = [x for x in varr if str(x) != 'nan']
			# print(varr)
		except:
			pass
		var2.set(varr)
		
		global lb
		lb = tk.Listbox(tab1, listvariable=var2).grid(row=1,column=cs, rowspan=9, sticky='we')
		Button(tab1, text=' Filter', command=func).grid(row=10,column=cs, sticky='nsew')

	try:
		zoom = 0.165
		software = str(Kw)+'_'+str(Ct)+'/TopKeywords_Software.png'
		image = Image.open(software)
		#multiple image size by zoom
		pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
		# Plots
		photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
		label = Label(tab1, image = photo)
		label.image = photo
		label.grid(row=15, column=7, sticky='n', columnspan=2)
	except:
		pass


	# Adding HeatMap Location if Search Does not specify City
	if str(Ct) == "":
		zoom = 0.145
		LocalHeatM = str(Kw)+'_'+str(Ct)+'/JobsLocation_'+str(Kw)+'.png'
		image = Image.open(LocalHeatM)
		#multiple image size by zoom
		pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
		# Plots
		photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
		label = Label(tab1, image = photo)
		label.image = photo
		label.grid(row=15, column=9, sticky='n', columnspan=2)
	else:
		try:
			zoom = 0.165
			industries = str(Kw)+'_'+str(Ct)+'/TopKeywords_Industries.png'
			image = Image.open(industries)
			#multiple image size by zoom
			pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
			# Plots
			photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
			label = Label(tab1, image = photo)
			label.image = photo
			label.grid(row=15, column=9, sticky='n', columnspan=2)
		except:
			pass

	# Create Salary Scale and Set to 0 until Data is imported and read (Import Data Fuction)
	try:
		sal = pd.read_csv(str(Kw)+"_"+str(Ct)+"/Salary.csv").astype(int)
		lowest = sal.sort_values(by='min', ascending=True).reset_index()
		highest = sal.sort_values(by='min', ascending=False).reset_index()
		global salary
		salary = IntVar()
		sals = Scale(tab1, variable=salary, from_=int(lowest['min'][0]), to=int(highest['min'][0]), orient=HORIZONTAL).grid(row=6,column=1, sticky='w')
	except:
		pass

	# UPDATE EXPERIENCE SLIDER

	try:
		jts = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv')
		var = tk.StringVar()
		var.set(list(jts['Title'].drop_duplicates()))
		global jt
		jt = tk.Listbox(tab1, listvariable=var)
		jt.grid(row=11, column=1, sticky='ns')
	except:
		pass


	try:
		Comps = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv')
		var2 = tk.StringVar()
		var2.set(list(Comps['Company'].drop_duplicates()))
		global cc
		cc = tk.Listbox(tab1, listvariable=var2)
		cc.grid(row=13,column=1, sticky='ns')
	except:
		pass


	try:
		Locs = pd.read_csv(str(Kw)+'_'+str(Ct)+'/MasterData.csv')
		var3 = tk.StringVar()
		var3.set(list(Locs['Location'].drop_duplicates()))
		global ss
		ss = tk.Listbox(tab1, listvariable=var3)
		ss.grid(row=15,column=1, sticky='ns')
	except:
		pass


	# Search Fields
	Output = tk.Label(tab1, text="Keywords: "+str(Kw)).grid(row=6,column=3, sticky='ws')
	Output = tk.Label(tab1, text="City: "+str(Ct)+", "+str(St)).grid(row=7,column=3, sticky='ws')

	count = pd.read_csv(str(Kw)+"_"+str(Ct)+"/dataframe.csv")['Key_Points'].count()
	Output = tk.Label(tab1, text="Jobs Found: "+str(count)).grid(row=8,column=3, sticky='ws')     


	# Image 1 - LISTING DATE
	try:
		zoom = 0.085
		file = str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_ListingsDate.png'
		image = Image.open(file)
		#multiple image size by zoom
		pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
		# Plots
		photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
		label = Label(tab1, image = photo)
		label.image = photo
		label.grid(row=11, column=3, sticky='we', columnspan=3)
	except:
		pass

	zoom = 0.16

	# Image 2 - SALARY
	try:
		file = str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_Salary.png'
		image = Image.open(file)
		pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
		photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
		label = Label(tab1, image = photo)
		label.image = photo
		label.grid(row=13, column=3, sticky='we', columnspan=3)
	except:
		pass


	# Image 3 - EXPERIENCE
	try:
		file = str(Kw)+'_'+str(Ct)+'/'+str(Kw)+'_'+str(Ct)+'_Experience.png'
		image = Image.open(file)
		#multiple image size by zoom
		pixels_x, pixels_y = tuple([int(zoom * x)  for x in image.size])
		# Plots
		photo = ImageTk.PhotoImage(image.resize((pixels_x, pixels_y)))
		label = Label(tab1, image = photo)
		label.image = photo
		label.grid(row=15, column=3, sticky='we', columnspan=3)
	except:
		pass













# Salary
SalFilter = tk.Label(tab1, text="Salary: ").grid(row=5,column=1, sticky='ws')
w = Scale(tab1, from_=0, to=0, orient=HORIZONTAL).grid(row=6,column=1, sticky='w')

# Listing Age
Date = tk.Label(tab1, text="Listing Age (Days): ").grid(row=8,column=1, sticky='ws')
global ListingDate
ListingDate = IntVar()
Dates = Scale(tab1, variable=ListingDate, from_=0, to=31, orient=HORIZONTAL).grid(row=9,column=1, sticky='w')

Output = tk.Label(tab1, text="Titles: ").grid(row=10,column=1, sticky='ws')
var = tk.StringVar().set("")
tk.Listbox(tab1, listvariable=var).grid(row=11,column=1, sticky='w')


# # Companies
Output = tk.Label(tab1, text="Companies: ").grid(row=12,column=1, sticky='ws')
var2 = tk.StringVar()
var2.set("")
lb = tk.Listbox(tab1, listvariable=var2).grid(row=13,column=1, sticky='w')


# # Location
Output = tk.Label(tab1, text="Location: ").grid(row=14,column=1, sticky='ws')
var3 = tk.StringVar()
var3.set("")
lb = tk.Listbox(tab1, listvariable=var3).grid(row=15,column=1, sticky='e')


# Search
# Output = tk.Label(tab1, text="Search Results: ").grid(row=5,column=3, sticky='ws')
Output = tk.Label(tab1, text="Keywords: ").grid(row=6,column=3, sticky='ws')
Output = tk.Label(tab1, text="City: ").grid(row=7,column=3, sticky='ws')
Output = tk.Label(tab1, text="Jobs Found : ").grid(row=8,column=3, sticky='ws')
Output = tk.Label(tab1, text="       ").grid(row=5,column=2, sticky='w')

# Buttons
Button(tab1, text=' Import Data ', command=Import_Results).grid(row=2,column=5)
Button(tab1, text=' Filter', command=update_salary).grid(row=6,column=0, sticky='ns')
Button(tab1, text=' Filter', command=update_ListingDate).grid(row=9,column=0, sticky='ns')
Button(tab1, text=' Filter', command=update_titles).grid(row=11,column=0, sticky='ns')
Button(tab1, text=' Filter', command=update_company).grid(row=13,column=0, sticky='ns')
Button(tab1, text=' Filter', command=update_location).grid(row=15,column=0, sticky='ns')
Button(tab1, text=' Reset Filters', command=Import_Results).grid(row=20,column=1, sticky='ns')
folderpath = ttk.Button(tab1, text="Save Loc",command = getFolderPath).grid(row=0,column=5)
Run_Scrape =tk.Button(tab1, text=" Search Jora ", command = lambda: Search_Jora_Button()).grid(row=1,column=5)


# MainLoop
root.mainloop()

