Compare commits

..

No commits in common. "main" and "cotlin" have entirely different histories.
main ... cotlin

4 changed files with 32 additions and 64 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
fyne_metadata_init.go
ztm_vehicles_app.apk

BIN
icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 KiB

BIN
yui.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 KiB

View file

@ -3,7 +3,7 @@ package main
import (
"fmt"
"strings"
"strconv"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
@ -11,10 +11,6 @@ import (
"github.com/gocolly/colly/v2"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/layout"
"strconv"
"fyne.io/fyne/v2/driver/mobile"
)
@ -64,39 +60,21 @@ type vehicle struct {
equipment string
}
func vehicleToString(inputVehicle *vehicle) string {
registrationPlate := ""
if len(inputVehicle.vehicle_registration_plate) > 0 {
registrationPlate = fmt.Sprintf(`,o rejestracji %s`, inputVehicle.vehicle_registration_plate)
}
output_string := fmt.Sprintf(
"%s o numerze %s,"+"%s %s,"+"z roku %s,"+"w posiadaniu %s,"+"z zajezdni %s%s",
inputVehicle.traction_type,
inputVehicle.vehicle_number,
inputVehicle.producer,
inputVehicle.model,
inputVehicle.production_year,
inputVehicle.operator,
inputVehicle.garage,
registrationPlate)
return strings.Replace(output_string, ",", ",\n", -1)
}
func getVehiclesByNum(vehicleNum string) string {
func getVehicleByNum(vehicleNum string) string {
searchURL := fmt.Sprintf("https://www.ztm.waw.pl/baza-danych-pojazdow/?ztm_traction=&ztm_make=&ztm_model=&ztm_year=&ztm_registration=&ztm_vehicle_number=%s&ztm_carrier=&ztm_depot=", vehicleNum)
var vehicleURLs []string
vehicleURL := ""
c2 := colly.NewCollector(
// Visit only domains:
colly.AllowedDomains("www.ztm.waw.pl"),
)
c2.OnHTML(".grid-row-active", func(e *colly.HTMLElement) {
text := e.Attr("href")
vehicleURLs = append(vehicleURLs, text)
vehicleURL = text
})
c2.Visit(searchURL)
output_string := ""
for _, vehicleURL := range vehicleURLs {
if vehicleURL == "" {
return ""
} else {
var retrievedData [10]string
// Instantiate default collector
c := colly.NewCollector(
@ -122,58 +100,46 @@ func getVehiclesByNum(vehicleNum string) string {
ticket_machine: retrievedData[8],
equipment: retrievedData[9],
}
output_string += vehicleToString(&retrievedVehicle)
output_string += "\n"
output_string += "\n"
output_string := fmt.Sprintf(
`%s %s
z roku %s,
w posiadaniu %s,
z zajezdni %s,
o rejestracji %s`, retrievedVehicle.producer, retrievedVehicle.model, retrievedVehicle.production_year, retrievedVehicle.operator, retrievedVehicle.garage, retrievedVehicle.vehicle_registration_plate)
return output_string
}
return output_string
}
func main() {
a := app.New()
w := a.NewWindow("ZTM vehicles")
w := a.NewWindow("Hello")
entryLabel := widget.NewLabel("Podaj numer taborowy pojazdu:")
entry := newNumericalEntry()
output := widget.NewLabel("")
output.Wrapping = fyne.TextWrapWord
//outputContainer := container.NewVScroll(output)
//I create button earlier in order to reference it later inside function of it so I can easily disable it for the time data is fetching. There is probably better way to do it but I could't find it so
executeButton := widget.NewButton("Sprawdź numer", func() {
output.Refresh()
})
executeButton = widget.NewButton("Sprawdź numer", func() {
executeButton.Disable()
executeButton.SetText("Wczytywanie")
if len(strings.TrimSpace(entry.Text)) != 0 {
output_data := getVehiclesByNum(entry.Text)
if output_data != "" {
output.Text = output_data
} else {
output.Text = "Nie znaleziono pojazdu o podanym numerze taborowym w bazie pojazdów WTP"
}
entry := newNumericalEntry()
form := &widget.Form{
Items: []*widget.FormItem{ // we can specify items in the constructor
{Text: "Podaj numer taborowy pojazdu:", Widget: entry}},
}
form.OnSubmit = func() {
output_data := getVehicleByNum(entry.Text)
if output_data != "" {
output.Text = output_data
} else {
output.Text = "Nie wprowadzono prawidłowego numeru"
output.Text = "Nie znaleziono pojazdu o podanym numerze taborowym w bazie pojazdów WTP"
}
output.Refresh()
executeButton.Enable()
executeButton.SetText("Sprawdź numer")
})
executeButton.Importance = widget.HighImportance
}
clearButton := widget.NewButton("Wyczyść", func() {
entry.Text = ""
output.Text = ""
output.Refresh()
entry.Refresh()
})
buttons := container.New(layout.NewGridLayout(2), clearButton, executeButton)
inputs := container.New(layout.NewGridLayout(1), entryLabel, entry, buttons)
w.SetContent(container.NewVBox(
inputs,
form,
clearButton,
output,
))