riteshkokam commited on
Commit
e7ab011
·
verified ·
1 Parent(s): 318a592

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -40
app.py CHANGED
@@ -146,41 +146,31 @@ def find_jobs(file, added_kw, use_ai):
146
  explanation = refine_with_ai(ranked, resume) if use_ai else ""
147
  return table, explanation
148
 
149
- # def paginate(table, page):
150
- # per_page = 10
151
- # start = (page-1)*per_page
152
- # return table[start:start+per_page]
153
-
154
  # 7️⃣ Jobs in Markdown
155
  def jobs_to_markdown(table, page, per_page=PER_PAGE):
156
  total = len(table)
157
  pages = max(1, math.ceil(total / per_page))
158
  page = max(1, min(page, pages))
159
- start = (page - 1) * per_page
160
- end = start + per_page
161
- slice = table[start:end]
162
 
163
- # Header
164
  md = f"**Showing jobs {start+1}–{min(end,total)} of {total} (Page {page}/{pages})**\n\n"
165
  md += "| Role | Company | Location | Posted | Score | Apply |\n"
166
  md += "| ---- | ------- | -------- | ------ | ----- | ----- |\n"
167
- # Rows
168
- for row in slice:
169
  link = f"[Apply]({row['Apply']})" if row['Apply'] else ""
170
  md += (
171
  f"| {row['Role']} | {row['Company']} | {row['Location']} "
172
  f"| {row['Posted']} | {row['Score']} | {link} |\n"
173
  )
174
- # # Append explanation *only* on page 1
175
- # if page == 1 and explanation:
176
- # md += "\n---\n**AI Explanation:**\n\n" + explanation
177
  return md
178
 
179
  def load_jobs_and_pages(resume, added_kw, use_ai):
180
- full_table, explanation = find_jobs(resume, added_kw, use_ai) # your existing pipeline
181
  total_pages = max(1, math.ceil(len(full_table) / PER_PAGE))
182
- # Return: table-state, explanation-state, slider update
183
- return full_table, explanation, gr.update(value=1, maximum=total_pages)
 
184
 
185
  # 7️⃣ Gradio UI
186
  with gr.Blocks(theme=gr.themes.Base()) as demo:
@@ -193,40 +183,26 @@ with gr.Blocks(theme=gr.themes.Base()) as demo:
193
  use_ai = gr.Checkbox(label="Use AI to refine explanation", value=False)
194
  find_btn = gr.Button("Find Jobs")
195
 
196
- # hidden states for full data
197
- jobs_state = gr.State([])
198
- expl_state = gr.State("")
199
-
200
- # outputs
201
- jobs_md = gr.Markdown()
202
- expl_md = gr.Markdown()
203
- page_sel = gr.Slider(minimum=1, maximum=1, step=1, value=1, label="Page")
204
 
205
- # 1) On search: populate states & slider
 
206
  find_btn.click(
207
  fn=load_jobs_and_pages,
208
  inputs=[resume, added, use_ai],
209
- outputs=[jobs_state, expl_state, page_sel]
210
- ).then(
211
- fn=lambda tbl, pg: jobs_to_markdown(tbl, pg),
212
- inputs=[jobs_state, page_sel],
213
- outputs=[jobs_md]
214
  )
215
 
216
- # 2) On page change: re-render table only
217
  page_sel.change(
218
  fn=lambda tbl, pg: jobs_to_markdown(tbl, pg),
219
  inputs=[jobs_state, page_sel],
220
  outputs=[jobs_md]
221
  )
222
 
223
- # 3) Always render explanation from state
224
- expl_state.change(
225
- fn=lambda expl: expl,
226
- inputs=[expl_state],
227
- outputs=[expl_md],
228
- queue=False
229
- )
230
-
231
  if __name__ == "__main__":
232
  demo.launch()
 
146
  explanation = refine_with_ai(ranked, resume) if use_ai else ""
147
  return table, explanation
148
 
 
 
 
 
 
149
  # 7️⃣ Jobs in Markdown
150
  def jobs_to_markdown(table, page, per_page=PER_PAGE):
151
  total = len(table)
152
  pages = max(1, math.ceil(total / per_page))
153
  page = max(1, min(page, pages))
154
+ start, end = (page-1)*per_page, page*per_page
155
+ slice_ = table[start:end]
 
156
 
 
157
  md = f"**Showing jobs {start+1}–{min(end,total)} of {total} (Page {page}/{pages})**\n\n"
158
  md += "| Role | Company | Location | Posted | Score | Apply |\n"
159
  md += "| ---- | ------- | -------- | ------ | ----- | ----- |\n"
160
+ for row in slice_:
 
161
  link = f"[Apply]({row['Apply']})" if row['Apply'] else ""
162
  md += (
163
  f"| {row['Role']} | {row['Company']} | {row['Location']} "
164
  f"| {row['Posted']} | {row['Score']} | {link} |\n"
165
  )
 
 
 
166
  return md
167
 
168
  def load_jobs_and_pages(resume, added_kw, use_ai):
169
+ full_table, explanation = find_jobs(resume, added_kw, use_ai)
170
  total_pages = max(1, math.ceil(len(full_table) / PER_PAGE))
171
+ slider_update = gr.update(value=1, maximum=total_pages)
172
+ first_page_md = jobs_to_markdown(full_table, 1)
173
+ return full_table, explanation, slider_update, first_page_md
174
 
175
  # 7️⃣ Gradio UI
176
  with gr.Blocks(theme=gr.themes.Base()) as demo:
 
183
  use_ai = gr.Checkbox(label="Use AI to refine explanation", value=False)
184
  find_btn = gr.Button("Find Jobs")
185
 
186
+ jobs_state = gr.State([]) # holds full table
187
+ page_sel = gr.Slider(1, 1, step=1, value=1, label="Page")
188
+ jobs_md = gr.Markdown() # shows the current page’s markdown
189
+ expl_md_h = gr.Markdown("### AI Explanation")
190
+ expl_md = gr.Markdown() # shows AI explanation
 
 
 
191
 
192
+ # 1) On Find Jobs:
193
+ # - load the jobs, explanation, slider max, and first-page markdown
194
  find_btn.click(
195
  fn=load_jobs_and_pages,
196
  inputs=[resume, added, use_ai],
197
+ outputs=[jobs_state, expl_md, page_sel, jobs_md]
 
 
 
 
198
  )
199
 
200
+ # 2) On page change, re-render only the table markdown
201
  page_sel.change(
202
  fn=lambda tbl, pg: jobs_to_markdown(tbl, pg),
203
  inputs=[jobs_state, page_sel],
204
  outputs=[jobs_md]
205
  )
206
 
 
 
 
 
 
 
 
 
207
  if __name__ == "__main__":
208
  demo.launch()