Publish to git
This commit is contained in:
71
inventory/pages/browse_page.py
Normal file
71
inventory/pages/browse_page.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import KW_ONLY, field
|
||||
from typing import * # type: ignore
|
||||
|
||||
import rio
|
||||
|
||||
from .. import components as comps
|
||||
|
||||
from db_classes import *
|
||||
import functools
|
||||
|
||||
class BrowsePage(rio.Component):
|
||||
searchtext: str = ""
|
||||
items: dict = {}
|
||||
office: str = ""
|
||||
filters: dict = {}
|
||||
@rio.event.on_populate
|
||||
async def _search(self, query=searchtext):
|
||||
self.office = self.session[comps.Settings].office
|
||||
self.filters['office'] = self.office
|
||||
|
||||
|
||||
self.items = search_item(query, self.filters)
|
||||
await self.force_refresh()
|
||||
|
||||
@rio.event.periodic(1)
|
||||
async def set_office_init(self):
|
||||
|
||||
if self.office != self.session[comps.Settings].office:
|
||||
self.office = self.session[comps.Settings].office
|
||||
#print(self.office)
|
||||
await self._search()
|
||||
|
||||
async def _search_trigger(self, event: rio.TextInputChangeEvent):
|
||||
await self._search(event.text)
|
||||
|
||||
def click_item(self, code):
|
||||
self.session[comps.Settings].selected_item = code
|
||||
self.session.attach(self.session[comps.Settings])
|
||||
self.session.navigate_to("/item")
|
||||
|
||||
def build(self) -> rio.Component:
|
||||
searchview: rio.ListView = rio.ListView(height='grow')
|
||||
for item in self.items:
|
||||
if item["loc"] is not None:
|
||||
loc = item["loc"]["name"]
|
||||
else:
|
||||
loc = ""
|
||||
if item["checkout"]:
|
||||
checkout = item["checkout_user"] + " - " + loc
|
||||
else:
|
||||
checkout = loc
|
||||
searchview.add(rio.SimpleListItem(text=item["fullname"],secondary_text=(item["manufacturer"] + " - Serial: " + item["serial"] + "\n" + checkout), on_press=functools.partial(
|
||||
self.click_item,
|
||||
code=item["barcode"])))
|
||||
return rio.Column(
|
||||
rio.Row(
|
||||
rio.TextInput(
|
||||
text=self.bind().searchtext,
|
||||
on_change=self._search_trigger,
|
||||
label="Search"
|
||||
)
|
||||
),
|
||||
searchview,
|
||||
spacing=2,
|
||||
width=60,
|
||||
align_x=0.5,
|
||||
align_y=0,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user