merge
10
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
9
.idea/BordroRobot.iml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="Go" enabled="true" />
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
10
.idea/go.imports.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GoImports">
|
||||||
|
<option name="excludedPackages">
|
||||||
|
<array>
|
||||||
|
<option value="golang.org/x/net/context" />
|
||||||
|
</array>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/BordroRobot.iml" filepath="$PROJECT_DIR$/.idea/BordroRobot.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
17
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Launch Package",
|
||||||
|
"type": "go",
|
||||||
|
"request": "launch",
|
||||||
|
"mode": "auto",
|
||||||
|
"program": "./app/main.go",
|
||||||
|
"env": {},
|
||||||
|
"args": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
app/.DS_Store
vendored
Normal file
@@ -1,19 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import "github.com/wailsapp/wails/v3/pkg/application"
|
|
||||||
|
|
||||||
type BotService struct{}
|
|
||||||
|
|
||||||
var excelFilePath string
|
|
||||||
|
|
||||||
func (g *BotService) ClaimFile() string {
|
|
||||||
|
|
||||||
dialog := application.OpenFileDialog()
|
|
||||||
dialog.SetTitle("Lütfen yüklenecek Excel dosyanızı seçiniz")
|
|
||||||
file, err := dialog.PromptForSingleSelection()
|
|
||||||
if err != nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
excelFilePath = file
|
|
||||||
return file
|
|
||||||
}
|
|
||||||
874
app/Taskfile.yml
@@ -1,438 +1,438 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
vars:
|
vars:
|
||||||
APP_NAME: "bordro-robotu"
|
APP_NAME: "bordro-robotu"
|
||||||
BIN_DIR: "bin"
|
BIN_DIR: "bin"
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
|
|
||||||
## -------------------------- Build -------------------------- ##
|
## -------------------------- Build -------------------------- ##
|
||||||
|
|
||||||
build:
|
build:
|
||||||
summary: Builds the application
|
summary: Builds the application
|
||||||
cmds:
|
cmds:
|
||||||
# Build for current OS
|
# Build for current OS
|
||||||
- task: build:{{OS}}
|
- task: build:{{OS}}
|
||||||
|
|
||||||
# Uncomment to build for specific OSes
|
# Uncomment to build for specific OSes
|
||||||
# - task: build:linux
|
# - task: build:linux
|
||||||
# - task: build:windows
|
# - task: build:windows
|
||||||
# - task: build:darwin
|
# - task: build:darwin
|
||||||
|
|
||||||
|
|
||||||
## ------> Windows <-------
|
## ------> Windows <-------
|
||||||
|
|
||||||
build:windows:
|
build:windows:
|
||||||
summary: Builds the application for Windows
|
summary: Builds the application for Windows
|
||||||
deps:
|
deps:
|
||||||
- task: go:mod:tidy
|
- task: go:mod:tidy
|
||||||
- task: build:frontend
|
- task: build:frontend
|
||||||
- task: generate:icons
|
- task: generate:icons
|
||||||
- task: generate:syso
|
- task: generate:syso
|
||||||
vars:
|
vars:
|
||||||
ARCH: '{{.ARCH}}'
|
ARCH: '{{.ARCH}}'
|
||||||
cmds:
|
cmds:
|
||||||
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/bordro-robotu.exe
|
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/bordro-robotu.exe
|
||||||
vars:
|
vars:
|
||||||
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -ldflags="-w -s -H windowsgui"{{else}}-gcflags=all="-N -l"{{end}}'
|
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -ldflags="-w -s -H windowsgui"{{else}}-gcflags=all="-N -l"{{end}}'
|
||||||
env:
|
env:
|
||||||
GOOS: windows
|
GOOS: windows
|
||||||
CGO_ENABLED: 0
|
CGO_ENABLED: 0
|
||||||
GOARCH: '{{.ARCH | default ARCH}}'
|
GOARCH: '{{.ARCH | default ARCH}}'
|
||||||
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
||||||
|
|
||||||
build:windows:prod:arm64:
|
build:windows:prod:arm64:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:windows
|
- task: build:windows
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
|
|
||||||
build:windows:prod:amd64:
|
build:windows:prod:amd64:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:windows
|
- task: build:windows
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
|
|
||||||
build:windows:debug:arm64:
|
build:windows:debug:arm64:
|
||||||
summary: Creates a debug build of the application
|
summary: Creates a debug build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:windows
|
- task: build:windows
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
|
|
||||||
build:windows:debug:amd64:
|
build:windows:debug:amd64:
|
||||||
summary: Creates a debug build of the application
|
summary: Creates a debug build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:windows
|
- task: build:windows
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
|
|
||||||
## ------> Darwin <-------
|
## ------> Darwin <-------
|
||||||
|
|
||||||
build:darwin:
|
build:darwin:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
deps:
|
deps:
|
||||||
- task: go:mod:tidy
|
- task: go:mod:tidy
|
||||||
- task: build:frontend
|
- task: build:frontend
|
||||||
- task: generate:icons
|
- task: generate:icons
|
||||||
cmds:
|
cmds:
|
||||||
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}}
|
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/{{.APP_NAME}}
|
||||||
vars:
|
vars:
|
||||||
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -ldflags="-w -s"{{else}}-gcflags=all="-N -l"{{end}}'
|
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -ldflags="-w -s"{{else}}-gcflags=all="-N -l"{{end}}'
|
||||||
env:
|
env:
|
||||||
GOOS: darwin
|
GOOS: darwin
|
||||||
CGO_ENABLED: 1
|
CGO_ENABLED: 1
|
||||||
GOARCH: '{{.ARCH | default ARCH}}'
|
GOARCH: '{{.ARCH | default ARCH}}'
|
||||||
CGO_CFLAGS: "-mmacosx-version-min=10.15"
|
CGO_CFLAGS: "-mmacosx-version-min=10.15"
|
||||||
CGO_LDFLAGS: "-mmacosx-version-min=10.15"
|
CGO_LDFLAGS: "-mmacosx-version-min=10.15"
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
||||||
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
||||||
|
|
||||||
build:darwin:prod:arm64:
|
build:darwin:prod:arm64:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:darwin
|
- task: build:darwin
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
|
|
||||||
build:darwin:prod:amd64:
|
build:darwin:prod:amd64:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:darwin
|
- task: build:darwin
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
|
|
||||||
build:darwin:debug:arm64:
|
build:darwin:debug:arm64:
|
||||||
summary: Creates a debug build of the application
|
summary: Creates a debug build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:darwin
|
- task: build:darwin
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
|
|
||||||
build:darwin:debug:amd64:
|
build:darwin:debug:amd64:
|
||||||
summary: Creates a debug build of the application
|
summary: Creates a debug build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:darwin
|
- task: build:darwin
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
|
|
||||||
|
|
||||||
## ------> Linux <-------
|
## ------> Linux <-------
|
||||||
|
|
||||||
build:linux:
|
build:linux:
|
||||||
summary: Builds the application for Linux
|
summary: Builds the application for Linux
|
||||||
deps:
|
deps:
|
||||||
- task: go:mod:tidy
|
- task: go:mod:tidy
|
||||||
- task: build:frontend
|
- task: build:frontend
|
||||||
- task: generate:icons
|
- task: generate:icons
|
||||||
vars:
|
vars:
|
||||||
ARCH: '{{.ARCH}}'
|
ARCH: '{{.ARCH}}'
|
||||||
cmds:
|
cmds:
|
||||||
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/bordro-robotu
|
- go build {{.BUILD_FLAGS}} -o {{.BIN_DIR}}/bordro-robotu
|
||||||
vars:
|
vars:
|
||||||
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -ldflags="-w -s"{{else}}-gcflags=all="-N -l"{{end}}'
|
BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -ldflags="-w -s"{{else}}-gcflags=all="-N -l"{{end}}'
|
||||||
env:
|
env:
|
||||||
GOOS: linux
|
GOOS: linux
|
||||||
CGO_ENABLED: 1
|
CGO_ENABLED: 1
|
||||||
GOARCH: '{{.ARCH | default ARCH}}'
|
GOARCH: '{{.ARCH | default ARCH}}'
|
||||||
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
PRODUCTION: '{{.PRODUCTION | default "false"}}'
|
||||||
|
|
||||||
build:linux:prod:arm64:
|
build:linux:prod:arm64:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:linux
|
- task: build:linux
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
|
|
||||||
build:linux:prod:amd64:
|
build:linux:prod:amd64:
|
||||||
summary: Creates a production build of the application
|
summary: Creates a production build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:linux
|
- task: build:linux
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
|
|
||||||
build:linux:debug:arm64:
|
build:linux:debug:arm64:
|
||||||
summary: Creates a debug build of the application
|
summary: Creates a debug build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:linux
|
- task: build:linux
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
|
|
||||||
build:linux:debug:amd64:
|
build:linux:debug:amd64:
|
||||||
summary: Creates a debug build of the application
|
summary: Creates a debug build of the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: build:linux
|
- task: build:linux
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
|
|
||||||
## -------------------------- Package -------------------------- ##
|
## -------------------------- Package -------------------------- ##
|
||||||
|
|
||||||
package:
|
package:
|
||||||
summary: Packages a production build of the application into a bundle
|
summary: Packages a production build of the application into a bundle
|
||||||
cmds:
|
cmds:
|
||||||
|
|
||||||
# Package for current OS
|
# Package for current OS
|
||||||
- task: package:{{OS}}
|
- task: package:{{OS}}
|
||||||
|
|
||||||
# Package for specific os/arch
|
# Package for specific os/arch
|
||||||
# - task: package:darwin:arm64
|
# - task: package:darwin:arm64
|
||||||
# - task: package:darwin:amd64
|
# - task: package:darwin:amd64
|
||||||
# - task: package:windows:arm64
|
# - task: package:windows:arm64
|
||||||
# - task: package:windows:amd64
|
# - task: package:windows:amd64
|
||||||
|
|
||||||
## ------> Windows <------
|
## ------> Windows <------
|
||||||
|
|
||||||
package:windows:
|
package:windows:
|
||||||
summary: Packages a production build of the application into a `.exe` bundle
|
summary: Packages a production build of the application into a `.exe` bundle
|
||||||
cmds:
|
cmds:
|
||||||
- task: create:nsis:installer
|
- task: create:nsis:installer
|
||||||
vars:
|
vars:
|
||||||
ARCH: '{{.ARCH}}'
|
ARCH: '{{.ARCH}}'
|
||||||
vars:
|
vars:
|
||||||
ARCH: '{{.ARCH | default ARCH}}'
|
ARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
|
||||||
package:windows:arm64:
|
package:windows:arm64:
|
||||||
summary: Packages a production build of the application into a `.exe` bundle
|
summary: Packages a production build of the application into a `.exe` bundle
|
||||||
cmds:
|
cmds:
|
||||||
- task: package:windows
|
- task: package:windows
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
|
|
||||||
package:windows:amd64:
|
package:windows:amd64:
|
||||||
summary: Packages a production build of the application into a `.exe` bundle
|
summary: Packages a production build of the application into a `.exe` bundle
|
||||||
cmds:
|
cmds:
|
||||||
- task: package:windows
|
- task: package:windows
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
|
|
||||||
generate:syso:
|
generate:syso:
|
||||||
summary: Generates Windows `.syso` file
|
summary: Generates Windows `.syso` file
|
||||||
dir: build
|
dir: build
|
||||||
cmds:
|
cmds:
|
||||||
- wails3 generate syso -arch {{.ARCH}} -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails.syso
|
- wails3 generate syso -arch {{.ARCH}} -icon icon.ico -manifest wails.exe.manifest -info info.json -out ../wails.syso
|
||||||
vars:
|
vars:
|
||||||
ARCH: '{{.ARCH | default ARCH}}'
|
ARCH: '{{.ARCH | default ARCH}}'
|
||||||
|
|
||||||
create:nsis:installer:
|
create:nsis:installer:
|
||||||
summary: Creates an NSIS installer
|
summary: Creates an NSIS installer
|
||||||
label: "NSIS Installer ({{.ARCH}})"
|
label: "NSIS Installer ({{.ARCH}})"
|
||||||
dir: build/nsis
|
dir: build/nsis
|
||||||
sources:
|
sources:
|
||||||
- "{{.ROOT_DIR}}\\bin\\{{.APP_NAME}}.exe"
|
- "{{.ROOT_DIR}}\\bin\\{{.APP_NAME}}.exe"
|
||||||
generates:
|
generates:
|
||||||
- "{{.ROOT_DIR}}\\bin\\{{.APP_NAME}}-{{.ARCH}}-installer.exe"
|
- "{{.ROOT_DIR}}\\bin\\{{.APP_NAME}}-{{.ARCH}}-installer.exe"
|
||||||
deps:
|
deps:
|
||||||
- task: build:windows
|
- task: build:windows
|
||||||
vars:
|
vars:
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
ARCH: '{{.ARCH}}'
|
ARCH: '{{.ARCH}}'
|
||||||
cmds:
|
cmds:
|
||||||
- makensis -DARG_WAILS_'{{.ARG_FLAG}}'_BINARY="{{.ROOT_DIR}}\{{.BIN_DIR}}\{{.APP_NAME}}.exe" project.nsi
|
- makensis -DARG_WAILS_'{{.ARG_FLAG}}'_BINARY="{{.ROOT_DIR}}\{{.BIN_DIR}}\{{.APP_NAME}}.exe" project.nsi
|
||||||
vars:
|
vars:
|
||||||
ARCH: '{{.ARCH | default ARCH}}'
|
ARCH: '{{.ARCH | default ARCH}}'
|
||||||
ARG_FLAG: '{{if eq .ARCH "amd64"}}AMD64{{else}}ARM64{{end}}'
|
ARG_FLAG: '{{if eq .ARCH "amd64"}}AMD64{{else}}ARM64{{end}}'
|
||||||
|
|
||||||
## ------> Darwin <------
|
## ------> Darwin <------
|
||||||
|
|
||||||
package:darwin:
|
package:darwin:
|
||||||
summary: Packages a production build of the application into a `.app` bundle
|
summary: Packages a production build of the application into a `.app` bundle
|
||||||
platforms: [ darwin ]
|
platforms: [ darwin ]
|
||||||
deps:
|
deps:
|
||||||
- task: build:darwin
|
- task: build:darwin
|
||||||
vars:
|
vars:
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
cmds:
|
cmds:
|
||||||
- task: create:app:bundle
|
- task: create:app:bundle
|
||||||
|
|
||||||
package:darwin:arm64:
|
package:darwin:arm64:
|
||||||
summary: Packages a production build of the application into a `.app` bundle
|
summary: Packages a production build of the application into a `.app` bundle
|
||||||
platforms: [ darwin/arm64 ]
|
platforms: [ darwin/arm64 ]
|
||||||
deps:
|
deps:
|
||||||
- task: package:darwin
|
- task: package:darwin
|
||||||
vars:
|
vars:
|
||||||
ARCH: arm64
|
ARCH: arm64
|
||||||
|
|
||||||
package:darwin:amd64:
|
package:darwin:amd64:
|
||||||
summary: Packages a production build of the application into a `.app` bundle
|
summary: Packages a production build of the application into a `.app` bundle
|
||||||
platforms: [ darwin/amd64 ]
|
platforms: [ darwin/amd64 ]
|
||||||
deps:
|
deps:
|
||||||
- task: package:darwin
|
- task: package:darwin
|
||||||
vars:
|
vars:
|
||||||
ARCH: amd64
|
ARCH: amd64
|
||||||
|
|
||||||
create:app:bundle:
|
create:app:bundle:
|
||||||
summary: Creates an `.app` bundle
|
summary: Creates an `.app` bundle
|
||||||
cmds:
|
cmds:
|
||||||
- mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources}
|
- mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources}
|
||||||
- cp build/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources
|
- cp build/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources
|
||||||
- cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS
|
- cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS
|
||||||
- cp build/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents
|
- cp build/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents
|
||||||
|
|
||||||
## ------> Linux <------
|
## ------> Linux <------
|
||||||
|
|
||||||
package:linux:
|
package:linux:
|
||||||
summary: Packages a production build of the application for Linux
|
summary: Packages a production build of the application for Linux
|
||||||
platforms: [ linux ]
|
platforms: [ linux ]
|
||||||
deps:
|
deps:
|
||||||
- task: build:linux
|
- task: build:linux
|
||||||
vars:
|
vars:
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
cmds:
|
cmds:
|
||||||
- task: create:appimage
|
- task: create:appimage
|
||||||
|
|
||||||
create:appimage:
|
create:appimage:
|
||||||
summary: Creates an AppImage
|
summary: Creates an AppImage
|
||||||
dir: build/appimage
|
dir: build/appimage
|
||||||
platforms: [ linux ]
|
platforms: [ linux ]
|
||||||
deps:
|
deps:
|
||||||
- task: build:linux
|
- task: build:linux
|
||||||
vars:
|
vars:
|
||||||
PRODUCTION: "true"
|
PRODUCTION: "true"
|
||||||
- task: generate:linux:dotdesktop
|
- task: generate:linux:dotdesktop
|
||||||
cmds:
|
cmds:
|
||||||
# Copy binary + icon to appimage dir
|
# Copy binary + icon to appimage dir
|
||||||
- cp {{.APP_BINARY}} {{.APP_NAME}}
|
- cp {{.APP_BINARY}} {{.APP_NAME}}
|
||||||
- cp ../appicon.png appicon.png
|
- cp ../appicon.png appicon.png
|
||||||
# Generate AppImage
|
# Generate AppImage
|
||||||
- wails3 generate appimage -binary {{.APP_NAME}} -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/appimage
|
- wails3 generate appimage -binary {{.APP_NAME}} -icon {{.ICON}} -desktopfile {{.DESKTOP_FILE}} -outputdir {{.OUTPUT_DIR}} -builddir {{.ROOT_DIR}}/build/appimage
|
||||||
vars:
|
vars:
|
||||||
APP_NAME: '{{.APP_NAME}}'
|
APP_NAME: '{{.APP_NAME}}'
|
||||||
APP_BINARY: '../../bin/{{.APP_NAME}}'
|
APP_BINARY: '../../bin/{{.APP_NAME}}'
|
||||||
ICON: '../appicon.png'
|
ICON: '../appicon.png'
|
||||||
DESKTOP_FILE: '{{.APP_NAME}}.desktop'
|
DESKTOP_FILE: '{{.APP_NAME}}.desktop'
|
||||||
OUTPUT_DIR: '../../bin'
|
OUTPUT_DIR: '../../bin'
|
||||||
|
|
||||||
generate:linux:dotdesktop:
|
generate:linux:dotdesktop:
|
||||||
summary: Generates a `.desktop` file
|
summary: Generates a `.desktop` file
|
||||||
dir: build
|
dir: build
|
||||||
sources:
|
sources:
|
||||||
- "appicon.png"
|
- "appicon.png"
|
||||||
generates:
|
generates:
|
||||||
- '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
- '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
||||||
cmds:
|
cmds:
|
||||||
- mkdir -p {{.ROOT_DIR}}/build/appimage
|
- mkdir -p {{.ROOT_DIR}}/build/appimage
|
||||||
# Run `wails3 generate .desktop -help` for all the options
|
# Run `wails3 generate .desktop -help` for all the options
|
||||||
- wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile {{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop -categories "{{.CATEGORIES}}"
|
- wails3 generate .desktop -name "{{.APP_NAME}}" -exec "{{.EXEC}}" -icon "{{.ICON}}" -outputfile {{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop -categories "{{.CATEGORIES}}"
|
||||||
# -comment "A comment"
|
# -comment "A comment"
|
||||||
# -terminal "true"
|
# -terminal "true"
|
||||||
# -version "1.0"
|
# -version "1.0"
|
||||||
# -genericname "Generic Name"
|
# -genericname "Generic Name"
|
||||||
# -keywords "keyword1;keyword2;"
|
# -keywords "keyword1;keyword2;"
|
||||||
# -startupnotify "true"
|
# -startupnotify "true"
|
||||||
# -mimetype "application/x-extension1;application/x-extension2;"
|
# -mimetype "application/x-extension1;application/x-extension2;"
|
||||||
|
|
||||||
vars:
|
vars:
|
||||||
APP_NAME: '{{.APP_NAME}}'
|
APP_NAME: '{{.APP_NAME}}'
|
||||||
EXEC: '{{.APP_NAME}}'
|
EXEC: '{{.APP_NAME}}'
|
||||||
ICON: 'appicon'
|
ICON: 'appicon'
|
||||||
CATEGORIES: 'Development;'
|
CATEGORIES: 'Development;'
|
||||||
OUTPUTFILE: '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
OUTPUTFILE: '{{.ROOT_DIR}}/build/appimage/{{.APP_NAME}}.desktop'
|
||||||
|
|
||||||
## -------------------------- Misc -------------------------- ##
|
## -------------------------- Misc -------------------------- ##
|
||||||
|
|
||||||
|
|
||||||
generate:icons:
|
generate:icons:
|
||||||
summary: Generates Windows `.ico` and Mac `.icns` files from an image
|
summary: Generates Windows `.ico` and Mac `.icns` files from an image
|
||||||
dir: build
|
dir: build
|
||||||
sources:
|
sources:
|
||||||
- "appicon.png"
|
- "appicon.png"
|
||||||
generates:
|
generates:
|
||||||
- "icons.icns"
|
- "icons.icns"
|
||||||
- "icons.ico"
|
- "icons.ico"
|
||||||
method: timestamp
|
method: timestamp
|
||||||
cmds:
|
cmds:
|
||||||
# Generates both .ico and .icns files
|
# Generates both .ico and .icns files
|
||||||
- wails3 generate icons -input appicon.png
|
- wails3 generate icons -input appicon.png
|
||||||
|
|
||||||
install:frontend:deps:
|
install:frontend:deps:
|
||||||
summary: Install frontend dependencies
|
summary: Install frontend dependencies
|
||||||
dir: frontend
|
dir: frontend
|
||||||
sources:
|
sources:
|
||||||
- package.json
|
- package.json
|
||||||
- package-lock.json
|
- package-lock.json
|
||||||
generates:
|
generates:
|
||||||
- node_modules/*
|
- node_modules/*
|
||||||
preconditions:
|
preconditions:
|
||||||
- sh: npm version
|
- sh: npm version
|
||||||
msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/"
|
msg: "Looks like npm isn't installed. Npm is part of the Node installer: https://nodejs.org/en/download/"
|
||||||
cmds:
|
cmds:
|
||||||
# - npm install --silent --no-progress
|
# - npm install --silent --no-progress
|
||||||
- npm install
|
- npm install
|
||||||
|
|
||||||
build:frontend:
|
build:frontend:
|
||||||
summary: Build the frontend project
|
summary: Build the frontend project
|
||||||
dir: frontend
|
dir: frontend
|
||||||
sources:
|
sources:
|
||||||
- "**/*"
|
- "**/*"
|
||||||
generates:
|
generates:
|
||||||
- dist/*
|
- dist/*
|
||||||
deps:
|
deps:
|
||||||
- install:frontend:deps
|
- install:frontend:deps
|
||||||
- generate:bindings
|
- generate:bindings
|
||||||
cmds:
|
cmds:
|
||||||
- npm run build -q
|
- npm run build -q
|
||||||
|
|
||||||
generate:bindings:
|
generate:bindings:
|
||||||
summary: Generates bindings for the frontend
|
summary: Generates bindings for the frontend
|
||||||
sources:
|
sources:
|
||||||
- "**/*.go"
|
- "**/*.go"
|
||||||
generates:
|
generates:
|
||||||
- "frontend/bindings/**/*"
|
- "frontend/bindings/**/*"
|
||||||
cmds:
|
cmds:
|
||||||
- wails3 generate bindings -silent
|
- wails3 generate bindings -silent
|
||||||
# - wails3 generate bindings -silent
|
# - wails3 generate bindings -silent
|
||||||
|
|
||||||
go:mod:tidy:
|
go:mod:tidy:
|
||||||
summary: Runs `go mod tidy`
|
summary: Runs `go mod tidy`
|
||||||
internal: true
|
internal: true
|
||||||
generates:
|
generates:
|
||||||
- go.sum
|
- go.sum
|
||||||
sources:
|
sources:
|
||||||
- go.mod
|
- go.mod
|
||||||
cmds:
|
cmds:
|
||||||
- go mod tidy
|
- go mod tidy
|
||||||
|
|
||||||
# ----------------------- dev ----------------------- #
|
# ----------------------- dev ----------------------- #
|
||||||
|
|
||||||
|
|
||||||
run:
|
run:
|
||||||
summary: Runs the application
|
summary: Runs the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: run:{{OS}}
|
- task: run:{{OS}}
|
||||||
|
|
||||||
run:windows:
|
run:windows:
|
||||||
cmds:
|
cmds:
|
||||||
- '{{.BIN_DIR}}\\{{.APP_NAME}}.exe'
|
- '{{.BIN_DIR}}\\{{.APP_NAME}}.exe'
|
||||||
|
|
||||||
run:linux:
|
run:linux:
|
||||||
cmds:
|
cmds:
|
||||||
- '{{.BIN_DIR}}/{{.APP_NAME}}'
|
- '{{.BIN_DIR}}/{{.APP_NAME}}'
|
||||||
|
|
||||||
dev:frontend:
|
dev:frontend:
|
||||||
summary: Runs the frontend in development mode
|
summary: Runs the frontend in development mode
|
||||||
dir: frontend
|
dir: frontend
|
||||||
deps:
|
deps:
|
||||||
- task: install:frontend:deps
|
- task: install:frontend:deps
|
||||||
cmds:
|
cmds:
|
||||||
- npm run dev
|
- npm run dev
|
||||||
|
|
||||||
dev:
|
dev:
|
||||||
summary: Runs the application in development mode
|
summary: Runs the application in development mode
|
||||||
cmds:
|
cmds:
|
||||||
- wails3 tool watcher -config ./build/devmode.config.toml
|
- wails3 tool watcher -config ./build/devmode.config.toml
|
||||||
env:
|
env:
|
||||||
# This is the default vite dev server port
|
# This is the default vite dev server port
|
||||||
FRONTEND_DEVSERVER_URL: 'http://localhost:5173'
|
FRONTEND_DEVSERVER_URL: 'http://localhost:5173'
|
||||||
|
|
||||||
dev:reload:
|
dev:reload:
|
||||||
summary: Reloads the application
|
summary: Reloads the application
|
||||||
cmds:
|
cmds:
|
||||||
- task: run
|
- task: run
|
||||||
34
app/bordro-robotu/.gitignore
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
.DS_Store
|
||||||
|
.thumbs.db
|
||||||
|
node_modules
|
||||||
|
/.node_modules
|
||||||
|
|
||||||
|
# Quasar core related directories
|
||||||
|
.quasar
|
||||||
|
/dist
|
||||||
|
/quasar.config.*.temporary.compiled*
|
||||||
|
|
||||||
|
# Cordova related directories and files
|
||||||
|
/src-cordova/node_modules
|
||||||
|
/src-cordova/platforms
|
||||||
|
/src-cordova/plugins
|
||||||
|
/src-cordova/www
|
||||||
|
|
||||||
|
# Capacitor related directories and files
|
||||||
|
/src-capacitor/www
|
||||||
|
/src-capacitor/node_modules
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
|
||||||
|
# local .env files
|
||||||
|
.env.local*
|
||||||
BIN
app/bordro-robotu/frontend/dist/Inter-Medium.ttf
vendored
Normal file
21
app/bordro-robotu/frontend/dist/assets/index-CvjddRoH.js
vendored
Normal file
5
app/bordro-robotu/frontend/dist/assets/index-QSDk4erA.css
vendored
Normal file
15
app/bordro-robotu/frontend/dist/index.html
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/wails.png" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<!-- <link rel="stylesheet" href="/style.css" /> -->
|
||||||
|
<title>Wails + Vue</title>
|
||||||
|
<script type="module" crossorigin src="/assets/index-CvjddRoH.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/assets/index-QSDk4erA.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
1
app/bordro-robotu/frontend/dist/javascript.svg
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="#F7DF1E" d="M0 0h256v256H0V0Z"></path><path d="m67.312 213.932l19.59-11.856c3.78 6.701 7.218 12.371 15.465 12.371c7.905 0 12.89-3.092 12.89-15.12v-81.798h24.057v82.138c0 24.917-14.606 36.259-35.916 36.259c-19.245 0-30.416-9.967-36.087-21.996m85.07-2.576l19.588-11.341c5.157 8.421 11.859 14.607 23.715 14.607c9.969 0 16.325-4.984 16.325-11.858c0-8.248-6.53-11.17-17.528-15.98l-6.013-2.58c-17.357-7.387-28.87-16.667-28.87-36.257c0-18.044 13.747-31.792 35.228-31.792c15.294 0 26.292 5.328 34.196 19.247l-18.732 12.03c-4.125-7.389-8.591-10.31-15.465-10.31c-7.046 0-11.514 4.468-11.514 10.31c0 7.217 4.468 10.14 14.778 14.608l6.014 2.577c20.45 8.765 31.963 17.7 31.963 37.804c0 21.654-17.012 33.51-39.867 33.51c-22.339 0-36.774-10.654-43.819-24.574"></path></svg>
|
||||||
|
After Width: | Height: | Size: 995 B |
146
app/bordro-robotu/frontend/dist/style.css
vendored
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
:root {
|
||||||
|
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto",
|
||||||
|
"Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
||||||
|
sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
font-weight: 400;
|
||||||
|
color-scheme: light dark;
|
||||||
|
color: rgba(255, 255, 255, 0.87);
|
||||||
|
background-color: rgba(27, 38, 54, 1);
|
||||||
|
font-synthesis: none;
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Inter";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: local(""),
|
||||||
|
url("./Inter-Medium.ttf") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 3em;
|
||||||
|
line-height: 1.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-weight: 500;
|
||||||
|
color: #646cff;
|
||||||
|
text-decoration: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #535bf2;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
width: 60px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
border-radius: 3px;
|
||||||
|
border: none;
|
||||||
|
margin: 0 0 0 20px;
|
||||||
|
padding: 0 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.result {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
display: flex;
|
||||||
|
place-items: center;
|
||||||
|
place-content: center;
|
||||||
|
min-width: 320px;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 3.2em;
|
||||||
|
line-height: 1.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app {
|
||||||
|
max-width: 1280px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.result {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
margin: 1.5rem auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
margin-top: 1rem;
|
||||||
|
align-content: center;
|
||||||
|
text-align: center;
|
||||||
|
color: rgba(255, 255, 255, 0.67);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: light) {
|
||||||
|
:root {
|
||||||
|
color: #213547;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: #747bff;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.input-box .btn:hover {
|
||||||
|
background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%);
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-box .input {
|
||||||
|
border: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
outline: none;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0 10px;
|
||||||
|
color: black;
|
||||||
|
background-color: rgba(240, 240, 240, 1);
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-box .input:hover {
|
||||||
|
border: none;
|
||||||
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-box .input:focus {
|
||||||
|
border: none;
|
||||||
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
}
|
||||||
1
app/bordro-robotu/frontend/dist/vue.svg
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
|
||||||
|
After Width: | Height: | Size: 496 B |
BIN
app/bordro-robotu/frontend/dist/wails.png
vendored
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
app/bordro_robot.db
Normal file
@@ -1,32 +1,32 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>My Product</string>
|
<string>My Product</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>bordro-robotu</string>
|
<string>bordro-robotu</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.wails.bordro-robotu</string>
|
<string>com.wails.bordro-robotu</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>0.1.0</string>
|
<string>0.1.0</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>This is a comment</string>
|
<string>This is a comment</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>0.1.0</string>
|
<string>0.1.0</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>icons</string>
|
<string>icons</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.13.0</string>
|
<string>10.13.0</string>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<string>true</string>
|
<string>true</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© now, My Company</string>
|
<string>© now, My Company</string>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSAllowsLocalNetworking</key>
|
<key>NSAllowsLocalNetworking</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -1,27 +1,27 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>My Product</string>
|
<string>My Product</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>bordro-robotu</string>
|
<string>bordro-robotu</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.wails.bordro-robotu</string>
|
<string>com.wails.bordro-robotu</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>0.1.0</string>
|
<string>0.1.0</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>This is a comment</string>
|
<string>This is a comment</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>0.1.0</string>
|
<string>0.1.0</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>icons</string>
|
<string>icons</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>10.13.0</string>
|
<string>10.13.0</string>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<string>true</string>
|
<string>true</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>© now, My Company</string>
|
<string>© now, My Company</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -1,26 +1,26 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Copyright (c) 2018-Present Lea Anthony
|
# Copyright (c) 2018-Present Lea Anthony
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
# Fail script on any error
|
# Fail script on any error
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
# Define variables
|
# Define variables
|
||||||
APP_DIR="${APP_NAME}.AppDir"
|
APP_DIR="${APP_NAME}.AppDir"
|
||||||
|
|
||||||
# Create AppDir structure
|
# Create AppDir structure
|
||||||
mkdir -p "${APP_DIR}/usr/bin"
|
mkdir -p "${APP_DIR}/usr/bin"
|
||||||
cp -r "${APP_BINARY}" "${APP_DIR}/usr/bin/"
|
cp -r "${APP_BINARY}" "${APP_DIR}/usr/bin/"
|
||||||
cp "${ICON_PATH}" "${APP_DIR}/"
|
cp "${ICON_PATH}" "${APP_DIR}/"
|
||||||
cp "${DESKTOP_FILE}" "${APP_DIR}/"
|
cp "${DESKTOP_FILE}" "${APP_DIR}/"
|
||||||
|
|
||||||
# Download linuxdeploy and make it executable
|
# Download linuxdeploy and make it executable
|
||||||
wget -q -4 -N https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
wget -q -4 -N https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||||
chmod +x linuxdeploy-x86_64.AppImage
|
chmod +x linuxdeploy-x86_64.AppImage
|
||||||
|
|
||||||
# Run linuxdeploy to bundle the application
|
# Run linuxdeploy to bundle the application
|
||||||
./linuxdeploy-x86_64.AppImage --appdir "${APP_DIR}" --output appimage
|
./linuxdeploy-x86_64.AppImage --appdir "${APP_DIR}" --output appimage
|
||||||
|
|
||||||
# Rename the generated AppImage
|
# Rename the generated AppImage
|
||||||
mv "${APP_NAME}*.AppImage" "${APP_NAME}.AppImage"
|
mv "${APP_NAME}*.AppImage" "${APP_NAME}.AppImage"
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +1,35 @@
|
|||||||
[config]
|
[config]
|
||||||
root_path = "."
|
root_path = "."
|
||||||
# debug | info | warn | error | mute
|
# debug | info | warn | error | mute
|
||||||
# Defaults to Info if not provided
|
# Defaults to Info if not provided
|
||||||
log_level = "warn"
|
log_level = "warn"
|
||||||
# Debounce setting for ignoring reptitive file system notifications
|
# Debounce setting for ignoring reptitive file system notifications
|
||||||
debounce = 1000 # Milliseconds
|
debounce = 1000 # Milliseconds
|
||||||
# Sets what files the watcher should ignore
|
# Sets what files the watcher should ignore
|
||||||
[config.ignore]
|
[config.ignore]
|
||||||
# Directories to ignore
|
# Directories to ignore
|
||||||
dir = [".git", "node_modules", "frontend", "bin"]
|
dir = [".git", "node_modules", "frontend", "bin"]
|
||||||
# Files to ignore
|
# Files to ignore
|
||||||
file = [".DS_Store", ".gitignore", ".gitkeep"]
|
file = [".DS_Store", ".gitignore", ".gitkeep"]
|
||||||
# File extensions to watch
|
# File extensions to watch
|
||||||
watched_extension = ["*.go"]
|
watched_extension = ["*.go"]
|
||||||
# Add .gitignore paths to ignore
|
# Add .gitignore paths to ignore
|
||||||
git_ignore = true
|
git_ignore = true
|
||||||
|
|
||||||
[config.background]
|
[config.background]
|
||||||
cmd = "wails3 task dev:frontend"
|
cmd = "wails3 task dev:frontend"
|
||||||
|
|
||||||
[[config.executes]]
|
[[config.executes]]
|
||||||
cmd = "go mod tidy"
|
cmd = "go mod tidy"
|
||||||
blocking = true
|
blocking = true
|
||||||
|
|
||||||
[[config.executes]]
|
[[config.executes]]
|
||||||
cmd = "wails3 task build"
|
cmd = "wails3 task build"
|
||||||
blocking = true
|
blocking = true
|
||||||
|
|
||||||
[[config.executes]]
|
[[config.executes]]
|
||||||
cmd = "KILL_STALE"
|
cmd = "KILL_STALE"
|
||||||
|
|
||||||
[[config.executes]]
|
[[config.executes]]
|
||||||
cmd = "./bin/bordro-robotu"
|
cmd = "./bin/bordro-robotu"
|
||||||
primary = true
|
primary = true
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 4.2 KiB |
BIN
app/build/icon2.ico
Normal file
|
After Width: | Height: | Size: 21 KiB |
@@ -1,15 +1,15 @@
|
|||||||
{
|
{
|
||||||
"fixed": {
|
"fixed": {
|
||||||
"file_version": "0.1.0"
|
"file_version": "0.1.0"
|
||||||
},
|
},
|
||||||
"info": {
|
"info": {
|
||||||
"0000": {
|
"0000": {
|
||||||
"ProductVersion": "0.1.0",
|
"ProductVersion": "0.1.0",
|
||||||
"CompanyName": "My Company",
|
"CompanyName": "Notitek Yazılım A.Ş",
|
||||||
"FileDescription": "My Product Description",
|
"FileDescription": "Bordro Robotu",
|
||||||
"LegalCopyright": "© now, My Company",
|
"LegalCopyright": "© now, Notitek Yazılım A.Ş",
|
||||||
"ProductName": "My Product",
|
"ProductName": "Bordro Robotu",
|
||||||
"Comments": "This is a comment"
|
"Comments": "Luca Bordro Robotu"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,108 +1,108 @@
|
|||||||
Unicode true
|
Unicode true
|
||||||
|
|
||||||
####
|
####
|
||||||
## Please note: Template replacements don't work in this file. They are provided with default defines like
|
## Please note: Template replacements don't work in this file. They are provided with default defines like
|
||||||
## mentioned underneath.
|
## mentioned underneath.
|
||||||
## If the keyword is not defined, "wails_tools.nsh" will populate them.
|
## If the keyword is not defined, "wails_tools.nsh" will populate them.
|
||||||
## If they are defined here, "wails_tools.nsh" will not touch them. This allows you to use this project.nsi manually
|
## If they are defined here, "wails_tools.nsh" will not touch them. This allows you to use this project.nsi manually
|
||||||
## from outside of Wails for debugging and development of the installer.
|
## from outside of Wails for debugging and development of the installer.
|
||||||
##
|
##
|
||||||
## For development first make a wails nsis build to populate the "wails_tools.nsh":
|
## For development first make a wails nsis build to populate the "wails_tools.nsh":
|
||||||
## > wails build --target windows/amd64 --nsis
|
## > wails build --target windows/amd64 --nsis
|
||||||
## Then you can call makensis on this file with specifying the path to your binary:
|
## Then you can call makensis on this file with specifying the path to your binary:
|
||||||
## For a AMD64 only installer:
|
## For a AMD64 only installer:
|
||||||
## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app.exe
|
## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app.exe
|
||||||
## For a ARM64 only installer:
|
## For a ARM64 only installer:
|
||||||
## > makensis -DARG_WAILS_ARM64_BINARY=..\..\bin\app.exe
|
## > makensis -DARG_WAILS_ARM64_BINARY=..\..\bin\app.exe
|
||||||
## For a installer with both architectures:
|
## For a installer with both architectures:
|
||||||
## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app-amd64.exe -DARG_WAILS_ARM64_BINARY=..\..\bin\app-arm64.exe
|
## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app-amd64.exe -DARG_WAILS_ARM64_BINARY=..\..\bin\app-arm64.exe
|
||||||
####
|
####
|
||||||
## The following information is taken from the wails_tools.nsh file, but they can be overwritten here.
|
## The following information is taken from the wails_tools.nsh file, but they can be overwritten here.
|
||||||
####
|
####
|
||||||
## !define INFO_PROJECTNAME "my-project" # Default "bordro-robotu"
|
## !define INFO_PROJECTNAME "my-project" # Default "bordro-robotu"
|
||||||
## !define INFO_COMPANYNAME "My Company" # Default "My Company"
|
## !define INFO_COMPANYNAME "My Company" # Default "My Company"
|
||||||
## !define INFO_PRODUCTNAME "My Product Name" # Default "My Product"
|
## !define INFO_PRODUCTNAME "My Product Name" # Default "My Product"
|
||||||
## !define INFO_PRODUCTVERSION "1.0.0" # Default "0.1.0"
|
## !define INFO_PRODUCTVERSION "1.0.0" # Default "0.1.0"
|
||||||
## !define INFO_COPYRIGHT "(c) Now, My Company" # Default "© now, My Company"
|
## !define INFO_COPYRIGHT "(c) Now, My Company" # Default "© now, My Company"
|
||||||
###
|
###
|
||||||
## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe"
|
## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe"
|
||||||
## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
||||||
####
|
####
|
||||||
## !define REQUEST_EXECUTION_LEVEL "admin" # Default "admin" see also https://nsis.sourceforge.io/Docs/Chapter4.html
|
## !define REQUEST_EXECUTION_LEVEL "admin" # Default "admin" see also https://nsis.sourceforge.io/Docs/Chapter4.html
|
||||||
####
|
####
|
||||||
## Include the wails tools
|
## Include the wails tools
|
||||||
####
|
####
|
||||||
!include "wails_tools.nsh"
|
!include "wails_tools.nsh"
|
||||||
|
|
||||||
# The version information for this two must consist of 4 parts
|
# The version information for this two must consist of 4 parts
|
||||||
VIProductVersion "${INFO_PRODUCTVERSION}.0"
|
VIProductVersion "${INFO_PRODUCTVERSION}.0"
|
||||||
VIFileVersion "${INFO_PRODUCTVERSION}.0"
|
VIFileVersion "${INFO_PRODUCTVERSION}.0"
|
||||||
|
|
||||||
VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}"
|
VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}"
|
||||||
VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer"
|
VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer"
|
||||||
VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}"
|
VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}"
|
||||||
VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}"
|
VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}"
|
||||||
VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}"
|
VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}"
|
||||||
VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}"
|
VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}"
|
||||||
|
|
||||||
# Enable HiDPI support. https://nsis.sourceforge.io/Reference/ManifestDPIAware
|
# Enable HiDPI support. https://nsis.sourceforge.io/Reference/ManifestDPIAware
|
||||||
ManifestDPIAware true
|
ManifestDPIAware true
|
||||||
|
|
||||||
!include "MUI.nsh"
|
!include "MUI.nsh"
|
||||||
|
|
||||||
!define MUI_ICON "..\icon.ico"
|
!define MUI_ICON "..\icon.ico"
|
||||||
!define MUI_UNICON "..\icon.ico"
|
!define MUI_UNICON "..\icon.ico"
|
||||||
# !define MUI_WELCOMEFINISHPAGE_BITMAP "resources\leftimage.bmp" #Include this to add a bitmap on the left side of the Welcome Page. Must be a size of 164x314
|
# !define MUI_WELCOMEFINISHPAGE_BITMAP "resources\leftimage.bmp" #Include this to add a bitmap on the left side of the Welcome Page. Must be a size of 164x314
|
||||||
!define MUI_FINISHPAGE_NOAUTOCLOSE # Wait on the INSTFILES page so the user can take a look into the details of the installation steps
|
!define MUI_FINISHPAGE_NOAUTOCLOSE # Wait on the INSTFILES page so the user can take a look into the details of the installation steps
|
||||||
!define MUI_ABORTWARNING # This will warn the user if they exit from the installer.
|
!define MUI_ABORTWARNING # This will warn the user if they exit from the installer.
|
||||||
|
|
||||||
!insertmacro MUI_PAGE_WELCOME # Welcome to the installer page.
|
!insertmacro MUI_PAGE_WELCOME # Welcome to the installer page.
|
||||||
# !insertmacro MUI_PAGE_LICENSE "resources\eula.txt" # Adds a EULA page to the installer
|
# !insertmacro MUI_PAGE_LICENSE "resources\eula.txt" # Adds a EULA page to the installer
|
||||||
!insertmacro MUI_PAGE_DIRECTORY # In which folder install page.
|
!insertmacro MUI_PAGE_DIRECTORY # In which folder install page.
|
||||||
!insertmacro MUI_PAGE_INSTFILES # Installing page.
|
!insertmacro MUI_PAGE_INSTFILES # Installing page.
|
||||||
!insertmacro MUI_PAGE_FINISH # Finished installation page.
|
!insertmacro MUI_PAGE_FINISH # Finished installation page.
|
||||||
|
|
||||||
!insertmacro MUI_UNPAGE_INSTFILES # Uninstalling page
|
!insertmacro MUI_UNPAGE_INSTFILES # Uninstalling page
|
||||||
|
|
||||||
!insertmacro MUI_LANGUAGE "English" # Set the Language of the installer
|
!insertmacro MUI_LANGUAGE "English" # Set the Language of the installer
|
||||||
|
|
||||||
## The following two statements can be used to sign the installer and the uninstaller. The path to the binaries are provided in %1
|
## The following two statements can be used to sign the installer and the uninstaller. The path to the binaries are provided in %1
|
||||||
#!uninstfinalize 'signtool --file "%1"'
|
#!uninstfinalize 'signtool --file "%1"'
|
||||||
#!finalize 'signtool --file "%1"'
|
#!finalize 'signtool --file "%1"'
|
||||||
|
|
||||||
Name "${INFO_PRODUCTNAME}"
|
Name "${INFO_PRODUCTNAME}"
|
||||||
OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file.
|
OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file.
|
||||||
InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder).
|
InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder).
|
||||||
ShowInstDetails show # This will always show the installation details.
|
ShowInstDetails show # This will always show the installation details.
|
||||||
|
|
||||||
Function .onInit
|
Function .onInit
|
||||||
!insertmacro wails.checkArchitecture
|
!insertmacro wails.checkArchitecture
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
Section
|
Section
|
||||||
!insertmacro wails.setShellContext
|
!insertmacro wails.setShellContext
|
||||||
|
|
||||||
!insertmacro wails.webview2runtime
|
!insertmacro wails.webview2runtime
|
||||||
|
|
||||||
SetOutPath $INSTDIR
|
SetOutPath $INSTDIR
|
||||||
|
|
||||||
!insertmacro wails.files
|
!insertmacro wails.files
|
||||||
|
|
||||||
CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||||
CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||||
|
|
||||||
!insertmacro wails.writeUninstaller
|
!insertmacro wails.writeUninstaller
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section "uninstall"
|
Section "uninstall"
|
||||||
!insertmacro wails.setShellContext
|
!insertmacro wails.setShellContext
|
||||||
|
|
||||||
RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath
|
RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath
|
||||||
|
|
||||||
RMDir /r $INSTDIR
|
RMDir /r $INSTDIR
|
||||||
|
|
||||||
Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk"
|
Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk"
|
||||||
Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk"
|
Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk"
|
||||||
|
|
||||||
!insertmacro wails.deleteUninstaller
|
!insertmacro wails.deleteUninstaller
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|||||||
@@ -1,179 +1,179 @@
|
|||||||
# DO NOT EDIT - Generated automatically by `wails build`
|
# DO NOT EDIT - Generated automatically by `wails build`
|
||||||
|
|
||||||
!include "x64.nsh"
|
!include "x64.nsh"
|
||||||
!include "WinVer.nsh"
|
!include "WinVer.nsh"
|
||||||
!include "FileFunc.nsh"
|
!include "FileFunc.nsh"
|
||||||
|
|
||||||
!ifndef INFO_PROJECTNAME
|
!ifndef INFO_PROJECTNAME
|
||||||
!define INFO_PROJECTNAME "bordro-robotu"
|
!define INFO_PROJECTNAME "bordro-robotu"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_COMPANYNAME
|
!ifndef INFO_COMPANYNAME
|
||||||
!define INFO_COMPANYNAME "My Company"
|
!define INFO_COMPANYNAME "My Company"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_PRODUCTNAME
|
!ifndef INFO_PRODUCTNAME
|
||||||
!define INFO_PRODUCTNAME "My Product"
|
!define INFO_PRODUCTNAME "My Product"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_PRODUCTVERSION
|
!ifndef INFO_PRODUCTVERSION
|
||||||
!define INFO_PRODUCTVERSION "0.1.0"
|
!define INFO_PRODUCTVERSION "0.1.0"
|
||||||
!endif
|
!endif
|
||||||
!ifndef INFO_COPYRIGHT
|
!ifndef INFO_COPYRIGHT
|
||||||
!define INFO_COPYRIGHT "© now, My Company"
|
!define INFO_COPYRIGHT "© now, My Company"
|
||||||
!endif
|
!endif
|
||||||
!ifndef PRODUCT_EXECUTABLE
|
!ifndef PRODUCT_EXECUTABLE
|
||||||
!define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe"
|
!define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe"
|
||||||
!endif
|
!endif
|
||||||
!ifndef UNINST_KEY_NAME
|
!ifndef UNINST_KEY_NAME
|
||||||
!define UNINST_KEY_NAME "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
!define UNINST_KEY_NAME "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
|
||||||
!endif
|
!endif
|
||||||
!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_KEY_NAME}"
|
!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_KEY_NAME}"
|
||||||
|
|
||||||
!ifndef REQUEST_EXECUTION_LEVEL
|
!ifndef REQUEST_EXECUTION_LEVEL
|
||||||
!define REQUEST_EXECUTION_LEVEL "admin"
|
!define REQUEST_EXECUTION_LEVEL "admin"
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}"
|
RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}"
|
||||||
|
|
||||||
!ifdef ARG_WAILS_AMD64_BINARY
|
!ifdef ARG_WAILS_AMD64_BINARY
|
||||||
!define SUPPORTS_AMD64
|
!define SUPPORTS_AMD64
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifdef ARG_WAILS_ARM64_BINARY
|
!ifdef ARG_WAILS_ARM64_BINARY
|
||||||
!define SUPPORTS_ARM64
|
!define SUPPORTS_ARM64
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifdef SUPPORTS_AMD64
|
!ifdef SUPPORTS_AMD64
|
||||||
!ifdef SUPPORTS_ARM64
|
!ifdef SUPPORTS_ARM64
|
||||||
!define ARCH "amd64_arm64"
|
!define ARCH "amd64_arm64"
|
||||||
!else
|
!else
|
||||||
!define ARCH "amd64"
|
!define ARCH "amd64"
|
||||||
!endif
|
!endif
|
||||||
!else
|
!else
|
||||||
!ifdef SUPPORTS_ARM64
|
!ifdef SUPPORTS_ARM64
|
||||||
!define ARCH "arm64"
|
!define ARCH "arm64"
|
||||||
!else
|
!else
|
||||||
!error "Wails: Undefined ARCH, please provide at least one of ARG_WAILS_AMD64_BINARY or ARG_WAILS_ARM64_BINARY"
|
!error "Wails: Undefined ARCH, please provide at least one of ARG_WAILS_AMD64_BINARY or ARG_WAILS_ARM64_BINARY"
|
||||||
!endif
|
!endif
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!macro wails.checkArchitecture
|
!macro wails.checkArchitecture
|
||||||
!ifndef WAILS_WIN10_REQUIRED
|
!ifndef WAILS_WIN10_REQUIRED
|
||||||
!define WAILS_WIN10_REQUIRED "This product is only supported on Windows 10 (Server 2016) and later."
|
!define WAILS_WIN10_REQUIRED "This product is only supported on Windows 10 (Server 2016) and later."
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifndef WAILS_ARCHITECTURE_NOT_SUPPORTED
|
!ifndef WAILS_ARCHITECTURE_NOT_SUPPORTED
|
||||||
!define WAILS_ARCHITECTURE_NOT_SUPPORTED "This product can't be installed on the current Windows architecture. Supports: ${ARCH}"
|
!define WAILS_ARCHITECTURE_NOT_SUPPORTED "This product can't be installed on the current Windows architecture. Supports: ${ARCH}"
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
${If} ${AtLeastWin10}
|
${If} ${AtLeastWin10}
|
||||||
!ifdef SUPPORTS_AMD64
|
!ifdef SUPPORTS_AMD64
|
||||||
${if} ${IsNativeAMD64}
|
${if} ${IsNativeAMD64}
|
||||||
Goto ok
|
Goto ok
|
||||||
${EndIf}
|
${EndIf}
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifdef SUPPORTS_ARM64
|
!ifdef SUPPORTS_ARM64
|
||||||
${if} ${IsNativeARM64}
|
${if} ${IsNativeARM64}
|
||||||
Goto ok
|
Goto ok
|
||||||
${EndIf}
|
${EndIf}
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
IfSilent silentArch notSilentArch
|
IfSilent silentArch notSilentArch
|
||||||
silentArch:
|
silentArch:
|
||||||
SetErrorLevel 65
|
SetErrorLevel 65
|
||||||
Abort
|
Abort
|
||||||
notSilentArch:
|
notSilentArch:
|
||||||
MessageBox MB_OK "${WAILS_ARCHITECTURE_NOT_SUPPORTED}"
|
MessageBox MB_OK "${WAILS_ARCHITECTURE_NOT_SUPPORTED}"
|
||||||
Quit
|
Quit
|
||||||
${else}
|
${else}
|
||||||
IfSilent silentWin notSilentWin
|
IfSilent silentWin notSilentWin
|
||||||
silentWin:
|
silentWin:
|
||||||
SetErrorLevel 64
|
SetErrorLevel 64
|
||||||
Abort
|
Abort
|
||||||
notSilentWin:
|
notSilentWin:
|
||||||
MessageBox MB_OK "${WAILS_WIN10_REQUIRED}"
|
MessageBox MB_OK "${WAILS_WIN10_REQUIRED}"
|
||||||
Quit
|
Quit
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
ok:
|
ok:
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
!macro wails.files
|
!macro wails.files
|
||||||
!ifdef SUPPORTS_AMD64
|
!ifdef SUPPORTS_AMD64
|
||||||
${if} ${IsNativeAMD64}
|
${if} ${IsNativeAMD64}
|
||||||
File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_AMD64_BINARY}"
|
File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_AMD64_BINARY}"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifdef SUPPORTS_ARM64
|
!ifdef SUPPORTS_ARM64
|
||||||
${if} ${IsNativeARM64}
|
${if} ${IsNativeARM64}
|
||||||
File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_ARM64_BINARY}"
|
File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_ARM64_BINARY}"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
!endif
|
!endif
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
!macro wails.writeUninstaller
|
!macro wails.writeUninstaller
|
||||||
WriteUninstaller "$INSTDIR\uninstall.exe"
|
WriteUninstaller "$INSTDIR\uninstall.exe"
|
||||||
|
|
||||||
SetRegView 64
|
SetRegView 64
|
||||||
WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${INFO_COMPANYNAME}"
|
WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${INFO_COMPANYNAME}"
|
||||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${INFO_PRODUCTNAME}"
|
WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${INFO_PRODUCTNAME}"
|
||||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${INFO_PRODUCTVERSION}"
|
WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${INFO_PRODUCTVERSION}"
|
||||||
WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXECUTABLE}"
|
||||||
WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
|
WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
|
||||||
WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
|
WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
|
||||||
|
|
||||||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
||||||
IntFmt $0 "0x%08X" $0
|
IntFmt $0 "0x%08X" $0
|
||||||
WriteRegDWORD HKLM "${UNINST_KEY}" "EstimatedSize" "$0"
|
WriteRegDWORD HKLM "${UNINST_KEY}" "EstimatedSize" "$0"
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
!macro wails.deleteUninstaller
|
!macro wails.deleteUninstaller
|
||||||
Delete "$INSTDIR\uninstall.exe"
|
Delete "$INSTDIR\uninstall.exe"
|
||||||
|
|
||||||
SetRegView 64
|
SetRegView 64
|
||||||
DeleteRegKey HKLM "${UNINST_KEY}"
|
DeleteRegKey HKLM "${UNINST_KEY}"
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
!macro wails.setShellContext
|
!macro wails.setShellContext
|
||||||
${If} ${REQUEST_EXECUTION_LEVEL} == "admin"
|
${If} ${REQUEST_EXECUTION_LEVEL} == "admin"
|
||||||
SetShellVarContext all
|
SetShellVarContext all
|
||||||
${else}
|
${else}
|
||||||
SetShellVarContext current
|
SetShellVarContext current
|
||||||
${EndIf}
|
${EndIf}
|
||||||
!macroend
|
!macroend
|
||||||
|
|
||||||
# Install webview2 by launching the bootstrapper
|
# Install webview2 by launching the bootstrapper
|
||||||
# See https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#online-only-deployment
|
# See https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#online-only-deployment
|
||||||
!macro wails.webview2runtime
|
!macro wails.webview2runtime
|
||||||
!ifndef WAILS_INSTALL_WEBVIEW_DETAILPRINT
|
!ifndef WAILS_INSTALL_WEBVIEW_DETAILPRINT
|
||||||
!define WAILS_INSTALL_WEBVIEW_DETAILPRINT "Installing: WebView2 Runtime"
|
!define WAILS_INSTALL_WEBVIEW_DETAILPRINT "Installing: WebView2 Runtime"
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
SetRegView 64
|
SetRegView 64
|
||||||
# If the admin key exists and is not empty then webview2 is already installed
|
# If the admin key exists and is not empty then webview2 is already installed
|
||||||
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
|
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
|
||||||
${If} $0 != ""
|
${If} $0 != ""
|
||||||
Goto ok
|
Goto ok
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
${If} ${REQUEST_EXECUTION_LEVEL} == "user"
|
${If} ${REQUEST_EXECUTION_LEVEL} == "user"
|
||||||
# If the installer is run in user level, check the user specific key exists and is not empty then webview2 is already installed
|
# If the installer is run in user level, check the user specific key exists and is not empty then webview2 is already installed
|
||||||
ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
|
ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
|
||||||
${If} $0 != ""
|
${If} $0 != ""
|
||||||
Goto ok
|
Goto ok
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
SetDetailsPrint both
|
SetDetailsPrint both
|
||||||
DetailPrint "${WAILS_INSTALL_WEBVIEW_DETAILPRINT}"
|
DetailPrint "${WAILS_INSTALL_WEBVIEW_DETAILPRINT}"
|
||||||
SetDetailsPrint listonly
|
SetDetailsPrint listonly
|
||||||
|
|
||||||
InitPluginsDir
|
InitPluginsDir
|
||||||
CreateDirectory "$pluginsdir\webview2bootstrapper"
|
CreateDirectory "$pluginsdir\webview2bootstrapper"
|
||||||
SetOutPath "$pluginsdir\webview2bootstrapper"
|
SetOutPath "$pluginsdir\webview2bootstrapper"
|
||||||
File "MicrosoftEdgeWebview2Setup.exe"
|
File "MicrosoftEdgeWebview2Setup.exe"
|
||||||
ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install'
|
ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install'
|
||||||
|
|
||||||
SetDetailsPrint both
|
SetDetailsPrint both
|
||||||
ok:
|
ok:
|
||||||
!macroend
|
!macroend
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
import _ "embed"
|
import _ "embed"
|
||||||
|
|
||||||
//go:embed runtime.js
|
//go:embed runtime.js
|
||||||
var RuntimeJS []byte
|
var RuntimeJS []byte
|
||||||
|
|
||||||
//go:embed runtime.debug.js
|
//go:embed runtime.debug.js
|
||||||
var RuntimeDebugJS []byte
|
var RuntimeDebugJS []byte
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
<assemblyIdentity type="win32" name="com.wails.bordro-robotu" version="0.1.0" processorArchitecture="*"/>
|
<assemblyIdentity type="win32" name="com.wails.bordro-robotu" version="0.1.0" processorArchitecture="*"/>
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
<asmv3:application>
|
<asmv3:application>
|
||||||
<asmv3:windowsSettings>
|
<asmv3:windowsSettings>
|
||||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- fallback for Windows 7 and 8 -->
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- fallback for Windows 7 and 8 -->
|
||||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to per-monitor if per-monitor v2 is not supported -->
|
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to per-monitor if per-monitor v2 is not supported -->
|
||||||
</asmv3:windowsSettings>
|
</asmv3:windowsSettings>
|
||||||
</asmv3:application>
|
</asmv3:application>
|
||||||
</assembly>
|
</assembly>
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
charset = utf-8
|
charset = utf-8
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/dist
|
/dist
|
||||||
/src-capacitor
|
/src-capacitor
|
||||||
/src-cordova
|
/src-cordova
|
||||||
/.quasar
|
/.quasar
|
||||||
/node_modules
|
/node_modules
|
||||||
.eslintrc.cjs
|
.eslintrc.cjs
|
||||||
/quasar.config.*.temporary.compiled*
|
/quasar.config.*.temporary.compiled*
|
||||||
|
|||||||
@@ -1,69 +1,69 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
// https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy
|
// https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy
|
||||||
// This option interrupts the configuration hierarchy at this file
|
// This option interrupts the configuration hierarchy at this file
|
||||||
// Remove this if you have an higher level ESLint config file (it usually happens into a monorepos)
|
// Remove this if you have an higher level ESLint config file (it usually happens into a monorepos)
|
||||||
root: true,
|
root: true,
|
||||||
|
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
ecmaVersion: 2021, // Allows for the parsing of modern ECMAScript features
|
ecmaVersion: 2021, // Allows for the parsing of modern ECMAScript features
|
||||||
},
|
},
|
||||||
|
|
||||||
env: {
|
env: {
|
||||||
node: true,
|
node: true,
|
||||||
browser: true,
|
browser: true,
|
||||||
'vue/setup-compiler-macros': true
|
'vue/setup-compiler-macros': true
|
||||||
},
|
},
|
||||||
|
|
||||||
// Rules order is important, please avoid shuffling them
|
// Rules order is important, please avoid shuffling them
|
||||||
extends: [
|
extends: [
|
||||||
// Base ESLint recommended rules
|
// Base ESLint recommended rules
|
||||||
// 'eslint:recommended',
|
// 'eslint:recommended',
|
||||||
|
|
||||||
// Uncomment any of the lines below to choose desired strictness,
|
// Uncomment any of the lines below to choose desired strictness,
|
||||||
// but leave only one uncommented!
|
// but leave only one uncommented!
|
||||||
// See https://eslint.vuejs.org/rules/#available-rules
|
// See https://eslint.vuejs.org/rules/#available-rules
|
||||||
'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
|
'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
|
||||||
// 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
|
// 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
|
||||||
// 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
|
// 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
|
||||||
|
|
||||||
// https://github.com/prettier/eslint-config-prettier#installation
|
// https://github.com/prettier/eslint-config-prettier#installation
|
||||||
// usage with Prettier, provided by 'eslint-config-prettier'.
|
// usage with Prettier, provided by 'eslint-config-prettier'.
|
||||||
'prettier'
|
'prettier'
|
||||||
],
|
],
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
// https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
|
// https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
|
||||||
// required to lint *.vue files
|
// required to lint *.vue files
|
||||||
'vue',
|
'vue',
|
||||||
|
|
||||||
// https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674
|
// https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674
|
||||||
// Prettier has not been included as plugin to avoid performance impact
|
// Prettier has not been included as plugin to avoid performance impact
|
||||||
// add it as an extension for your IDE
|
// add it as an extension for your IDE
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
globals: {
|
globals: {
|
||||||
ga: 'readonly', // Google Analytics
|
ga: 'readonly', // Google Analytics
|
||||||
cordova: 'readonly',
|
cordova: 'readonly',
|
||||||
__statics: 'readonly',
|
__statics: 'readonly',
|
||||||
__QUASAR_SSR__: 'readonly',
|
__QUASAR_SSR__: 'readonly',
|
||||||
__QUASAR_SSR_SERVER__: 'readonly',
|
__QUASAR_SSR_SERVER__: 'readonly',
|
||||||
__QUASAR_SSR_CLIENT__: 'readonly',
|
__QUASAR_SSR_CLIENT__: 'readonly',
|
||||||
__QUASAR_SSR_PWA__: 'readonly',
|
__QUASAR_SSR_PWA__: 'readonly',
|
||||||
process: 'readonly',
|
process: 'readonly',
|
||||||
Capacitor: 'readonly',
|
Capacitor: 'readonly',
|
||||||
chrome: 'readonly'
|
chrome: 'readonly'
|
||||||
},
|
},
|
||||||
|
|
||||||
// add your custom rules here
|
// add your custom rules here
|
||||||
rules: {
|
rules: {
|
||||||
|
|
||||||
'prefer-promise-reject-errors': 'off',
|
'prefer-promise-reject-errors': 'off',
|
||||||
|
|
||||||
// allow debugger during development only
|
// allow debugger during development only
|
||||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
|
||||||
// custom rules
|
// custom rules
|
||||||
'vue/multi-word-component-names': 'off'
|
'vue/multi-word-component-names': 'off'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
67
app/frontend/.gitignore
vendored
@@ -1,33 +1,34 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.thumbs.db
|
.thumbs.db
|
||||||
node_modules
|
node_modules
|
||||||
|
/.node_modules
|
||||||
# Quasar core related directories
|
|
||||||
.quasar
|
# Quasar core related directories
|
||||||
/dist
|
.quasar
|
||||||
/quasar.config.*.temporary.compiled*
|
/dist
|
||||||
|
/quasar.config.*.temporary.compiled*
|
||||||
# Cordova related directories and files
|
|
||||||
/src-cordova/node_modules
|
# Cordova related directories and files
|
||||||
/src-cordova/platforms
|
/src-cordova/node_modules
|
||||||
/src-cordova/plugins
|
/src-cordova/platforms
|
||||||
/src-cordova/www
|
/src-cordova/plugins
|
||||||
|
/src-cordova/www
|
||||||
# Capacitor related directories and files
|
|
||||||
/src-capacitor/www
|
# Capacitor related directories and files
|
||||||
/src-capacitor/node_modules
|
/src-capacitor/www
|
||||||
|
/src-capacitor/node_modules
|
||||||
# Log files
|
|
||||||
npm-debug.log*
|
# Log files
|
||||||
yarn-debug.log*
|
npm-debug.log*
|
||||||
yarn-error.log*
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
# Editor directories and files
|
|
||||||
.idea
|
# Editor directories and files
|
||||||
*.suo
|
.idea
|
||||||
*.ntvs*
|
*.suo
|
||||||
*.njsproj
|
*.ntvs*
|
||||||
*.sln
|
*.njsproj
|
||||||
|
*.sln
|
||||||
# local .env files
|
|
||||||
.env.local*
|
# local .env files
|
||||||
|
.env.local*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# pnpm-related options
|
# pnpm-related options
|
||||||
shamefully-hoist=true
|
shamefully-hoist=true
|
||||||
strict-peer-dependencies=false
|
strict-peer-dependencies=false
|
||||||
# to get the latest compatible packages when creating the project https://github.com/pnpm/pnpm/issues/6463
|
# to get the latest compatible packages when creating the project https://github.com/pnpm/pnpm/issues/6463
|
||||||
resolution-mode=highest
|
resolution-mode=highest
|
||||||
|
|||||||
6
app/frontend/.vscode/extensions.json
vendored
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
|
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +1,41 @@
|
|||||||
# Quasar App (frontend)
|
# Quasar App (frontend)
|
||||||
|
|
||||||
A Quasar Project
|
A Quasar Project
|
||||||
|
|
||||||
## Install the dependencies
|
## Install the dependencies
|
||||||
```bash
|
```bash
|
||||||
yarn
|
yarn
|
||||||
# or
|
# or
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
### Start the app in development mode (hot-code reloading, error reporting, etc.)
|
### Start the app in development mode (hot-code reloading, error reporting, etc.)
|
||||||
```bash
|
```bash
|
||||||
quasar dev
|
quasar dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Lint the files
|
### Lint the files
|
||||||
```bash
|
```bash
|
||||||
yarn lint
|
yarn lint
|
||||||
# or
|
# or
|
||||||
npm run lint
|
npm run lint
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Format the files
|
### Format the files
|
||||||
```bash
|
```bash
|
||||||
yarn format
|
yarn format
|
||||||
# or
|
# or
|
||||||
npm run format
|
npm run format
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Build the app for production
|
### Build the app for production
|
||||||
```bash
|
```bash
|
||||||
quasar build
|
quasar build
|
||||||
```
|
```
|
||||||
|
|
||||||
### Customize the configuration
|
### Customize the configuration
|
||||||
See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js).
|
See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js).
|
||||||
|
|||||||
@@ -4,10 +4,18 @@
|
|||||||
|
|
||||||
import {Call} from '@wailsio/runtime';
|
import {Call} from '@wailsio/runtime';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function Create
|
* @function Create
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
**/
|
**/
|
||||||
export async function Create() {
|
export async function Create() {
|
||||||
return Call.ByName("company.Company.Create", ...Array.prototype.slice.call(arguments, 0));
|
return Call.ByName("company.Company.Create", ...Array.prototype.slice.call(arguments, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function Edit
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
**/
|
||||||
|
export async function Edit() {
|
||||||
|
return Call.ByName("company.Company.Edit", ...Array.prototype.slice.call(arguments, 0));
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import {Call} from '@wailsio/runtime';
|
import {Call} from '@wailsio/runtime';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function Companies
|
* @function Companies
|
||||||
* @returns {Promise<Company[], void>}
|
* @returns {Promise<Company[], void>}
|
||||||
**/
|
**/
|
||||||
@@ -12,7 +12,7 @@ export async function Companies() {
|
|||||||
return Call.ByName("srv.Srv.Companies", ...Array.prototype.slice.call(arguments, 0));
|
return Call.ByName("srv.Srv.Companies", ...Array.prototype.slice.call(arguments, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function CreateCompany
|
* @function CreateCompany
|
||||||
* @param name {string}
|
* @param name {string}
|
||||||
* @param memberNumber {string}
|
* @param memberNumber {string}
|
||||||
@@ -24,17 +24,32 @@ export async function CreateCompany(name, memberNumber, username, password) {
|
|||||||
return Call.ByName("srv.Srv.CreateCompany", ...Array.prototype.slice.call(arguments, 0));
|
return Call.ByName("srv.Srv.CreateCompany", ...Array.prototype.slice.call(arguments, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function Rpa
|
* @function EditCompany
|
||||||
* @param month {number}
|
* @param id {number}
|
||||||
* @param year {number}
|
* @param name {string}
|
||||||
|
* @param memberNumber {string}
|
||||||
|
* @param username {string}
|
||||||
|
* @param password {string}
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
**/
|
**/
|
||||||
export async function Rpa(month, year) {
|
export async function EditCompany(id, name, memberNumber, username, password) {
|
||||||
|
return Call.ByName("srv.Srv.EditCompany", ...Array.prototype.slice.call(arguments, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function Rpa
|
||||||
|
* @param companyID {number}
|
||||||
|
* @param month {number}
|
||||||
|
* @param year {number}
|
||||||
|
* @param devMode {boolean}
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
**/
|
||||||
|
export async function Rpa(companyID, month, year, devMode) {
|
||||||
return Call.ByName("srv.Srv.Rpa", ...Array.prototype.slice.call(arguments, 0));
|
return Call.ByName("srv.Srv.Rpa", ...Array.prototype.slice.call(arguments, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function UploadExcel
|
* @function UploadExcel
|
||||||
* @returns {Promise<string>}
|
* @returns {Promise<string>}
|
||||||
**/
|
**/
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title><%= productName %></title>
|
<title><%= productName %></title>
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="description" content="<%= productDescription %>">
|
<meta name="description" content="<%= productDescription %>">
|
||||||
<meta name="format-detection" content="telephone=no">
|
<meta name="format-detection" content="telephone=no">
|
||||||
<meta name="msapplication-tap-highlight" content="no">
|
<meta name="msapplication-tap-highlight" content="no">
|
||||||
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
||||||
|
|
||||||
<link rel="icon" type="image/png" sizes="128x128" href="icons/favicon-128x128.png">
|
<link rel="icon" type="image/png" sizes="128x128" href="icons/favicon-128x128.png">
|
||||||
<link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png">
|
<link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png">
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
|
<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
|
<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
|
||||||
<link rel="icon" type="image/ico" href="favicon.ico">
|
<link rel="icon" type="image/ico" href="favicon.ico">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- quasar:entry-point -->
|
<!-- quasar:entry-point -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,39 +1,39 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"src/*": [
|
"src/*": [
|
||||||
"src/*"
|
"src/*"
|
||||||
],
|
],
|
||||||
"app/*": [
|
"app/*": [
|
||||||
"*"
|
"*"
|
||||||
],
|
],
|
||||||
"components/*": [
|
"components/*": [
|
||||||
"src/components/*"
|
"src/components/*"
|
||||||
],
|
],
|
||||||
"layouts/*": [
|
"layouts/*": [
|
||||||
"src/layouts/*"
|
"src/layouts/*"
|
||||||
],
|
],
|
||||||
"pages/*": [
|
"pages/*": [
|
||||||
"src/pages/*"
|
"src/pages/*"
|
||||||
],
|
],
|
||||||
"assets/*": [
|
"assets/*": [
|
||||||
"src/assets/*"
|
"src/assets/*"
|
||||||
],
|
],
|
||||||
"boot/*": [
|
"boot/*": [
|
||||||
"src/boot/*"
|
"src/boot/*"
|
||||||
],
|
],
|
||||||
"stores/*": [
|
"stores/*": [
|
||||||
"src/stores/*"
|
"src/stores/*"
|
||||||
],
|
],
|
||||||
"vue$": [
|
"vue$": [
|
||||||
"node_modules/vue/dist/vue.runtime.esm-bundler.js"
|
"node_modules/vue/dist/vue.runtime.esm-bundler.js"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"dist",
|
"dist",
|
||||||
".quasar",
|
".quasar",
|
||||||
"node_modules"
|
"node_modules"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
14513
app/frontend/package-lock.json
generated
@@ -1,37 +1,37 @@
|
|||||||
{
|
{
|
||||||
"name": "frontend",
|
"name": "frontend",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"description": "A Quasar Project",
|
"description": "A Quasar Project",
|
||||||
"productName": "Quasar App",
|
"productName": "Quasar App",
|
||||||
"author": "ctengiz <cagatay.tengiz@gmail.com>",
|
"author": "ctengiz <cagatay.tengiz@gmail.com>",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "eslint --ext .js,.vue ./",
|
"lint": "eslint --ext .js,.vue ./",
|
||||||
"format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore",
|
"format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore",
|
||||||
"test": "echo \"No test specified\" && exit 0",
|
"test": "echo \"No test specified\" && exit 0",
|
||||||
"dev": "quasar dev",
|
"dev": "quasar dev",
|
||||||
"build": "quasar build"
|
"build": "quasar build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@quasar/extras": "^1.16.4",
|
"@quasar/extras": "^1.16.4",
|
||||||
"@wailsio/runtime": "^3.0.0-alpha.20",
|
"@wailsio/runtime": "^3.0.0-alpha.20",
|
||||||
"quasar": "^2.8.0",
|
"quasar": "^2.8.0",
|
||||||
"vue": "^3.4.18",
|
"vue": "^3.4.18",
|
||||||
"vue-router": "^4.0.12"
|
"vue-router": "^4.0.12"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@quasar/app-vite": "^1.4.3",
|
"@quasar/app-vite": "^1.4.3",
|
||||||
"autoprefixer": "^10.4.2",
|
"autoprefixer": "^10.4.2",
|
||||||
"eslint": "^8.11.0",
|
"eslint": "^8.11.0",
|
||||||
"eslint-config-prettier": "^8.1.0",
|
"eslint-config-prettier": "^8.1.0",
|
||||||
"eslint-plugin-vue": "^9.0.0",
|
"eslint-plugin-vue": "^9.0.0",
|
||||||
"postcss": "^8.4.14",
|
"postcss": "^8.4.14",
|
||||||
"prettier": "^2.5.1",
|
"prettier": "^2.5.1",
|
||||||
"@wailsio/runtime": "latest"
|
"@wailsio/runtime": "latest"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^20 || ^18 || ^16",
|
"node": "^20 || ^18 || ^16",
|
||||||
"npm": ">= 6.13.4",
|
"npm": ">= 6.13.4",
|
||||||
"yarn": ">= 1.21.1"
|
"yarn": ">= 1.21.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
// https://github.com/michael-ciniawsky/postcss-load-config
|
// https://github.com/michael-ciniawsky/postcss-load-config
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
plugins: [
|
plugins: [
|
||||||
// https://github.com/postcss/autoprefixer
|
// https://github.com/postcss/autoprefixer
|
||||||
require('autoprefixer')({
|
require('autoprefixer')({
|
||||||
overrideBrowserslist: [
|
overrideBrowserslist: [
|
||||||
'last 4 Chrome versions',
|
'last 4 Chrome versions',
|
||||||
'last 4 Firefox versions',
|
'last 4 Firefox versions',
|
||||||
'last 4 Edge versions',
|
'last 4 Edge versions',
|
||||||
'last 4 Safari versions',
|
'last 4 Safari versions',
|
||||||
'last 4 Android versions',
|
'last 4 Android versions',
|
||||||
'last 4 ChromeAndroid versions',
|
'last 4 ChromeAndroid versions',
|
||||||
'last 4 FirefoxAndroid versions',
|
'last 4 FirefoxAndroid versions',
|
||||||
'last 4 iOS versions'
|
'last 4 iOS versions'
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
// https://github.com/elchininet/postcss-rtlcss
|
// https://github.com/elchininet/postcss-rtlcss
|
||||||
// If you want to support RTL css, then
|
// If you want to support RTL css, then
|
||||||
// 1. yarn/npm install postcss-rtlcss
|
// 1. yarn/npm install postcss-rtlcss
|
||||||
// 2. optionally set quasar.config.js > framework > lang to an RTL language
|
// 2. optionally set quasar.config.js > framework > lang to an RTL language
|
||||||
// 3. uncomment the following line:
|
// 3. uncomment the following line:
|
||||||
// require('postcss-rtlcss')
|
// require('postcss-rtlcss')
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,146 +1,146 @@
|
|||||||
:root {
|
:root {
|
||||||
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto",
|
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto",
|
||||||
"Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
"Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
||||||
sans-serif;
|
sans-serif;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color-scheme: light dark;
|
color-scheme: light dark;
|
||||||
color: rgba(255, 255, 255, 0.87);
|
color: rgba(255, 255, 255, 0.87);
|
||||||
background-color: rgba(27, 38, 54, 1);
|
background-color: rgba(27, 38, 54, 1);
|
||||||
font-synthesis: none;
|
font-synthesis: none;
|
||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
-webkit-text-size-adjust: 100%;
|
-webkit-text-size-adjust: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Inter";
|
font-family: "Inter";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: local(""),
|
src: local(""),
|
||||||
url("./Inter-Medium.ttf") format("truetype");
|
url("./Inter-Medium.ttf") format("truetype");
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 3em;
|
font-size: 3em;
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #646cff;
|
color: #646cff;
|
||||||
text-decoration: inherit;
|
text-decoration: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
color: #535bf2;
|
color: #535bf2;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
border: none;
|
border: none;
|
||||||
margin: 0 0 0 20px;
|
margin: 0 0 0 20px;
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.result {
|
.result {
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
place-items: center;
|
place-items: center;
|
||||||
place-content: center;
|
place-content: center;
|
||||||
min-width: 320px;
|
min-width: 320px;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 3.2em;
|
font-size: 3.2em;
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#app {
|
#app {
|
||||||
max-width: 1280px;
|
max-width: 1280px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.result {
|
.result {
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
margin: 1.5rem auto;
|
margin: 1.5rem auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
align-content: center;
|
align-content: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: rgba(255, 255, 255, 0.67);
|
color: rgba(255, 255, 255, 0.67);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: light) {
|
@media (prefers-color-scheme: light) {
|
||||||
:root {
|
:root {
|
||||||
color: #213547;
|
color: #213547;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
color: #747bff;
|
color: #747bff;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
background-color: #f9f9f9;
|
background-color: #f9f9f9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.input-box .btn:hover {
|
.input-box .btn:hover {
|
||||||
background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%);
|
background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%);
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-box .input {
|
.input-box .input {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
outline: none;
|
outline: none;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
color: black;
|
color: black;
|
||||||
background-color: rgba(240, 240, 240, 1);
|
background-color: rgba(240, 240, 240, 1);
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-box .input:hover {
|
.input-box .input:hover {
|
||||||
border: none;
|
border: none;
|
||||||
background-color: rgba(255, 255, 255, 1);
|
background-color: rgba(255, 255, 255, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.input-box .input:focus {
|
.input-box .input:focus {
|
||||||
border: none;
|
border: none;
|
||||||
background-color: rgba(255, 255, 255, 1);
|
background-color: rgba(255, 255, 255, 1);
|
||||||
}
|
}
|
||||||
@@ -1,216 +1,216 @@
|
|||||||
/* eslint-env node */
|
/* eslint-env node */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file runs in a Node context (it's NOT transpiled by Babel), so use only
|
* This file runs in a Node context (it's NOT transpiled by Babel), so use only
|
||||||
* the ES6 features that are supported by your Node version. https://node.green/
|
* the ES6 features that are supported by your Node version. https://node.green/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Configuration for your app
|
// Configuration for your app
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js
|
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js
|
||||||
|
|
||||||
|
|
||||||
const { configure } = require('quasar/wrappers');
|
const { configure } = require('quasar/wrappers');
|
||||||
|
|
||||||
|
|
||||||
module.exports = configure(function (/* ctx */) {
|
module.exports = configure(function (/* ctx */) {
|
||||||
return {
|
return {
|
||||||
eslint: {
|
eslint: {
|
||||||
// fix: true,
|
// fix: true,
|
||||||
// include: [],
|
// include: [],
|
||||||
// exclude: [],
|
// exclude: [],
|
||||||
// rawOptions: {},
|
// rawOptions: {},
|
||||||
warnings: true,
|
warnings: true,
|
||||||
errors: true
|
errors: true
|
||||||
},
|
},
|
||||||
|
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/prefetch-feature
|
// https://v2.quasar.dev/quasar-cli-vite/prefetch-feature
|
||||||
// preFetch: true,
|
// preFetch: true,
|
||||||
|
|
||||||
// app boot file (/src/boot)
|
// app boot file (/src/boot)
|
||||||
// --> boot files are part of "main.js"
|
// --> boot files are part of "main.js"
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/boot-files
|
// https://v2.quasar.dev/quasar-cli-vite/boot-files
|
||||||
boot: [
|
boot: [
|
||||||
|
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
|
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css
|
||||||
css: [
|
css: [
|
||||||
'app.scss'
|
'app.scss'
|
||||||
],
|
],
|
||||||
|
|
||||||
// https://github.com/quasarframework/quasar/tree/dev/extras
|
// https://github.com/quasarframework/quasar/tree/dev/extras
|
||||||
extras: [
|
extras: [
|
||||||
// 'ionicons-v4',
|
// 'ionicons-v4',
|
||||||
'mdi-v7',
|
'mdi-v7',
|
||||||
// 'fontawesome-v6',
|
// 'fontawesome-v6',
|
||||||
// 'eva-icons',
|
// 'eva-icons',
|
||||||
// 'themify',
|
// 'themify',
|
||||||
// 'line-awesome',
|
// 'line-awesome',
|
||||||
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
|
// 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both!
|
||||||
|
|
||||||
'roboto-font', // optional, you are not bound to it
|
'roboto-font', // optional, you are not bound to it
|
||||||
'material-icons', // optional, you are not bound to it
|
'material-icons', // optional, you are not bound to it
|
||||||
],
|
],
|
||||||
|
|
||||||
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build
|
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build
|
||||||
build: {
|
build: {
|
||||||
target: {
|
target: {
|
||||||
browser: [ 'es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1' ],
|
browser: [ 'es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1' ],
|
||||||
node: 'node20'
|
node: 'node20'
|
||||||
},
|
},
|
||||||
|
|
||||||
vueRouterMode: 'hash', // available values: 'hash', 'history'
|
vueRouterMode: 'hash', // available values: 'hash', 'history'
|
||||||
// vueRouterBase,
|
// vueRouterBase,
|
||||||
// vueDevtools,
|
// vueDevtools,
|
||||||
// vueOptionsAPI: false,
|
// vueOptionsAPI: false,
|
||||||
|
|
||||||
// rebuildCache: true, // rebuilds Vite/linter/etc cache on startup
|
// rebuildCache: true, // rebuilds Vite/linter/etc cache on startup
|
||||||
|
|
||||||
// publicPath: '/',
|
// publicPath: '/',
|
||||||
// analyze: true,
|
// analyze: true,
|
||||||
// env: {},
|
// env: {},
|
||||||
// rawDefine: {}
|
// rawDefine: {}
|
||||||
// ignorePublicFolder: true,
|
// ignorePublicFolder: true,
|
||||||
// minify: false,
|
// minify: false,
|
||||||
// polyfillModulePreload: true,
|
// polyfillModulePreload: true,
|
||||||
// distDir
|
// distDir
|
||||||
|
|
||||||
// extendViteConf (viteConf) {},
|
// extendViteConf (viteConf) {},
|
||||||
// viteVuePluginOptions: {},
|
// viteVuePluginOptions: {},
|
||||||
|
|
||||||
|
|
||||||
// vitePlugins: [
|
// vitePlugins: [
|
||||||
// [ 'package-name', { ..options.. } ]
|
// [ 'package-name', { ..options.. } ]
|
||||||
// ]
|
// ]
|
||||||
},
|
},
|
||||||
|
|
||||||
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer
|
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer
|
||||||
devServer: {
|
devServer: {
|
||||||
// https: true
|
// https: true
|
||||||
open: true, // opens browser window automatically,
|
open: true, // opens browser window automatically,
|
||||||
port: 5173
|
port: 5173
|
||||||
},
|
},
|
||||||
|
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework
|
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework
|
||||||
framework: {
|
framework: {
|
||||||
config: {},
|
config: {},
|
||||||
|
|
||||||
// iconSet: 'material-icons', // Quasar icon set
|
// iconSet: 'material-icons', // Quasar icon set
|
||||||
// lang: 'en-US', // Quasar language pack
|
// lang: 'en-US', // Quasar language pack
|
||||||
|
|
||||||
// For special cases outside of where the auto-import strategy can have an impact
|
// For special cases outside of where the auto-import strategy can have an impact
|
||||||
// (like functional components as one of the examples),
|
// (like functional components as one of the examples),
|
||||||
// you can manually specify Quasar components/directives to be available everywhere:
|
// you can manually specify Quasar components/directives to be available everywhere:
|
||||||
//
|
//
|
||||||
// components: [],
|
// components: [],
|
||||||
// directives: [],
|
// directives: [],
|
||||||
|
|
||||||
// Quasar plugins
|
// Quasar plugins
|
||||||
plugins: [
|
plugins: [
|
||||||
'Dialog'
|
'Dialog'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
// animations: 'all', // --- includes all animations
|
// animations: 'all', // --- includes all animations
|
||||||
// https://v2.quasar.dev/options/animations
|
// https://v2.quasar.dev/options/animations
|
||||||
animations: [],
|
animations: [],
|
||||||
|
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#property-sourcefiles
|
// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#property-sourcefiles
|
||||||
// sourceFiles: {
|
// sourceFiles: {
|
||||||
// rootComponent: 'src/App.vue',
|
// rootComponent: 'src/App.vue',
|
||||||
// router: 'src/router/index',
|
// router: 'src/router/index',
|
||||||
// store: 'src/store/index',
|
// store: 'src/store/index',
|
||||||
// registerServiceWorker: 'src-pwa/register-service-worker',
|
// registerServiceWorker: 'src-pwa/register-service-worker',
|
||||||
// serviceWorker: 'src-pwa/custom-service-worker',
|
// serviceWorker: 'src-pwa/custom-service-worker',
|
||||||
// pwaManifestFile: 'src-pwa/manifest.json',
|
// pwaManifestFile: 'src-pwa/manifest.json',
|
||||||
// electronMain: 'src-electron/electron-main',
|
// electronMain: 'src-electron/electron-main',
|
||||||
// electronPreload: 'src-electron/electron-preload'
|
// electronPreload: 'src-electron/electron-preload'
|
||||||
// },
|
// },
|
||||||
|
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr
|
// https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr
|
||||||
ssr: {
|
ssr: {
|
||||||
// ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name!
|
// ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name!
|
||||||
// will mess up SSR
|
// will mess up SSR
|
||||||
|
|
||||||
// extendSSRWebserverConf (esbuildConf) {},
|
// extendSSRWebserverConf (esbuildConf) {},
|
||||||
// extendPackageJson (json) {},
|
// extendPackageJson (json) {},
|
||||||
|
|
||||||
pwa: false,
|
pwa: false,
|
||||||
|
|
||||||
// manualStoreHydration: true,
|
// manualStoreHydration: true,
|
||||||
// manualPostHydrationTrigger: true,
|
// manualPostHydrationTrigger: true,
|
||||||
|
|
||||||
prodPort: 3000, // The default port that the production server should use
|
prodPort: 3000, // The default port that the production server should use
|
||||||
// (gets superseded if process.env.PORT is specified at runtime)
|
// (gets superseded if process.env.PORT is specified at runtime)
|
||||||
|
|
||||||
middlewares: [
|
middlewares: [
|
||||||
'render' // keep this as last one
|
'render' // keep this as last one
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
// https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa
|
// https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa
|
||||||
pwa: {
|
pwa: {
|
||||||
workboxMode: 'generateSW', // or 'injectManifest'
|
workboxMode: 'generateSW', // or 'injectManifest'
|
||||||
injectPwaMetaTags: true,
|
injectPwaMetaTags: true,
|
||||||
swFilename: 'sw.js',
|
swFilename: 'sw.js',
|
||||||
manifestFilename: 'manifest.json',
|
manifestFilename: 'manifest.json',
|
||||||
useCredentialsForManifestTag: false,
|
useCredentialsForManifestTag: false,
|
||||||
// useFilenameHashes: true,
|
// useFilenameHashes: true,
|
||||||
// extendGenerateSWOptions (cfg) {}
|
// extendGenerateSWOptions (cfg) {}
|
||||||
// extendInjectManifestOptions (cfg) {},
|
// extendInjectManifestOptions (cfg) {},
|
||||||
// extendManifestJson (json) {}
|
// extendManifestJson (json) {}
|
||||||
// extendPWACustomSWConf (esbuildConf) {}
|
// extendPWACustomSWConf (esbuildConf) {}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova
|
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova
|
||||||
cordova: {
|
cordova: {
|
||||||
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
|
// noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing
|
||||||
},
|
},
|
||||||
|
|
||||||
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor
|
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor
|
||||||
capacitor: {
|
capacitor: {
|
||||||
hideSplashscreen: true
|
hideSplashscreen: true
|
||||||
},
|
},
|
||||||
|
|
||||||
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron
|
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron
|
||||||
electron: {
|
electron: {
|
||||||
// extendElectronMainConf (esbuildConf)
|
// extendElectronMainConf (esbuildConf)
|
||||||
// extendElectronPreloadConf (esbuildConf)
|
// extendElectronPreloadConf (esbuildConf)
|
||||||
|
|
||||||
// specify the debugging port to use for the Electron app when running in development mode
|
// specify the debugging port to use for the Electron app when running in development mode
|
||||||
inspectPort: 5858,
|
inspectPort: 5858,
|
||||||
|
|
||||||
bundler: 'packager', // 'packager' or 'builder'
|
bundler: 'packager', // 'packager' or 'builder'
|
||||||
|
|
||||||
packager: {
|
packager: {
|
||||||
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
|
// https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options
|
||||||
|
|
||||||
// OS X / Mac App Store
|
// OS X / Mac App Store
|
||||||
// appBundleId: '',
|
// appBundleId: '',
|
||||||
// appCategoryType: '',
|
// appCategoryType: '',
|
||||||
// osxSign: '',
|
// osxSign: '',
|
||||||
// protocol: 'myapp://path',
|
// protocol: 'myapp://path',
|
||||||
|
|
||||||
// Windows only
|
// Windows only
|
||||||
// win32metadata: { ... }
|
// win32metadata: { ... }
|
||||||
},
|
},
|
||||||
|
|
||||||
builder: {
|
builder: {
|
||||||
// https://www.electron.build/configuration/configuration
|
// https://www.electron.build/configuration/configuration
|
||||||
|
|
||||||
appId: 'frontend'
|
appId: 'frontend'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex
|
// Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex
|
||||||
bex: {
|
bex: {
|
||||||
contentScripts: [
|
contentScripts: [
|
||||||
'my-content-script'
|
'my-content-script'
|
||||||
],
|
],
|
||||||
|
|
||||||
// extendBexScriptsConf (esbuildConf) {}
|
// extendBexScriptsConf (esbuildConf) {}
|
||||||
// extendBexManifestJson (json) {}
|
// extendBexManifestJson (json) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<router-view />
|
<router-view />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { defineComponent } from 'vue'
|
import { defineComponent } from 'vue'
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'App'
|
name: 'App'
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356 360">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356 360">
|
||||||
<path
|
<path
|
||||||
d="M43.4 303.4c0 3.8-2.3 6.3-7.1 6.3h-15v-22h14.4c4.3 0 6.2 2.2 6.2 5.2 0 2.6-1.5 4.4-3.4 5 2.8.4 4.9 2.5 4.9 5.5zm-8-13H24.1v6.9H35c2.1 0 4-1.3 4-3.8 0-2.2-1.3-3.1-3.7-3.1zm5.1 12.6c0-2.3-1.8-3.7-4-3.7H24.2v7.7h11.7c3.4 0 4.6-1.8 4.6-4zm36.3 4v2.7H56v-22h20.6v2.7H58.9v6.8h14.6v2.3H58.9v7.5h17.9zm23-5.8v8.5H97v-8.5l-11-13.4h3.4l8.9 11 8.8-11h3.4l-10.8 13.4zm19.1-1.8V298c0-7.9 5.2-10.7 12.7-10.7 7.5 0 13 2.8 13 10.7v1.4c0 7.9-5.5 10.8-13 10.8s-12.7-3-12.7-10.8zm22.7 0V298c0-5.7-3.9-8-10-8-6 0-9.8 2.3-9.8 8v1.4c0 5.8 3.8 8.1 9.8 8.1 6 0 10-2.3 10-8.1zm37.2-11.6v21.9h-2.9l-15.8-17.9v17.9h-2.8v-22h3l15.6 18v-18h2.9zm37.9 10.2v1.3c0 7.8-5.2 10.4-12.4 10.4H193v-22h11.2c7.2 0 12.4 2.8 12.4 10.3zm-3 0c0-5.3-3.3-7.6-9.4-7.6h-8.4V307h8.4c6 0 9.5-2 9.5-7.7V298zm50.8-7.6h-9.7v19.3h-3v-19.3h-9.7v-2.6h22.4v2.6zm34.4-2.6v21.9h-3v-10.1h-16.8v10h-2.8v-21.8h2.8v9.2H296v-9.2h2.9zm34.9 19.2v2.7h-20.7v-22h20.6v2.7H316v6.8h14.5v2.3H316v7.5h17.8zM24 340.2v7.3h13.9v2.4h-14v9.6H21v-22h20v2.7H24zm41.5 11.4h-9.8v7.9H53v-22h13.3c5.1 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6H66c3.1 0 5.3-1.5 5.3-4.7 0-3.3-2.2-4.1-5.3-4.1H55.7v8.8zm47.9 6.2H89l-2 4.3h-3.2l10.7-22.2H98l10.7 22.2h-3.2l-2-4.3zm-1-2.3l-6.3-13-6 13h12.2zm46.3-15.3v21.9H146v-17.2L135.7 358h-2.1l-10.2-15.6v17h-2.8v-21.8h3l11 16.9 11.3-17h3zm35 19.3v2.6h-20.7v-22h20.6v2.7H166v6.8h14.5v2.3H166v7.6h17.8zm47-19.3l-8.3 22h-3l-7.1-18.6-7 18.6h-3l-8.2-22h3.3L204 356l6.8-18.5h3.4L221 356l6.6-18.5h3.3zm10 11.6v-1.4c0-7.8 5.2-10.7 12.7-10.7 7.6 0 13 2.9 13 10.7v1.4c0 7.9-5.4 10.8-13 10.8-7.5 0-12.7-3-12.7-10.8zm22.8 0v-1.4c0-5.7-4-8-10-8s-9.9 2.3-9.9 8v1.4c0 5.8 3.8 8.2 9.8 8.2 6.1 0 10-2.4 10-8.2zm28.3 2.4h-9.8v7.9h-2.8v-22h13.2c5.2 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6h10.2c3 0 5.2-1.5 5.2-4.7 0-3.3-2.1-4.1-5.2-4.1h-10.2v8.8zm40.3-1.5l-6.8 5.6v6.4h-2.9v-22h2.9v12.3l15.2-12.2h3.7l-9.9 8.1 10.3 13.8h-3.6l-8.9-12z" />
|
d="M43.4 303.4c0 3.8-2.3 6.3-7.1 6.3h-15v-22h14.4c4.3 0 6.2 2.2 6.2 5.2 0 2.6-1.5 4.4-3.4 5 2.8.4 4.9 2.5 4.9 5.5zm-8-13H24.1v6.9H35c2.1 0 4-1.3 4-3.8 0-2.2-1.3-3.1-3.7-3.1zm5.1 12.6c0-2.3-1.8-3.7-4-3.7H24.2v7.7h11.7c3.4 0 4.6-1.8 4.6-4zm36.3 4v2.7H56v-22h20.6v2.7H58.9v6.8h14.6v2.3H58.9v7.5h17.9zm23-5.8v8.5H97v-8.5l-11-13.4h3.4l8.9 11 8.8-11h3.4l-10.8 13.4zm19.1-1.8V298c0-7.9 5.2-10.7 12.7-10.7 7.5 0 13 2.8 13 10.7v1.4c0 7.9-5.5 10.8-13 10.8s-12.7-3-12.7-10.8zm22.7 0V298c0-5.7-3.9-8-10-8-6 0-9.8 2.3-9.8 8v1.4c0 5.8 3.8 8.1 9.8 8.1 6 0 10-2.3 10-8.1zm37.2-11.6v21.9h-2.9l-15.8-17.9v17.9h-2.8v-22h3l15.6 18v-18h2.9zm37.9 10.2v1.3c0 7.8-5.2 10.4-12.4 10.4H193v-22h11.2c7.2 0 12.4 2.8 12.4 10.3zm-3 0c0-5.3-3.3-7.6-9.4-7.6h-8.4V307h8.4c6 0 9.5-2 9.5-7.7V298zm50.8-7.6h-9.7v19.3h-3v-19.3h-9.7v-2.6h22.4v2.6zm34.4-2.6v21.9h-3v-10.1h-16.8v10h-2.8v-21.8h2.8v9.2H296v-9.2h2.9zm34.9 19.2v2.7h-20.7v-22h20.6v2.7H316v6.8h14.5v2.3H316v7.5h17.8zM24 340.2v7.3h13.9v2.4h-14v9.6H21v-22h20v2.7H24zm41.5 11.4h-9.8v7.9H53v-22h13.3c5.1 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6H66c3.1 0 5.3-1.5 5.3-4.7 0-3.3-2.2-4.1-5.3-4.1H55.7v8.8zm47.9 6.2H89l-2 4.3h-3.2l10.7-22.2H98l10.7 22.2h-3.2l-2-4.3zm-1-2.3l-6.3-13-6 13h12.2zm46.3-15.3v21.9H146v-17.2L135.7 358h-2.1l-10.2-15.6v17h-2.8v-21.8h3l11 16.9 11.3-17h3zm35 19.3v2.6h-20.7v-22h20.6v2.7H166v6.8h14.5v2.3H166v7.6h17.8zm47-19.3l-8.3 22h-3l-7.1-18.6-7 18.6h-3l-8.2-22h3.3L204 356l6.8-18.5h3.4L221 356l6.6-18.5h3.3zm10 11.6v-1.4c0-7.8 5.2-10.7 12.7-10.7 7.6 0 13 2.9 13 10.7v1.4c0 7.9-5.4 10.8-13 10.8-7.5 0-12.7-3-12.7-10.8zm22.8 0v-1.4c0-5.7-4-8-10-8s-9.9 2.3-9.9 8v1.4c0 5.8 3.8 8.2 9.8 8.2 6.1 0 10-2.4 10-8.2zm28.3 2.4h-9.8v7.9h-2.8v-22h13.2c5.2 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6h10.2c3 0 5.2-1.5 5.2-4.7 0-3.3-2.1-4.1-5.2-4.1h-10.2v8.8zm40.3-1.5l-6.8 5.6v6.4h-2.9v-22h2.9v12.3l15.2-12.2h3.7l-9.9 8.1 10.3 13.8h-3.6l-8.9-12z" />
|
||||||
<path fill="#050A14"
|
<path fill="#050A14"
|
||||||
d="M188.4 71.7a10.4 10.4 0 01-20.8 0 10.4 10.4 0 1120.8 0zM224.2 45c-2.2-3.9-5-7.5-8.2-10.7l-12 7c-3.7-3.2-8-5.7-12.6-7.3a49.4 49.4 0 00-9.7 13.9 59 59 0 0140.1 14l7.6-4.4a57 57 0 00-5.2-12.5zM178 125.1c4.5 0 9-.6 13.4-1.7v-14a40 40 0 0012.5-7.2 47.7 47.7 0 00-7.1-15.3 59 59 0 01-32.2 27.7v8.7c4.4 1.2 8.9 1.8 13.4 1.8zM131.8 45c-2.3 4-4 8.1-5.2 12.5l12 7a40 40 0 000 14.4c5.7 1.5 11.3 2 16.9 1.5a59 59 0 01-8-41.7l-7.5-4.3c-3.2 3.2-6 6.7-8.2 10.6z" />
|
d="M188.4 71.7a10.4 10.4 0 01-20.8 0 10.4 10.4 0 1120.8 0zM224.2 45c-2.2-3.9-5-7.5-8.2-10.7l-12 7c-3.7-3.2-8-5.7-12.6-7.3a49.4 49.4 0 00-9.7 13.9 59 59 0 0140.1 14l7.6-4.4a57 57 0 00-5.2-12.5zM178 125.1c4.5 0 9-.6 13.4-1.7v-14a40 40 0 0012.5-7.2 47.7 47.7 0 00-7.1-15.3 59 59 0 01-32.2 27.7v8.7c4.4 1.2 8.9 1.8 13.4 1.8zM131.8 45c-2.3 4-4 8.1-5.2 12.5l12 7a40 40 0 000 14.4c5.7 1.5 11.3 2 16.9 1.5a59 59 0 01-8-41.7l-7.5-4.3c-3.2 3.2-6 6.7-8.2 10.6z" />
|
||||||
<path fill="#00B4FF"
|
<path fill="#00B4FF"
|
||||||
d="M224.2 98.4c2.3-3.9 4-8 5.2-12.4l-12-7a40 40 0 000-14.5c-5.7-1.5-11.3-2-16.9-1.5a59 59 0 018 41.7l7.5 4.4c3.2-3.2 6-6.8 8.2-10.7zm-92.4 0c2.2 4 5 7.5 8.2 10.7l12-7a40 40 0 0012.6 7.3c4-4.1 7.3-8.8 9.7-13.8a59 59 0 01-40-14l-7.7 4.4c1.2 4.3 3 8.5 5.2 12.4zm46.2-80c-4.5 0-9 .5-13.4 1.7V34a40 40 0 00-12.5 7.2c1.5 5.7 4 10.8 7.1 15.4a59 59 0 0132.2-27.7V20a53.3 53.3 0 00-13.4-1.8z" />
|
d="M224.2 98.4c2.3-3.9 4-8 5.2-12.4l-12-7a40 40 0 000-14.5c-5.7-1.5-11.3-2-16.9-1.5a59 59 0 018 41.7l7.5 4.4c3.2-3.2 6-6.8 8.2-10.7zm-92.4 0c2.2 4 5 7.5 8.2 10.7l12-7a40 40 0 0012.6 7.3c4-4.1 7.3-8.8 9.7-13.8a59 59 0 01-40-14l-7.7 4.4c1.2 4.3 3 8.5 5.2 12.4zm46.2-80c-4.5 0-9 .5-13.4 1.7V34a40 40 0 00-12.5 7.2c1.5 5.7 4 10.8 7.1 15.4a59 59 0 0132.2-27.7V20a53.3 53.3 0 00-13.4-1.8z" />
|
||||||
<path fill="#00B4FF"
|
<path fill="#00B4FF"
|
||||||
d="M178 9.2a62.6 62.6 0 11-.1 125.2A62.6 62.6 0 01178 9.2m0-9.2a71.7 71.7 0 100 143.5A71.7 71.7 0 00178 0z" />
|
d="M178 9.2a62.6 62.6 0 11-.1 125.2A62.6 62.6 0 01178 9.2m0-9.2a71.7 71.7 0 100 143.5A71.7 71.7 0 00178 0z" />
|
||||||
<path fill="#050A14"
|
<path fill="#050A14"
|
||||||
d="M96.6 212v4.3c-9.2-.8-15.4-5.8-15.4-17.8V180h4.6v18.4c0 8.6 4 12.6 10.8 13.5zm16-31.9v18.4c0 8.9-4.3 12.8-10.9 13.5v4.4c9.2-.7 15.5-5.6 15.5-18v-18.3h-4.7zM62.2 199v-2.2c0-12.7-8.8-17.4-21-17.4-12.1 0-20.7 4.7-20.7 17.4v2.2c0 12.8 8.6 17.6 20.7 17.6 1.5 0 3-.1 4.4-.3l11.8 6.2 2-3.3-8.2-4-6.4-3.1a32 32 0 01-3.6.2c-9.8 0-16-3.9-16-13.3v-2.2c0-9.3 6.2-13.1 16-13.1 9.9 0 16.3 3.8 16.3 13.1v2.2c0 5.3-2.1 8.7-5.6 10.8l4.8 2.4c3.4-2.8 5.5-7 5.5-13.2zM168 215.6h5.1L156 179.7h-4.8l17 36zM143 205l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.8-3.7H143zm133.7 10.7h5.2l-17.3-35.9h-4.8l17 36zm-25-10.7l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.7-3.7h-14.8zm73.8-2.5c6-1.2 9-5.4 9-11.4 0-8-4.5-10.9-12.9-10.9h-21.4v35.5h4.6v-31.3h16.5c5 0 8.5 1.4 8.5 6.7 0 5.2-3.5 7.7-8.5 7.7h-11.4v4.1h10.7l9.3 12.8h5.5l-9.9-13.2zm-117.4 9.9c-9.7 0-14.7-2.5-18.6-6.3l-2.2 3.8c5.1 5 11 6.7 21 6.7 1.6 0 3.1-.1 4.6-.3l-1.9-4h-3zm18.4-7c0-6.4-4.7-8.6-13.8-9.4l-10.1-1c-6.7-.7-9.3-2.2-9.3-5.6 0-2.5 1.4-4 4.6-5l-1.8-3.8c-4.7 1.4-7.5 4.2-7.5 8.9 0 5.2 3.4 8.7 13 9.6l11.3 1.2c6.4.6 8.9 2 8.9 5.4 0 2.7-2.1 4.7-6 5.8l1.8 3.9c5.3-1.6 8.9-4.7 8.9-10zm-20.3-21.9c7.9 0 13.3 1.8 18.1 5.7l1.8-3.9a30 30 0 00-19.6-5.9c-2 0-4 .1-5.7.3l1.9 4 3.5-.2z" />
|
d="M96.6 212v4.3c-9.2-.8-15.4-5.8-15.4-17.8V180h4.6v18.4c0 8.6 4 12.6 10.8 13.5zm16-31.9v18.4c0 8.9-4.3 12.8-10.9 13.5v4.4c9.2-.7 15.5-5.6 15.5-18v-18.3h-4.7zM62.2 199v-2.2c0-12.7-8.8-17.4-21-17.4-12.1 0-20.7 4.7-20.7 17.4v2.2c0 12.8 8.6 17.6 20.7 17.6 1.5 0 3-.1 4.4-.3l11.8 6.2 2-3.3-8.2-4-6.4-3.1a32 32 0 01-3.6.2c-9.8 0-16-3.9-16-13.3v-2.2c0-9.3 6.2-13.1 16-13.1 9.9 0 16.3 3.8 16.3 13.1v2.2c0 5.3-2.1 8.7-5.6 10.8l4.8 2.4c3.4-2.8 5.5-7 5.5-13.2zM168 215.6h5.1L156 179.7h-4.8l17 36zM143 205l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.8-3.7H143zm133.7 10.7h5.2l-17.3-35.9h-4.8l17 36zm-25-10.7l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.7-3.7h-14.8zm73.8-2.5c6-1.2 9-5.4 9-11.4 0-8-4.5-10.9-12.9-10.9h-21.4v35.5h4.6v-31.3h16.5c5 0 8.5 1.4 8.5 6.7 0 5.2-3.5 7.7-8.5 7.7h-11.4v4.1h10.7l9.3 12.8h5.5l-9.9-13.2zm-117.4 9.9c-9.7 0-14.7-2.5-18.6-6.3l-2.2 3.8c5.1 5 11 6.7 21 6.7 1.6 0 3.1-.1 4.6-.3l-1.9-4h-3zm18.4-7c0-6.4-4.7-8.6-13.8-9.4l-10.1-1c-6.7-.7-9.3-2.2-9.3-5.6 0-2.5 1.4-4 4.6-5l-1.8-3.8c-4.7 1.4-7.5 4.2-7.5 8.9 0 5.2 3.4 8.7 13 9.6l11.3 1.2c6.4.6 8.9 2 8.9 5.4 0 2.7-2.1 4.7-6 5.8l1.8 3.9c5.3-1.6 8.9-4.7 8.9-10zm-20.3-21.9c7.9 0 13.3 1.8 18.1 5.7l1.8-3.9a30 30 0 00-19.6-5.9c-2 0-4 .1-5.7.3l1.9 4 3.5-.2z" />
|
||||||
<path fill="#00B4FF"
|
<path fill="#00B4FF"
|
||||||
d="M.5 251.9c29.6-.5 59.2-.8 88.8-1l88.7-.3 88.7.3 44.4.4 44.4.6-44.4.6-44.4.4-88.7.3-88.7-.3a7981 7981 0 01-88.8-1z" />
|
d="M.5 251.9c29.6-.5 59.2-.8 88.8-1l88.7-.3 88.7.3 44.4.4 44.4.6-44.4.6-44.4.4-88.7.3-88.7-.3a7981 7981 0 01-88.8-1z" />
|
||||||
<path fill="none" d="M-565.2 324H-252v15.8h-313.2z" />
|
<path fill="none" d="M-565.2 324H-252v15.8h-313.2z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
@@ -1,36 +1,36 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container d-flex justify-content-center align-items-center" style="height: 100vh;">
|
<div class="container d-flex justify-content-center align-items-center" style="height: 100vh;">
|
||||||
<form @submit.prevent="submitForm">
|
<form @submit.prevent="submitForm">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<button type="button" class="btn btn-primary" @click="openFileDialog">
|
<button type="button" class="btn btn-primary" @click="openFileDialog">
|
||||||
<b-icon-file-earmark-excel />
|
<b-icon-file-earmark-excel />
|
||||||
Dosya Seç
|
Dosya Seç
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {ClaimFile} from "../../bindings/main/BotService.js";
|
import {ClaimFile} from "../../bindings/main/BotService.js";
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
methods: {
|
||||||
openFileDialog() {
|
openFileDialog() {
|
||||||
ClaimFile().then((resultValue) => {
|
ClaimFile().then((resultValue) => {
|
||||||
let value = resultValue;
|
let value = resultValue;
|
||||||
if(value != '')
|
if(value != '')
|
||||||
{
|
{
|
||||||
alert("Dosya Seçildi")
|
alert("Dosya Seçildi")
|
||||||
}
|
}
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
alert("Dosya Seçilemedi")
|
alert("Dosya Seçilemedi")
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
/* Add custom styles here if needed */
|
/* Add custom styles here if needed */
|
||||||
</style>
|
</style>
|
||||||
@@ -1,78 +1,78 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="login">
|
<div class="login">
|
||||||
<h2 class="mb-4">Luca Girişi</h2>
|
<h2 class="mb-4">Luca Girişi</h2>
|
||||||
<form @submit.prevent="login">
|
<form @submit.prevent="login">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="username">Kullanıcı Adı:</label>
|
<label for="username">Kullanıcı Adı:</label>
|
||||||
<input type="text" id="username" class="form-control" v-model="username" required>
|
<input type="text" id="username" class="form-control" v-model="username" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="password">Şifre:</label>
|
<label for="password">Şifre:</label>
|
||||||
<input type="password" id="password" class="form-control" v-model="password" required>
|
<input type="password" id="password" class="form-control" v-model="password" required>
|
||||||
</div>
|
</div>
|
||||||
<button style="margin-top: 15px;" type="submit" class="btn btn-primary">Login</button>
|
<button style="margin-top: 15px;" type="submit" class="btn btn-primary">Login</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {Login} from "../../bindings/main/LoginService.js";
|
import {Login} from "../../bindings/main/LoginService.js";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
username: '',
|
username: '',
|
||||||
password: ''
|
password: ''
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
login() {
|
login() {
|
||||||
let that = this
|
let that = this
|
||||||
Login(this.username, this.password).then((resultValue) => {
|
Login(this.username, this.password).then((resultValue) => {
|
||||||
let value = resultValue;
|
let value = resultValue;
|
||||||
console.log("entered")
|
console.log("entered")
|
||||||
if(value.LoggedIn)
|
if(value.LoggedIn)
|
||||||
{
|
{
|
||||||
that.$router.push({ name: 'Dashboard' });
|
that.$router.push({ name: 'Dashboard' });
|
||||||
}
|
}
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<!--
|
<!--
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import {Login} from "../../bindings/main/LoginService";
|
import {Login} from "../../bindings/main/LoginService";
|
||||||
import {Events} from "@wailsio/runtime";
|
import {Events} from "@wailsio/runtime";
|
||||||
|
|
||||||
const name = ref('')
|
const name = ref('')
|
||||||
const result = ref('Please enter your name below 👇')
|
const result = ref('Please enter your name below 👇')
|
||||||
const time = ref('Listening for Time event...')
|
const time = ref('Listening for Time event...')
|
||||||
|
|
||||||
const doLogin = () => {
|
const doLogin = () => {
|
||||||
let localName = name.value;
|
let localName = name.value;
|
||||||
if (!localName) {
|
if (!localName) {
|
||||||
localName = 'anonymous';
|
localName = 'anonymous';
|
||||||
}
|
}
|
||||||
Login(localName).then((resultValue) => {
|
Login(localName).then((resultValue) => {
|
||||||
result.value = resultValue;
|
result.value = resultValue;
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
Events.On('time', (timeValue) => {
|
Events.On('time', (timeValue) => {
|
||||||
time.value = timeValue.data;
|
time.value = timeValue.data;
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
msg: String,
|
msg: String,
|
||||||
})
|
})
|
||||||
|
|
||||||
</script> -->
|
</script> -->
|
||||||
|
|||||||
@@ -1,53 +1,53 @@
|
|||||||
<template>
|
<template>
|
||||||
<q-dialog ref="dialogRef" persistent @hide="onDialogHide">
|
<q-dialog ref="dialogRef" persistent @hide="onDialogHide">
|
||||||
<q-card style="width: 600px;">
|
<q-card style="width: 600px;">
|
||||||
<q-card-section class="bg-purple text-white">
|
<q-card-section class="bg-purple text-white">
|
||||||
<span class="text-h6 text-weight-bolder">Şirket Ekleme</span>
|
<span class="text-h6 text-weight-bolder">Şirket Ekleme</span>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<q-input v-model="ld.name" label="Şirket Adı"/>
|
<q-input v-model="ld.name" label="Şirket Adı"/>
|
||||||
<q-input v-model="ld.memberNumber" label="Üye No"/>
|
<q-input v-model="ld.memberNumber" label="Üye No"/>
|
||||||
<q-input v-model="ld.username" label="Kullanıcı Adı"/>
|
<q-input v-model="ld.username" label="Kullanıcı Adı"/>
|
||||||
<q-input v-model="ld.password" label="Parola"/>
|
<q-input v-model="ld.password" label="Parola"/>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<q-card-actions align="right">
|
<q-card-actions align="right">
|
||||||
<q-btn label="İptal"
|
<q-btn label="İptal"
|
||||||
icon="cancel"
|
icon="cancel"
|
||||||
no-caps outline
|
no-caps outline
|
||||||
@click="onDialogCancel"
|
@click="onDialogCancel"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<q-btn label="Kaydet" no-caps outline color="positive"
|
<q-btn label="Kaydet" no-caps outline color="positive"
|
||||||
icon="check"
|
icon="check"
|
||||||
@click="onDialogOK(toRaw(ld))"/>
|
@click="onDialogOK(toRaw(ld))"/>
|
||||||
</q-card-actions>
|
</q-card-actions>
|
||||||
</q-card>
|
</q-card>
|
||||||
</q-dialog>
|
</q-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useDialogPluginComponent } from 'quasar'
|
import { useDialogPluginComponent } from 'quasar'
|
||||||
import { reactive, toRaw } from 'vue'
|
import { reactive, toRaw } from 'vue'
|
||||||
|
|
||||||
defineEmits([
|
defineEmits([
|
||||||
// REQUIRED; need to specify some events that your
|
// REQUIRED; need to specify some events that your
|
||||||
// component will emit through useDialogPluginComponent()
|
// component will emit through useDialogPluginComponent()
|
||||||
...useDialogPluginComponent.emits,
|
...useDialogPluginComponent.emits,
|
||||||
])
|
])
|
||||||
|
|
||||||
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
|
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
|
||||||
|
|
||||||
const ld = reactive({
|
const ld = reactive({
|
||||||
name: '',
|
name: '',
|
||||||
memberNumber: '',
|
memberNumber: '',
|
||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
61
app/frontend/src/components/dlg/EditCompany.vue
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<template>
|
||||||
|
<q-dialog ref="dialogRef" persistent @hide="onDialogHide">
|
||||||
|
<q-card style="width: 600px;">
|
||||||
|
<q-card-section class="bg-purple text-white">
|
||||||
|
<p>Şirket Adı: {{ props.name }}</p>
|
||||||
|
<!-- <span class="text-h6 text-weight-bolder">{{props.name}}</span> -->
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section>
|
||||||
|
<q-input v-model="ld.name" label="Şirket Adı"/>
|
||||||
|
<q-input v-model="ld.memberNumber" label="Üye No"/>
|
||||||
|
<q-input v-model="ld.userName" label="Kullanıcı Adı"/>
|
||||||
|
<q-input v-model="ld.password" label="Parola"/>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-actions align="right">
|
||||||
|
<q-btn label="İptal"
|
||||||
|
icon="cancel"
|
||||||
|
no-caps outline
|
||||||
|
@click="onDialogCancel"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<q-btn label="Kaydet" no-caps outline color="positive"
|
||||||
|
icon="check"
|
||||||
|
@click="onDialogOK(toRaw(ld))"/>
|
||||||
|
</q-card-actions>
|
||||||
|
</q-card>
|
||||||
|
|
||||||
|
</q-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useDialogPluginComponent } from 'quasar'
|
||||||
|
import { reactive, toRaw ,defineProps } from 'vue'
|
||||||
|
|
||||||
|
defineEmits([
|
||||||
|
// REQUIRED; need to specify some events that your
|
||||||
|
// component will emit through useDialogPluginComponent()
|
||||||
|
...useDialogPluginComponent.emits,
|
||||||
|
])
|
||||||
|
|
||||||
|
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
id: Number,
|
||||||
|
name: String,
|
||||||
|
memberNumber: Number,
|
||||||
|
userName: String,
|
||||||
|
password: String
|
||||||
|
})
|
||||||
|
const ld = reactive({
|
||||||
|
id : props.id || 0,
|
||||||
|
name: props.name || '',
|
||||||
|
memberNumber: props.memberNumber || 0,
|
||||||
|
userName: props.userName || '',
|
||||||
|
password: props.password || '',
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1 +1 @@
|
|||||||
// app global css in SCSS form
|
// app global css in SCSS form
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
// Quasar SCSS (& Sass) Variables
|
// Quasar SCSS (& Sass) Variables
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// To customize the look and feel of this app, you can override
|
// To customize the look and feel of this app, you can override
|
||||||
// the Sass/SCSS variables found in Quasar's source Sass/SCSS files.
|
// the Sass/SCSS variables found in Quasar's source Sass/SCSS files.
|
||||||
|
|
||||||
// Check documentation for full list of Quasar variables
|
// Check documentation for full list of Quasar variables
|
||||||
|
|
||||||
// Your own variables (that are declared here) and Quasar's own
|
// Your own variables (that are declared here) and Quasar's own
|
||||||
// ones will be available out of the box in your .vue/.scss/.sass files
|
// ones will be available out of the box in your .vue/.scss/.sass files
|
||||||
|
|
||||||
// It's highly recommended to change the default colors
|
// It's highly recommended to change the default colors
|
||||||
// to match your app's branding.
|
// to match your app's branding.
|
||||||
// Tip: Use the "Theme Builder" on Quasar's documentation website.
|
// Tip: Use the "Theme Builder" on Quasar's documentation website.
|
||||||
|
|
||||||
$primary : #1976D2;
|
$primary : #1976D2;
|
||||||
$secondary : #26A69A;
|
$secondary : #26A69A;
|
||||||
$accent : #9C27B0;
|
$accent : #9C27B0;
|
||||||
|
|
||||||
$dark : #1D1D1D;
|
$dark : #1D1D1D;
|
||||||
$dark-page : #121212;
|
$dark-page : #121212;
|
||||||
|
|
||||||
$positive : #21BA45;
|
$positive : #21BA45;
|
||||||
$negative : #C10015;
|
$negative : #C10015;
|
||||||
$info : #31CCEC;
|
$info : #31CCEC;
|
||||||
$warning : #F2C037;
|
$warning : #F2C037;
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
<template>
|
<template>
|
||||||
<q-layout view="lHh Lpr lFf">
|
<q-layout view="lHh Lpr lFf">
|
||||||
<q-header elevated style="margin-top: 40px;">
|
<q-header elevated style="margin-top: 40px;">
|
||||||
<q-toolbar>
|
<q-toolbar>
|
||||||
<q-toolbar-title>
|
<q-toolbar-title>
|
||||||
Bordro Robotu
|
Bordro Robotu
|
||||||
</q-toolbar-title>
|
</q-toolbar-title>
|
||||||
|
|
||||||
<q-space/>
|
<q-space/>
|
||||||
|
|
||||||
</q-toolbar>
|
</q-toolbar>
|
||||||
</q-header>
|
</q-header>
|
||||||
|
|
||||||
|
|
||||||
<q-page-container style="margin-top: 40px;">
|
<q-page-container style="margin-top: 40px;">
|
||||||
<router-view/>
|
<router-view/>
|
||||||
</q-page-container>
|
</q-page-container>
|
||||||
</q-layout>
|
</q-layout>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.header-input .q-field .q-field__control-container .q-field__native, .q-field__label {
|
.header-input .q-field .q-field__control-container .q-field__native, .q-field__label {
|
||||||
color: white !important;
|
color: white !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,38 +1,38 @@
|
|||||||
import { createApp } from 'vue';
|
import { createApp } from 'vue';
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
import { createRouter, createWebHistory } from 'vue-router'; // Import Vue Router
|
import { createRouter, createWebHistory } from 'vue-router'; // Import Vue Router
|
||||||
import 'bootstrap/dist/css/bootstrap.min.css';
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||||
import { BootstrapIconsPlugin } from "bootstrap-icons-vue";
|
import { BootstrapIconsPlugin } from "bootstrap-icons-vue";
|
||||||
|
|
||||||
// Import components for routing
|
// Import components for routing
|
||||||
import LoginPage from './components/LoginPage.vue';
|
import LoginPage from './components/LoginPage.vue';
|
||||||
import Dashboard from './components/Dashboard.vue'; // Assuming you have a Dashboard view
|
import Dashboard from './components/Dashboard.vue'; // Assuming you have a Dashboard view
|
||||||
|
|
||||||
// Define routes
|
// Define routes
|
||||||
const routes = [
|
const routes = [
|
||||||
{ path: '/Dashboard',
|
{ path: '/Dashboard',
|
||||||
name: 'Dashboard',
|
name: 'Dashboard',
|
||||||
components : {
|
components : {
|
||||||
default : Dashboard
|
default : Dashboard
|
||||||
}
|
}
|
||||||
}, // Route to Dashboard
|
}, // Route to Dashboard
|
||||||
{ path: '/',
|
{ path: '/',
|
||||||
name: 'LoginPage',
|
name: 'LoginPage',
|
||||||
components : {
|
components : {
|
||||||
default : LoginPage
|
default : LoginPage
|
||||||
}
|
}
|
||||||
}, // Route to Login
|
}, // Route to Login
|
||||||
// You can define more routes here
|
// You can define more routes here
|
||||||
];
|
];
|
||||||
|
|
||||||
// Create router instance
|
// Create router instance
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHistory(process.env.BASE_URL),
|
history: createWebHistory(process.env.BASE_URL),
|
||||||
routes,
|
routes,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create Vue app and use router
|
// Create Vue app and use router
|
||||||
const app = createApp(App);
|
const app = createApp(App);
|
||||||
app.use(BootstrapIconsPlugin);
|
app.use(BootstrapIconsPlugin);
|
||||||
app.use(router);
|
app.use(router);
|
||||||
app.mount('#app');
|
app.mount('#app');
|
||||||
@@ -1,31 +1,31 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="fullscreen bg-blue text-white text-center q-pa-md flex flex-center">
|
<div class="fullscreen bg-blue text-white text-center q-pa-md flex flex-center">
|
||||||
<div>
|
<div>
|
||||||
<div style="font-size: 30vh">
|
<div style="font-size: 30vh">
|
||||||
404
|
404
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-h2" style="opacity:.4">
|
<div class="text-h2" style="opacity:.4">
|
||||||
Oops. Nothing here...
|
Oops. Nothing here...
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<q-btn
|
<q-btn
|
||||||
class="q-mt-xl"
|
class="q-mt-xl"
|
||||||
color="white"
|
color="white"
|
||||||
text-color="blue"
|
text-color="blue"
|
||||||
unelevated
|
unelevated
|
||||||
to="/"
|
to="/"
|
||||||
label="Go Home"
|
label="Go Home"
|
||||||
no-caps
|
no-caps
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { defineComponent } from 'vue'
|
import { defineComponent } from 'vue'
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'ErrorNotFound'
|
name: 'ErrorNotFound'
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,131 +1,202 @@
|
|||||||
<template>
|
<template>
|
||||||
<q-page padding>
|
<q-page padding>
|
||||||
<q-card>
|
<q-card>
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<q-select v-model="ld.companyID"
|
<q-select v-model="ld.companyID"
|
||||||
label="Şirket"
|
label="Şirket"
|
||||||
option-label="Name"
|
option-label="Name"
|
||||||
option-value="Name"
|
option-value="Id"
|
||||||
:options="ld.companies"
|
:options="ld.companies"
|
||||||
map-options
|
map-options
|
||||||
emit-value
|
emit-value
|
||||||
>
|
>
|
||||||
<template v-slot:after>
|
<template v-slot:after>
|
||||||
<q-btn
|
<q-btn
|
||||||
label="Yeni Şirket Ekle"
|
label="Düzenle"
|
||||||
color="primary"
|
color="primary"
|
||||||
@click="createCompany"
|
@click="editCompany"
|
||||||
no-caps
|
no-caps
|
||||||
/>
|
/>
|
||||||
</template>
|
<q-btn
|
||||||
</q-select>
|
label="Yeni Şirket Ekle"
|
||||||
</div>
|
color="primary"
|
||||||
</div>
|
@click="createCompany"
|
||||||
</q-card-section>
|
no-caps
|
||||||
|
/>
|
||||||
<q-card-section>
|
</template>
|
||||||
<div class="row q-col-gutter-sm items-center">
|
</q-select>
|
||||||
<div class="col-shrink">
|
</div>
|
||||||
<q-btn label="Excel Yükle"
|
</div>
|
||||||
@click="upload"
|
</q-card-section>
|
||||||
no-caps
|
|
||||||
color="secondary"
|
<q-card-section>
|
||||||
/>
|
<div class="row q-col-gutter-sm items-center">
|
||||||
</div>
|
<div class="col-shrink">
|
||||||
<div class="col-11 text-right">
|
<q-btn label="Excel Yükle"
|
||||||
{{ ld.xlsFile }}
|
@click="upload"
|
||||||
</div>
|
no-caps
|
||||||
<div class="col-6">
|
color="secondary"
|
||||||
<q-select v-model="ld.year" :options="[2024, 2025, 2026, 2027, 2028]"
|
/>
|
||||||
label="Aktarım Yıl"
|
<q-checkbox
|
||||||
/>
|
label="Tarayıcı Görünmesin"
|
||||||
</div>
|
v-model="ld.right"
|
||||||
<div class="col-6">
|
style="font-size : 15px"
|
||||||
<q-select v-model="ld.month" :options="[1,2,3,4,5,6,7,8,9,10,11,12]"
|
/>
|
||||||
label="Aktarım Ay"
|
</div>
|
||||||
/>
|
<div class="col-11 text-right">
|
||||||
</div>
|
{{ ld.xlsFile }}
|
||||||
<div class="col-12">
|
</div>
|
||||||
<q-btn
|
<div class="col-6">
|
||||||
no-caps
|
<q-select v-model="ld.year" :options="[2024, 2025, 2026, 2027, 2028]"
|
||||||
label="Aktarıma Başla"
|
label="Aktarım Yıl"
|
||||||
color="warning"
|
/>
|
||||||
class="full-width"
|
</div>
|
||||||
@click="doRpa"
|
<div class="col-6">
|
||||||
:disable="!ld.xlsFile || !ld.companyID"
|
<q-select v-model="ld.month" :options="[1,2,3,4,5,6,7,8,9,10,11,12]"
|
||||||
/>
|
label="Aktarım Ay"
|
||||||
</div>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
<div class="col-12">
|
||||||
|
<q-btn
|
||||||
<q-card-section>
|
no-caps
|
||||||
<div style="max-height: 200px; overflow: scroll; border: 1px gray solid;" class="q-pa-xs">
|
label="Aktarıma Başla"
|
||||||
<span v-for="(ln, ndx) in ld.logProcess" :key="ndx">
|
color="warning"
|
||||||
{{ ndx }} {{ ln }}
|
class="full-width"
|
||||||
</span>
|
@click="doRpa"
|
||||||
</div>
|
:disable="!ld.xlsFile || !ld.companyID"
|
||||||
</q-card-section>
|
/>
|
||||||
</q-card>
|
</div>
|
||||||
|
</div>
|
||||||
</q-page>
|
</q-card-section>
|
||||||
</template>
|
|
||||||
|
<q-card-section>
|
||||||
<script setup>
|
<!-- <q-card>
|
||||||
import { onMounted, reactive } from 'vue'
|
<q-tabs
|
||||||
import Company from 'components/dlg/Company.vue'
|
v-model="tab"
|
||||||
import { useQuasar } from 'quasar'
|
dense
|
||||||
import { Companies, CreateCompany, Rpa, UploadExcel } from 'app/bindings/lib/srv/Srv'
|
class="text-grey"
|
||||||
import * as wails from '@wailsio/runtime'
|
active-color="primary"
|
||||||
|
indicator-color="primary"
|
||||||
const $q = useQuasar()
|
align="justify"
|
||||||
|
narrow-indicator
|
||||||
const ld = reactive({
|
>
|
||||||
companyID: null,
|
<q-tab name="mails" label="Mails"></q-tab>
|
||||||
companies: [],
|
<q-tab name="alarms" label="Alarms"></q-tab>
|
||||||
xlsFile: '',
|
<q-tab name="movies" label="Movies"></q-tab>
|
||||||
logProcess: [],
|
</q-tabs>
|
||||||
year: 2024,
|
|
||||||
month: 1,
|
<q-separator></q-separator>
|
||||||
})
|
|
||||||
|
<q-tab-panels v-model="tab" animated>
|
||||||
onMounted(() => {
|
<q-tab-panel name="mails">
|
||||||
getCompanies()
|
<div class="text-h6"></div>
|
||||||
|
Lorem ipsum dolor sit amet consectetur adipisicing elit.
|
||||||
wails.Events.On('logProcess', function (ev) {
|
</q-tab-panel>
|
||||||
ld.logProcess.push(ev.data)
|
|
||||||
})
|
<q-tab-panel name="alarms">
|
||||||
})
|
<div class="text-h6">Alarms</div>
|
||||||
|
Lorem ipsum dolor sit amet consectetur adipisicing elit.
|
||||||
const createCompany = function () {
|
</q-tab-panel>
|
||||||
$q.dialog({
|
|
||||||
component: Company,
|
<q-tab-panel name="movies">
|
||||||
parent: this,
|
<div class="text-h6">Movies</div>
|
||||||
// ----------------------
|
Lorem ipsum dolor sit amet consectetur adipisicing elit.
|
||||||
// props that are passed to component instance
|
</q-tab-panel>
|
||||||
}).onOk(data => {
|
</q-tab-panels>
|
||||||
CreateCompany(data.name, data.memberNumber, data.username, data.password).then(()=>{
|
</q-card> -->
|
||||||
getCompanies()
|
<div style="max-height: 200px; overflow: scroll; border: 1px gray solid; display: grid;" class="q-pa-xs">
|
||||||
})
|
<span v-for="(ln, ndx) in ld.logProcess" :key="ndx">
|
||||||
})
|
{{ ndx }} {{ ln }}
|
||||||
}
|
</span>
|
||||||
|
</div>
|
||||||
const getCompanies = function () {
|
</q-card-section>
|
||||||
ld.companies.splice(0)
|
</q-card>
|
||||||
Companies().then(res => {
|
|
||||||
ld.companies.push(...res)
|
</q-page>
|
||||||
})
|
</template>
|
||||||
}
|
|
||||||
|
<script setup>
|
||||||
const upload = function () {
|
import { onMounted, reactive,ref } from 'vue'
|
||||||
UploadExcel().then(res => {
|
import Company from 'components/dlg/Company.vue'
|
||||||
ld.xlsFile = res
|
import EditCompanyPage from 'components/dlg/EditCompany.vue'
|
||||||
})
|
import { useQuasar } from 'quasar'
|
||||||
}
|
import { Companies, CreateCompany, Rpa, UploadExcel ,EditCompany} from 'app/bindings/lib/srv/Srv'
|
||||||
|
import * as wails from '@wailsio/runtime'
|
||||||
const doRpa = function () {
|
|
||||||
Rpa(ld.companyID, ld.month, ld.year).catch(err => console.log(err))
|
const $q = useQuasar()
|
||||||
}
|
|
||||||
|
const ld = reactive({
|
||||||
</script>
|
companyID: null,
|
||||||
|
companies: [],
|
||||||
|
xlsFile: '',
|
||||||
|
logProcess: [],
|
||||||
|
year: 2024,
|
||||||
|
month: 1,
|
||||||
|
right : true
|
||||||
|
})
|
||||||
|
// let tab = ref('mails')
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getCompanies()
|
||||||
|
|
||||||
|
wails.Events.On('logProcess', function (ev) {
|
||||||
|
ld.logProcess.push(ev.data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const editCompany = function () {
|
||||||
|
const selectedCompanyID = ld.companyID;
|
||||||
|
const selectedCompany = ld.companies.find(company => company.Id === selectedCompanyID);
|
||||||
|
$q.dialog({
|
||||||
|
component: EditCompanyPage,
|
||||||
|
parent: this,
|
||||||
|
componentProps: {
|
||||||
|
id : parseInt(selectedCompany.Id),
|
||||||
|
name: selectedCompany.Name,
|
||||||
|
memberNumber: selectedCompany.MemberNumber,
|
||||||
|
userName : selectedCompany.Username,
|
||||||
|
password : selectedCompany.Password,
|
||||||
|
},
|
||||||
|
// ----------------------
|
||||||
|
// props that are passed to component instance
|
||||||
|
}).onOk(data => {
|
||||||
|
EditCompany(data.id, data.name, data.memberNumber, data.userName, data.password).then(()=>{
|
||||||
|
getCompanies()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const createCompany = function () {
|
||||||
|
$q.dialog({
|
||||||
|
component: Company,
|
||||||
|
parent: this,
|
||||||
|
// ----------------------
|
||||||
|
// props that are passed to component instance
|
||||||
|
}).onOk(data => {
|
||||||
|
CreateCompany(data.name, data.memberNumber, data.username, data.password).then(()=>{
|
||||||
|
getCompanies()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getCompanies = function () {
|
||||||
|
ld.companies.splice(0)
|
||||||
|
Companies().then(res => {
|
||||||
|
ld.companies.push(...res)
|
||||||
|
console.log(ld.companies)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const upload = function () {
|
||||||
|
UploadExcel().then(res => {
|
||||||
|
ld.xlsFile = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const doRpa = function () {
|
||||||
|
ld.logProcess = []
|
||||||
|
Rpa(ld.companyID, ld.month, ld.year,ld.right).catch(err => console.log(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|||||||
@@ -1,39 +1,39 @@
|
|||||||
<template>
|
<template>
|
||||||
<q-page padding>
|
<q-page padding>
|
||||||
<q-input v-model="ld.name" label='İsim'/>
|
<q-input v-model="ld.name" label='İsim'/>
|
||||||
<q-btn label="Selamla" @click="doGreet" />
|
<q-btn label="Selamla" @click="doGreet" />
|
||||||
{{ld.result}}
|
{{ld.result}}
|
||||||
</q-page>
|
</q-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, reactive } from 'vue'
|
import { onMounted, reactive } from 'vue'
|
||||||
// import {Events} from "@wailsio/runtime";
|
// import {Events} from "@wailsio/runtime";
|
||||||
|
|
||||||
const ld = reactive({
|
const ld = reactive({
|
||||||
name: '',
|
name: '',
|
||||||
result: '',
|
result: '',
|
||||||
time: ''
|
time: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
Events.On('time', (timeValue) => {
|
Events.On('time', (timeValue) => {
|
||||||
console.log(timeValue)
|
console.log(timeValue)
|
||||||
ld.time = timeValue.data;
|
ld.time = timeValue.data;
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const doGreet = () => {
|
const doGreet = () => {
|
||||||
let localName = ld.name;
|
let localName = ld.name;
|
||||||
if (!localName) {
|
if (!localName) {
|
||||||
localName = 'anonymous';
|
localName = 'anonymous';
|
||||||
}
|
}
|
||||||
Greet(localName).then((resultValue) => {
|
Greet(localName).then((resultValue) => {
|
||||||
ld.result = resultValue;
|
ld.result = resultValue;
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
import { route } from 'quasar/wrappers'
|
import { route } from 'quasar/wrappers'
|
||||||
import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router'
|
import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router'
|
||||||
import routes from './routes'
|
import routes from './routes'
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If not building with SSR mode, you can
|
* If not building with SSR mode, you can
|
||||||
* directly export the Router instantiation;
|
* directly export the Router instantiation;
|
||||||
*
|
*
|
||||||
* The function below can be async too; either use
|
* The function below can be async too; either use
|
||||||
* async/await or return a Promise which resolves
|
* async/await or return a Promise which resolves
|
||||||
* with the Router instance.
|
* with the Router instance.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default route(function (/* { store, ssrContext } */) {
|
export default route(function (/* { store, ssrContext } */) {
|
||||||
const createHistory = process.env.SERVER
|
const createHistory = process.env.SERVER
|
||||||
? createMemoryHistory
|
? createMemoryHistory
|
||||||
: (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory)
|
: (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory)
|
||||||
|
|
||||||
const Router = createRouter({
|
const Router = createRouter({
|
||||||
scrollBehavior: () => ({ left: 0, top: 0 }),
|
scrollBehavior: () => ({ left: 0, top: 0 }),
|
||||||
routes,
|
routes,
|
||||||
|
|
||||||
// Leave this as is and make changes in quasar.conf.js instead!
|
// Leave this as is and make changes in quasar.conf.js instead!
|
||||||
// quasar.conf.js -> build -> vueRouterMode
|
// quasar.conf.js -> build -> vueRouterMode
|
||||||
// quasar.conf.js -> build -> publicPath
|
// quasar.conf.js -> build -> publicPath
|
||||||
history: createHistory(process.env.VUE_ROUTER_BASE)
|
history: createHistory(process.env.VUE_ROUTER_BASE)
|
||||||
})
|
})
|
||||||
|
|
||||||
return Router
|
return Router
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
const routes = [
|
const routes = [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
component: () => import('layouts/MainLayout.vue'),
|
component: () => import('layouts/MainLayout.vue'),
|
||||||
children: [
|
children: [
|
||||||
{ path: '', component: () => import('pages/IndexPage.vue') },
|
{ path: '', component: () => import('pages/IndexPage.vue') },
|
||||||
{ path: '/page2', component: () => import('pages/page2.vue') },
|
{ path: '/page2', component: () => import('pages/page2.vue') },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
// Always leave this as last one,
|
// Always leave this as last one,
|
||||||
// but you can also remove it
|
// but you can also remove it
|
||||||
{
|
{
|
||||||
path: '/:catchAll(.*)*',
|
path: '/:catchAll(.*)*',
|
||||||
component: () => import('pages/ErrorNotFound.vue')
|
component: () => import('pages/ErrorNotFound.vue')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
export default routes
|
export default routes
|
||||||
|
|||||||
3183
app/frontend/yarn.lock
Normal file
48
app/go.mod
@@ -5,15 +5,33 @@ go 1.22
|
|||||||
toolchain go1.22.1
|
toolchain go1.22.1
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
cloud.google.com/go/vision v1.2.0
|
||||||
|
github.com/go-rod/rod v0.114.8
|
||||||
github.com/jmoiron/sqlx v1.3.5
|
github.com/jmoiron/sqlx v1.3.5
|
||||||
|
github.com/shopspring/decimal v1.3.1
|
||||||
github.com/wailsapp/wails/v3 v3.0.0-alpha.0
|
github.com/wailsapp/wails/v3 v3.0.0-alpha.0
|
||||||
github.com/xuri/excelize/v2 v2.8.1
|
github.com/xuri/excelize/v2 v2.8.1
|
||||||
|
google.golang.org/api v0.172.0
|
||||||
modernc.org/sqlite v1.29.5
|
modernc.org/sqlite v1.29.5
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
cloud.google.com/go v0.112.0 // indirect
|
||||||
|
cloud.google.com/go/compute v1.23.4 // indirect
|
||||||
|
cloud.google.com/go/compute/metadata v0.2.3 // indirect
|
||||||
|
cloud.google.com/go/longrunning v0.5.4 // indirect
|
||||||
|
cloud.google.com/go/vision/v2 v2.7.5 // indirect
|
||||||
|
github.com/carlmjohnson/requests v0.24.3
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
|
github.com/go-logr/logr v1.4.1 // indirect
|
||||||
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
|
github.com/google/s2a-go v0.1.7 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.3 // indirect
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
|
||||||
github.com/imdario/mergo v0.3.12 // indirect
|
github.com/imdario/mergo v0.3.12 // indirect
|
||||||
github.com/leaanthony/slicer v1.5.0 // indirect
|
github.com/leaanthony/slicer v1.5.0 // indirect
|
||||||
@@ -27,10 +45,30 @@ require (
|
|||||||
github.com/wailsapp/wails/v2 v2.3.2-0.20230117193915-45c3a501d9e6 // indirect
|
github.com/wailsapp/wails/v2 v2.3.2-0.20230117193915-45c3a501d9e6 // indirect
|
||||||
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect
|
github.com/xuri/efp v0.0.0-20231025114914-d1ff6096ae53 // indirect
|
||||||
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect
|
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 // indirect
|
||||||
golang.org/x/crypto v0.19.0 // indirect
|
github.com/ysmood/fetchup v0.2.3 // indirect
|
||||||
golang.org/x/net v0.21.0 // indirect
|
github.com/ysmood/goob v0.4.0 // indirect
|
||||||
golang.org/x/sys v0.17.0 // indirect
|
github.com/ysmood/got v0.34.1 // indirect
|
||||||
golang.org/x/text v0.14.0 // indirect
|
github.com/ysmood/gson v0.7.3 // indirect
|
||||||
|
github.com/ysmood/leakless v0.8.0 // indirect
|
||||||
|
go.opencensus.io v0.24.0 // indirect
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
|
||||||
|
go.opentelemetry.io/otel v1.24.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/metric v1.24.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||||
|
golang.org/x/crypto v0.25.0 // indirect
|
||||||
|
golang.org/x/net v0.27.0 // indirect
|
||||||
|
golang.org/x/oauth2 v0.18.0 // indirect
|
||||||
|
golang.org/x/sync v0.7.0 // indirect
|
||||||
|
golang.org/x/sys v0.22.0 // indirect
|
||||||
|
golang.org/x/text v0.16.0 // indirect
|
||||||
|
golang.org/x/time v0.5.0 // indirect
|
||||||
|
google.golang.org/appengine v1.6.8 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
|
||||||
|
google.golang.org/grpc v1.62.1 // indirect
|
||||||
|
google.golang.org/protobuf v1.33.0 // indirect
|
||||||
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect
|
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect
|
||||||
modernc.org/libc v1.41.0 // indirect
|
modernc.org/libc v1.41.0 // indirect
|
||||||
modernc.org/mathutil v1.6.0 // indirect
|
modernc.org/mathutil v1.6.0 // indirect
|
||||||
|
|||||||
690
app/go.sum
@@ -1,19 +1,217 @@
|
|||||||
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||||
|
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
|
||||||
|
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||||
|
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||||
|
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||||
|
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||||
|
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
||||||
|
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
||||||
|
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
|
||||||
|
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
|
||||||
|
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
|
||||||
|
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
|
||||||
|
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
|
||||||
|
cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
|
||||||
|
cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
|
||||||
|
cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
|
||||||
|
cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
|
||||||
|
cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
|
||||||
|
cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=
|
||||||
|
cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=
|
||||||
|
cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=
|
||||||
|
cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
|
||||||
|
cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
|
||||||
|
cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
|
||||||
|
cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
|
||||||
|
cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
|
||||||
|
cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
|
||||||
|
cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
|
||||||
|
cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
|
||||||
|
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||||
|
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||||
|
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||||
|
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
||||||
|
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
||||||
|
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
||||||
|
cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
|
||||||
|
cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
|
||||||
|
cloud.google.com/go/compute v1.23.4 h1:EBT9Nw4q3zyE7G45Wvv3MzolIrCJEuHys5muLY0wvAw=
|
||||||
|
cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI=
|
||||||
|
cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
|
||||||
|
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
|
||||||
|
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||||
|
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||||
|
cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=
|
||||||
|
cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI=
|
||||||
|
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||||
|
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||||
|
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
|
||||||
|
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
|
||||||
|
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||||
|
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
||||||
|
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||||
|
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||||
|
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||||
|
cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4=
|
||||||
|
cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=
|
||||||
|
cloud.google.com/go/vision/v2 v2.7.5 h1:T/ujUghvEaTb+YnFY/jiYwVAkMbIC8EieK0CJo6B4vg=
|
||||||
|
cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM=
|
||||||
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
|
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||||
|
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||||
|
github.com/carlmjohnson/requests v0.24.3 h1:LYcM/jVIVPkioigMjEAnBACXl2vb42TVqiC8EYNoaXQ=
|
||||||
|
github.com/carlmjohnson/requests v0.24.3/go.mod h1:duYA/jDnyZ6f3xbcF5PpZ9N8clgopubP2nK5i6MVMhU=
|
||||||
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
|
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||||
|
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
|
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
|
||||||
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
|
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
||||||
|
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||||
|
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||||
|
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||||
|
github.com/go-rod/rod v0.114.8 h1:2Mr2kO17blDAwWU4+eOBPgRf0w+6bfUxsPc7Nzd9VXk=
|
||||||
|
github.com/go-rod/rod v0.114.8/go.mod h1:aiedSEFg5DwG/fnNbUOTPMTTWX3MRj6vIs/a684Mthw=
|
||||||
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
|
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
|
||||||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||||
|
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||||
|
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||||
|
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
|
||||||
|
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
|
||||||
|
github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
|
||||||
|
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
|
||||||
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||||
|
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||||
|
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||||
|
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||||
|
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||||
|
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
|
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
|
||||||
|
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
|
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
|
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||||
|
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||||
|
github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
|
||||||
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
|
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
|
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
|
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
|
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
|
github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
|
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||||
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
|
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
|
||||||
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
|
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
|
||||||
|
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
|
||||||
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
|
||||||
|
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
|
||||||
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||||
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
|
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
|
||||||
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||||
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
|
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
|
||||||
github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
|
github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
|
||||||
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
|
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY=
|
github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY=
|
||||||
github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
||||||
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
|
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
|
||||||
@@ -31,6 +229,7 @@ github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdh
|
|||||||
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||||
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
||||||
@@ -38,6 +237,21 @@ github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7
|
|||||||
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||||
github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM=
|
github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM=
|
||||||
github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||||
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||||
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
|
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
|
||||||
|
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
|
||||||
|
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
||||||
@@ -52,32 +266,477 @@ github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGu
|
|||||||
github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE=
|
github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE=
|
||||||
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4=
|
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05 h1:qhbILQo1K3mphbwKh1vNm4oGezE1eF9fQWmNiIpSfI4=
|
||||||
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
|
github.com/xuri/nfp v0.0.0-20230919160717-d98342af3f05/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
|
||||||
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
|
github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
|
||||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
|
||||||
|
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
|
||||||
|
github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
|
||||||
|
github.com/ysmood/gop v0.0.2 h1:VuWweTmXK+zedLqYufJdh3PlxDNBOfFHjIZlPT2T5nw=
|
||||||
|
github.com/ysmood/gop v0.0.2/go.mod h1:rr5z2z27oGEbyB787hpEcx4ab8cCiPnKxn0SUHt6xzk=
|
||||||
|
github.com/ysmood/got v0.34.1 h1:IrV2uWLs45VXNvZqhJ6g2nIhY+pgIG1CUoOcqfXFl1s=
|
||||||
|
github.com/ysmood/got v0.34.1/go.mod h1:yddyjq/PmAf08RMLSwDjPyCvHvYed+WjHnQxpH851LM=
|
||||||
|
github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY=
|
||||||
|
github.com/ysmood/gotrace v0.6.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM=
|
||||||
|
github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE=
|
||||||
|
github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg=
|
||||||
|
github.com/ysmood/leakless v0.8.0 h1:BzLrVoiwxikpgEQR0Lk8NyBN5Cit2b1z+u0mgL4ZJak=
|
||||||
|
github.com/ysmood/leakless v0.8.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ=
|
||||||
|
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
|
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
|
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
|
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||||
|
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||||
|
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||||
|
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
|
||||||
|
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
|
||||||
|
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
|
||||||
|
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
|
||||||
|
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
|
||||||
|
go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
|
||||||
|
go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
|
||||||
|
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
|
||||||
|
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
|
||||||
|
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
|
||||||
|
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
|
||||||
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||||
|
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||||
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||||
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||||
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
|
golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
|
||||||
golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
|
golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
|
||||||
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
|
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||||
|
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
|
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
|
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
|
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
|
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||||
|
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||||
|
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||||
|
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
|
||||||
|
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
|
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
|
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||||
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
|
||||||
|
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||||
|
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
|
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
|
||||||
|
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
|
golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
|
||||||
|
golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||||
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
|
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
|
||||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||||
|
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
|
||||||
|
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||||
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
|
||||||
|
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||||
|
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||||
|
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
|
||||||
|
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||||
|
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||||
|
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||||
|
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
|
||||||
|
golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||||
|
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
|
||||||
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
|
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||||
|
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
|
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
|
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
|
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
|
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
|
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||||
|
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||||
|
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
|
||||||
|
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
|
||||||
|
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
|
||||||
|
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
|
||||||
|
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
|
||||||
|
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
|
||||||
|
google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
|
||||||
|
google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
|
||||||
|
google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
|
||||||
|
google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=
|
||||||
|
google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
|
||||||
|
google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=
|
||||||
|
google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
|
||||||
|
google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
|
||||||
|
google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
|
||||||
|
google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
|
||||||
|
google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
|
||||||
|
google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
|
||||||
|
google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=
|
||||||
|
google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=
|
||||||
|
google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk=
|
||||||
|
google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis=
|
||||||
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||||
|
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
|
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
|
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
|
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
||||||
|
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||||
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
|
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
|
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
|
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
|
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
|
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||||
|
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
||||||
|
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||||
|
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
|
||||||
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
|
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
|
||||||
|
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||||
|
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
|
||||||
|
google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
|
||||||
|
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
||||||
|
google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
||||||
|
google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
||||||
|
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
|
||||||
|
google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
|
||||||
|
google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
|
||||||
|
google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
|
||||||
|
google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
|
||||||
|
google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
|
||||||
|
google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
||||||
|
google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
||||||
|
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
||||||
|
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
||||||
|
google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
|
||||||
|
google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||||
|
google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
|
||||||
|
google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
|
||||||
|
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
|
||||||
|
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2 h1:rIo7ocm2roD9DcFIX67Ym8icoGCKSARAiPljFhh5suQ=
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
|
||||||
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
|
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||||
|
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||||
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
|
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
|
||||||
|
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||||
|
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||||
|
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||||
|
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||||
|
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
|
||||||
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
|
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
|
||||||
|
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||||
|
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||||
|
google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||||
|
google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||||
|
google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||||
|
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||||
|
google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
|
||||||
|
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
|
||||||
|
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
|
||||||
|
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
|
||||||
|
google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
|
||||||
|
google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
|
||||||
|
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
|
||||||
|
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
|
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||||
|
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||||
|
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
||||||
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
|
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
|
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||||
|
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
||||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
|
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||||
|
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||||
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
|
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
|
||||||
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
|
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
|
||||||
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
|
modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI=
|
||||||
@@ -94,3 +753,6 @@ modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
|
|||||||
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
|
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
|
||||||
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
||||||
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||||
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
|
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||||
|
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||||
|
|||||||
21
app/lib/bot/bordro.go
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package bot
|
||||||
|
|
||||||
|
import "github.com/shopspring/decimal"
|
||||||
|
|
||||||
|
type LucaBordro struct {
|
||||||
|
Sube string
|
||||||
|
Bolum string
|
||||||
|
TcNo string
|
||||||
|
AdSoyad string
|
||||||
|
Ucretler map[string]decimal.Decimal
|
||||||
|
//Header map[string]string
|
||||||
|
}
|
||||||
|
type BordroPageSelectBoxType struct {
|
||||||
|
B string
|
||||||
|
N string
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
BIndex = "B"
|
||||||
|
NIndex = "N"
|
||||||
|
)
|
||||||
950
app/lib/bot/luca.go
Normal file
@@ -0,0 +1,950 @@
|
|||||||
|
package bot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bordrobot/lib/company"
|
||||||
|
"bordrobot/lib/helper"
|
||||||
|
"bordrobot/lib/ocr"
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
|
|
||||||
|
"github.com/go-rod/rod"
|
||||||
|
"github.com/go-rod/rod/lib/launcher"
|
||||||
|
"github.com/go-rod/rod/lib/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
var pageErrors []string
|
||||||
|
var scriptIndexArray []BordroPageScript
|
||||||
|
|
||||||
|
type Luca struct {
|
||||||
|
Page *rod.Page
|
||||||
|
Browser *rod.Browser
|
||||||
|
}
|
||||||
|
type errorInfo struct {
|
||||||
|
Error string
|
||||||
|
Index int
|
||||||
|
}
|
||||||
|
type BordroPageScript struct {
|
||||||
|
Index string
|
||||||
|
Value string
|
||||||
|
itemType string
|
||||||
|
DomSelectValue struct {
|
||||||
|
Index string
|
||||||
|
Value string
|
||||||
|
itemType string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *Luca) ErrFunc(index bool) {
|
||||||
|
if index {
|
||||||
|
CloseBrowser(l.Browser)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (l *Luca) ClosingBrowserFromExternalLink() {
|
||||||
|
CloseBrowser(l.Browser)
|
||||||
|
}
|
||||||
|
func VerifyCaptcha(page *rod.Page) error {
|
||||||
|
//captcha := "#captcha"
|
||||||
|
picturePreparation := []string{
|
||||||
|
`document.getElementsByTagName("body")[0].style.backgroundImage = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik1")[0].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik2")[0].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[1].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[2].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[3].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[4].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[5].style.display = "none"`,
|
||||||
|
`document.getElementsByClassName("captcha-container")[0].style.display ='none'`,
|
||||||
|
}
|
||||||
|
for i := 0; i < len(picturePreparation); i++ {
|
||||||
|
wait := page.WaitRequestIdle(600*time.Millisecond, nil, nil, nil)
|
||||||
|
wait()
|
||||||
|
_, err := page.Evaluate(rod.Eval(`()=>{` + picturePreparation[i] + `}`))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Print(err)
|
||||||
|
}
|
||||||
|
datas, err := page.Screenshot(true, &proto.PageCaptureScreenshot{})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = helper.CreateFolder("./processFolder")
|
||||||
|
err = ioutil.WriteFile("./processFolder/screenshot.png", datas, 0644)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
//captchaMessage, err := ReceiveDOMMessages(page, captcha, "src")
|
||||||
|
picturePreparation = []string{
|
||||||
|
`document.getElementsByTagName("body")[0].style.backgroundImage = ""`,
|
||||||
|
`document.getElementsByClassName("baslik1")[0].style.display = ""`,
|
||||||
|
`document.getElementsByClassName("baslik2")[0].style.display = ""`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[1].style.display = ""`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[2].style.display = ""`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[3].style.display = ""`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[4].style.display = ""`,
|
||||||
|
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[5].style.display = ""`,
|
||||||
|
}
|
||||||
|
for i := 0; i < len(picturePreparation); i++ {
|
||||||
|
wait := page.WaitRequestIdle(600*time.Millisecond, nil, nil, nil)
|
||||||
|
wait()
|
||||||
|
_, err := page.Evaluate(rod.Eval(`()=>{` + picturePreparation[i] + `}`))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Print(err)
|
||||||
|
}
|
||||||
|
var captchaMsg string
|
||||||
|
screenshot, err := page.Screenshot(true, &proto.PageCaptureScreenshot{})
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Captcha Sayfasında Hata Oluştu. İşlem Sonlanıyor.")
|
||||||
|
}
|
||||||
|
//captchaMsg, err = ocr.VisionApi("./processFolder/screenshot.png")
|
||||||
|
captchaMsg, err = ocr.DecodeTwoCaptcha(context.Background(), screenshot, "luca")
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Captcha Servisinde Hata Oluştu. İşlem Sonlanıyor.")
|
||||||
|
}
|
||||||
|
|
||||||
|
trimmedMsg := strings.ReplaceAll(captchaMsg, " ", "")
|
||||||
|
trimmedMsg = strings.Replace(trimmedMsg, "\"", "", -1)
|
||||||
|
page.MustElement("#captcha-input").MustInput(strings.ToLower(trimmedMsg))
|
||||||
|
_, err = page.Evaluate(rod.Eval(`document.getElementById(document.forms[0].submit())`))
|
||||||
|
if err != nil {
|
||||||
|
}
|
||||||
|
err = WaitLoad(page)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
getUrl := page.MustInfo().URL
|
||||||
|
splitUrl := strings.Split(getUrl, "/")
|
||||||
|
uri := strings.Split(splitUrl[len(splitUrl)-1], ";")[0]
|
||||||
|
if uri != "main.erp" {
|
||||||
|
_, err = page.Evaluate(rod.Eval(`document.querySelector("body > div.swal2-container.swal2-fade.swal2-in > div > button.swal2-confirm.swal2-styled").click()`))
|
||||||
|
//rod.Eval(`document.querySelector("body > div.swal2-container.swal2-fade.swal2-in > div > button.swal2-confirm.swal2-styled").click()`)
|
||||||
|
|
||||||
|
VerifyCaptcha(page)
|
||||||
|
fmt.Println("captcha tekrar deneme fonksiyonuna sok")
|
||||||
|
//captcha tekrar denenecek
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
func NewLucaBot(devMode bool) *Luca {
|
||||||
|
l := launcher.New().
|
||||||
|
Headless(devMode).
|
||||||
|
Devtools(true)
|
||||||
|
|
||||||
|
//defer l.Cleanup()
|
||||||
|
|
||||||
|
url := l.MustLaunch()
|
||||||
|
browser := rod.New().
|
||||||
|
ControlURL(url).
|
||||||
|
Trace(true).
|
||||||
|
//SlowMotion(1 * time.Second).
|
||||||
|
MustConnect()
|
||||||
|
page := browser.MustPage("https://agiris.luca.com.tr/LUCASSO/giris.erp")
|
||||||
|
fmt.Println(page)
|
||||||
|
|
||||||
|
return &Luca{Page: page, Browser: browser}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *Luca) Login(company company.Company, month float64, year float64) error {
|
||||||
|
page := l.Page
|
||||||
|
err := WaitLoad(page)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = FillInput(page, "#musteriNo", company.MemberNumber)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.Timeout(500)
|
||||||
|
err = FillInput(page, "#kullaniciAdi", company.Username)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.Timeout(500)
|
||||||
|
err = FillInput(page, "#parola", company.Password)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.Timeout(500)
|
||||||
|
|
||||||
|
result, err := page.Evaluate(rod.Eval(`()=>{girisbtn()}`))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
page.Timeout(1000)
|
||||||
|
loginDialog := "body > div.swal2-container.swal2-fade.swal2-in > div > div.swal2-content"
|
||||||
|
|
||||||
|
loginDialogMessage, err := ReceiveDOMMessages(page, loginDialog, "innerText")
|
||||||
|
if err != nil {
|
||||||
|
errString := err.Error()
|
||||||
|
if !strings.Contains(errString, "Sellector Bulunamadı") {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if loginDialogMessage == "Müşteri No, Kullanıcı Adı veya Parola hatalıdır." {
|
||||||
|
return errors.New("Şifre hatalı")
|
||||||
|
|
||||||
|
}
|
||||||
|
err = WaitLoad(page)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
getUrl := page.MustInfo().URL
|
||||||
|
splitUrl := strings.Split(getUrl, "/")
|
||||||
|
splitUrlPage := strings.Split(splitUrl[len(splitUrl)-1], ";")[0]
|
||||||
|
if splitUrlPage != "main.erp" {
|
||||||
|
VerifyCaptcha(page)
|
||||||
|
}
|
||||||
|
fmt.Println(result)
|
||||||
|
wait := page.WaitRequestIdle(1000*time.Millisecond, nil, nil, nil)
|
||||||
|
wait()
|
||||||
|
|
||||||
|
_, err = page.Evaluate(rod.Eval(`()=>{gonder('formTarget');}`))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
Wait(page, 2000)
|
||||||
|
|
||||||
|
allPages, err := page.Browser().Pages()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
newPage, err := allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
|
err = WaitLoad(newPage)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
frm4, err := newPage.Element("#frm4")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
frame4, err := frm4.Frame()
|
||||||
|
Wait(frame4, 1500)
|
||||||
|
err = WaitLoad(newPage)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame4, 1500)
|
||||||
|
companiesSelectBoxWait, err := frame4.Element("#SirketCombo > option")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = companiesSelectBoxWait.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
companiesSelectBox, err := frame4.Elements("#SirketCombo > option")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var vls string = ""
|
||||||
|
for j := 0; j < len(companiesSelectBox); j++ {
|
||||||
|
tex, err := companiesSelectBox[j].Text()
|
||||||
|
value, err := companiesSelectBox[j].Property("value")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if tex == company.Name {
|
||||||
|
vls = value.String()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Wait(newPage, 500)
|
||||||
|
element, err := frame4.Element("#SirketCombo")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
selectInput := Select{Element: element, Selector: "#SirketCombo"}
|
||||||
|
err = selectInput.SelectItem(vls)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame4)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame4, 1500)
|
||||||
|
companiesSelectYear, err := frame4.Elements("#DonemCombo > option")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for j := 0; j < len(companiesSelectYear); j++ {
|
||||||
|
tex, err := companiesSelectYear[j].Text()
|
||||||
|
value, err := companiesSelectYear[j].Property("value")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if strings.Contains(tex, strconv.Itoa(int(year))) {
|
||||||
|
vls = value.String()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Wait(newPage, 500)
|
||||||
|
element, err = frame4.Element("#DonemCombo")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
selectInput = Select{Element: element, Selector: "#DonemCombo"}
|
||||||
|
err = selectInput.SelectItem(vls)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame4)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ClickItem(frame4, "#SirName > button.no-bold.green > i", 1)
|
||||||
|
|
||||||
|
err = WaitLoad(frame4)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(newPage, 500)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) ([]BordroPageScript, error) {
|
||||||
|
scriptIndexArray = []BordroPageScript{}
|
||||||
|
table, err := frame.Elements("#scroll > div > table > tbody > tr > td > table > tbody > tr > td") //table kontrol et var mı yok mu diye
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
//table := frame.MustElements(".i2")
|
||||||
|
var mainText string
|
||||||
|
for t := 0; t < len(table); t++ {
|
||||||
|
inputElement, err := table[t].Element("input")
|
||||||
|
text, err := table[t].Text()
|
||||||
|
fmt.Print(mainText)
|
||||||
|
if text != "" {
|
||||||
|
mainText = text
|
||||||
|
}
|
||||||
|
if inputElement != nil {
|
||||||
|
if mainText != "" {
|
||||||
|
fmt.Print(t)
|
||||||
|
elem, err := table[t+1].Element("input")
|
||||||
|
if elem == nil {
|
||||||
|
mainText = ""
|
||||||
|
fmt.Print("Hatalı Text")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
id, err := elem.Attribute("id")
|
||||||
|
|
||||||
|
fmt.Print(err)
|
||||||
|
pageScript := BordroPageScript{
|
||||||
|
Value: text,
|
||||||
|
Index: *id,
|
||||||
|
itemType: "input",
|
||||||
|
}
|
||||||
|
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||||
|
mainText = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if t <= len(table)-2 {
|
||||||
|
if text != "" {
|
||||||
|
if mainText == "N\nB" {
|
||||||
|
aa, err := table[t].Element("select")
|
||||||
|
id, err := aa.Attribute("id")
|
||||||
|
dd := len(scriptIndexArray) - 2
|
||||||
|
scriptIndexArray[dd].DomSelectValue.Index = *id
|
||||||
|
scriptIndexArray[dd].DomSelectValue.Value = mainText
|
||||||
|
scriptIndexArray[dd].DomSelectValue.itemType = "select"
|
||||||
|
fmt.Print(aa, id, err)
|
||||||
|
|
||||||
|
}
|
||||||
|
inputBox, err := table[t+1].Element("input")
|
||||||
|
selectBox, err := table[t+1].Element("select")
|
||||||
|
fmt.Print(err)
|
||||||
|
if inputBox != nil {
|
||||||
|
types, err := inputBox.Attribute("type")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if *types != "hidden" {
|
||||||
|
id, err := inputBox.Attribute("id")
|
||||||
|
pageScript := BordroPageScript{
|
||||||
|
Value: text,
|
||||||
|
Index: *id,
|
||||||
|
itemType: "input",
|
||||||
|
}
|
||||||
|
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||||
|
fmt.Print(inputBox, err, id, types)
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if selectBox != nil {
|
||||||
|
id, err := selectBox.Attribute("id")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
pageScript := BordroPageScript{
|
||||||
|
Value: text,
|
||||||
|
Index: *id,
|
||||||
|
itemType: "selectBox",
|
||||||
|
}
|
||||||
|
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||||
|
}
|
||||||
|
mainText = ""
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
fmt.Print(err)
|
||||||
|
}
|
||||||
|
return scriptIndexArray, nil
|
||||||
|
}
|
||||||
|
func (l *Luca) PayrollPageLogin() error {
|
||||||
|
newPage, err := l.GetPageByUrl("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fs2, err := newPage.Element("#frm2")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
frame, err := fs2.Frame()
|
||||||
|
fs3, err := newPage.Element("#frm3")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
frame3, err := fs3.Frame()
|
||||||
|
err = newPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = frame.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(newPage, 500)
|
||||||
|
err = ClickItem(frame, "#apy1000m0i1ITD", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println(err)
|
||||||
|
err = ClickItem(frame3, "#apy1000m36i4ITX", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = newPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(newPage, 1500)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *Luca) BordroYaz(month, year int, b *LucaBordro, lastItem bool) error {
|
||||||
|
newPage, err := l.GetPageByUrl("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
frame3, err := l.GetFrame(newPage, "#frm3")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
isyeriId := ""
|
||||||
|
bolumId := ""
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame3, 2000)
|
||||||
|
err = WaitDomElement(frame3, "#isyeriId > option", 50)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("işyeri bulunurken hata ile karşılaşıldı")
|
||||||
|
}
|
||||||
|
bordroCompanySelectBox, err := frame3.Elements("#isyeriId > option")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for j := 0; j < len(bordroCompanySelectBox); j++ {
|
||||||
|
text, err := bordroCompanySelectBox[j].Text()
|
||||||
|
value, err := bordroCompanySelectBox[j].Property("value")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if strings.Trim(text, " ") == b.Sube { //.Sube.Value
|
||||||
|
isyeriId = value.String()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isyeriId == "" {
|
||||||
|
return errors.New("Kayıtlı Şube Bulunamadı")
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame3, 1000)
|
||||||
|
element, err := frame3.Element("#isyeriId")
|
||||||
|
element.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
selectInput := Select{Element: element, Selector: "#isyeriId"}
|
||||||
|
err = selectInput.SelectItem(isyeriId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame3, 2500)
|
||||||
|
err = WaitDomElement(frame3, "#bolumId > option", 50)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("bölüm bulunurken hata ile karşılaşıldı")
|
||||||
|
}
|
||||||
|
bordroDepartmentSelectBox, err := frame3.Elements("#bolumId > option")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
element, err = frame3.Element("#bolumId > option")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
element.WaitLoad()
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for j := 0; j < len(bordroDepartmentSelectBox); j++ {
|
||||||
|
text, err := bordroDepartmentSelectBox[j].Text()
|
||||||
|
value, err := bordroDepartmentSelectBox[j].Property("value")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if strings.Trim(text, " ") == b.Bolum { //.Bolum.Value
|
||||||
|
bolumId = value.String()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if bolumId == "" {
|
||||||
|
return errors.New("Kayıtlı Bölüm Bulunamadı")
|
||||||
|
}
|
||||||
|
|
||||||
|
element, err = frame3.Element("#bolumId")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
selectInput = Select{Element: element, Selector: "#bolumId"}
|
||||||
|
err = selectInput.SelectItem(bolumId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame3, 1000)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ClickItem(frame3, "#tr"+strconv.FormatFloat(float64(month), 'f', -1, 64)+" > td:nth-child(1)", 2) //aktarım ayı
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Wait(frame3, 1500)
|
||||||
|
var isEmpty bool = false
|
||||||
|
//var targetID string
|
||||||
|
err = WaitDomElement(frame3, "#scroll > table > tbody > tr > td[id^='tcKimlikNo']", 50)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("tablo okunurken hata ile karşılaşıldı")
|
||||||
|
}
|
||||||
|
|
||||||
|
elems, err := frame3.Elements("#scroll > table > tbody > tr > td[id^='tcKimlikNo']")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
elemsProcess, err := frame3.Elements("#scroll > table > tbody > tr > td > a")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
trs, err := frame3.Elements("#scroll > table > tbody > tr")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
var foundIndex int = -1
|
||||||
|
for j := 0; j < len(elems); j++ {
|
||||||
|
tex, err := elems[j].Text()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
process, err := elemsProcess[j].Text()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if tex == b.TcNo { //.TCKimlikNo.Value
|
||||||
|
foundIndex = j
|
||||||
|
if process == "Bordro Sil" {
|
||||||
|
isEmpty = true
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if foundIndex == -1 {
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return errors.New("Böyle Bir Kullanıcı Bulunamadı")
|
||||||
|
}
|
||||||
|
if isEmpty == true {
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return errors.New("Yazılı Bordro Var Lütfen Siliniz")
|
||||||
|
}
|
||||||
|
if foundIndex != -1 && isEmpty == false {
|
||||||
|
|
||||||
|
trs[foundIndex].Click(proto.InputMouseButtonLeft, 2)
|
||||||
|
}
|
||||||
|
Wait(newPage, 1500)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
rsp, err := l.BordroTableMaping(frame3, b)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Bordro Tablosu Çekilemedi")
|
||||||
|
}
|
||||||
|
sgkDayFlag := false
|
||||||
|
|
||||||
|
//rsp den dönden değerler ile matchlencek ve yazılcak
|
||||||
|
firsts := make(map[string]decimal.Decimal)
|
||||||
|
if value, ok := b.Ucretler["Normal Gün"]; ok {
|
||||||
|
// Anahtarı ve değeri yeni map'e ekle
|
||||||
|
firsts["Normal Gün"] = value
|
||||||
|
}
|
||||||
|
if value, ok := b.Ucretler["Hafta Tatili"]; ok {
|
||||||
|
// Anahtarı ve değeri yeni map'e ekle
|
||||||
|
firsts["Hafta Tatili"] = value
|
||||||
|
}
|
||||||
|
if value, ok := b.Ucretler["Genel Tatil"]; ok {
|
||||||
|
// Anahtarı ve değeri yeni map'e ekle
|
||||||
|
firsts["Genel Tatil"] = value
|
||||||
|
}
|
||||||
|
if value, ok := b.Ucretler["Ücretli İzin"]; ok {
|
||||||
|
// Anahtarı ve değeri yeni map'e ekle
|
||||||
|
firsts["Ücretli İzin"] = value
|
||||||
|
if !value.IsZero() {
|
||||||
|
sgkDayFlag = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if value, ok := b.Ucretler["Rapor"]; ok {
|
||||||
|
// Anahtarı ve değeri yeni map'e ekle
|
||||||
|
firsts["Rapor"] = value
|
||||||
|
if !value.IsZero() {
|
||||||
|
sgkDayFlag = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keys := []string{"Normal Gün", "Hafta Tatili", "Genel Tatil", "Ücretli İzin", "Rapor"}
|
||||||
|
|
||||||
|
for _, v := range keys {
|
||||||
|
fmt.Print(v)
|
||||||
|
for i := 0; i < len(rsp); i++ {
|
||||||
|
value, ok := firsts[v]
|
||||||
|
if !ok {
|
||||||
|
fmt.Printf("Key %s not found in map\n", v)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if v == rsp[i].Value {
|
||||||
|
el, err := frame3.Element("#" + rsp[i].Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !value.Equal(value.Truncate(0)) {
|
||||||
|
nevvl := strings.ReplaceAll(value.String(), ".", ",")
|
||||||
|
strv := nevvl
|
||||||
|
err = el.Input(strv)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = el.Input(value.String())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
el.Eval(`this.dispatchEvent(new KeyboardEvent('keydown', {'key': 'Enter'}))`)
|
||||||
|
// valueStr := value.String()
|
||||||
|
// // JS ile değeri ata, input tetikle, blur tetikle (Enter yerine geçer)
|
||||||
|
// script := fmt.Sprintf(`this.value = "%s"; this.dispatchEvent(new Event("input", { bubbles: true })); this.blur();`, strings.ReplaceAll(valueStr, `"`, `\"`))
|
||||||
|
|
||||||
|
// _, err = el.Eval(script)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
display, err := frame3.Element("#puantajGunTable")
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Puantaj Gün Tablosu Bulunamadı.")
|
||||||
|
}
|
||||||
|
dsp, err := display.Attribute("style")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// `display: none;` içerip içermediğini kontrol et
|
||||||
|
if dsp != nil && !strings.Contains(*dsp, "display: none;") {
|
||||||
|
if sgkDayFlag {
|
||||||
|
ClickItem(frame3, "#ayGun2", 1)
|
||||||
|
} else {
|
||||||
|
ClickItem(frame3, "#ayGun1", 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range b.Ucretler {
|
||||||
|
splitValue := strings.SplitN(k, " #", 2)
|
||||||
|
k = strings.TrimSpace(splitValue[0])
|
||||||
|
var elementInsertControl bool = true
|
||||||
|
var displayControl bool = true
|
||||||
|
tt := v.String()
|
||||||
|
if tt == "0" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if k == "Normal Gün" || k == "Hafta Tatili" || k == "Genel Tatil" || k == "Ücretli İzin" || k == "Rapor" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
Wait(frame3, 100)
|
||||||
|
for i := 0; i < len(rsp); i++ {
|
||||||
|
|
||||||
|
if k == rsp[i].Value {
|
||||||
|
var hashValue string
|
||||||
|
if len(splitValue) > 1 {
|
||||||
|
hashValue = strings.TrimSpace(splitValue[1])
|
||||||
|
}
|
||||||
|
Wait(frame3, 200)
|
||||||
|
if rsp[i].itemType == "selectBox" {
|
||||||
|
elemBox, err := frame3.Element("#" + rsp[i].Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
selectInput = Select{Element: elemBox, Selector: "#" + rsp[i].Index}
|
||||||
|
err = selectInput.SelectItem(v.String())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
elementInsertControl = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
el, err := frame3.Element("#" + rsp[i].Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// //s ve g olunca i yi çalıştır n ve b olunca i+1 i
|
||||||
|
if (hashValue == "S" || hashValue == "G") && k != "ARGE-Destek ve Tasarım Faaliyeti" {
|
||||||
|
if rsp[i+1].Value != hashValue {
|
||||||
|
newBordroPage, err := frame3.Element("body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
||||||
|
newBordroPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return errors.New(k + hashValue + "Sütun Bulunamadı")
|
||||||
|
}
|
||||||
|
el, err = frame3.Element("#" + rsp[i].Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if hashValue == "B" || hashValue == "N" {
|
||||||
|
if strings.Contains(rsp[i].Index, "Carpan") {
|
||||||
|
b := BordroPageSelectBoxType{
|
||||||
|
B: "1", // Buraya gerçek değeri koyun
|
||||||
|
N: "0", // Buraya gerçek değeri koyun
|
||||||
|
}
|
||||||
|
var dynamicValue string
|
||||||
|
if hashValue == "B" {
|
||||||
|
dynamicValue = b.B
|
||||||
|
} else {
|
||||||
|
dynamicValue = b.N
|
||||||
|
}
|
||||||
|
elemBox, err := frame3.Element("#" + rsp[i].DomSelectValue.Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
selectInput = Select{Element: elemBox, Selector: "#" + rsp[i].DomSelectValue.Index}
|
||||||
|
err = selectInput.SelectItem(dynamicValue)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
el, err = frame3.Element("#" + rsp[i+1].Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if k == "ARGE-Destek ve Tasarım Faaliyeti" {
|
||||||
|
if hashValue == "S" {
|
||||||
|
el, err = frame3.Element("#" + rsp[i+1].Index)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value := v.String()
|
||||||
|
if strings.Contains(value, ".") {
|
||||||
|
value = strings.Replace(value, ".", ",", -1)
|
||||||
|
}
|
||||||
|
elemF := el
|
||||||
|
if strings.Contains(rsp[i].Index, rsp[i].Index) {
|
||||||
|
for {
|
||||||
|
parentElement, err := elemF.Parent()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
|
||||||
|
}
|
||||||
|
innerHTML, err := parentElement.HTML()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// innerHTML'deki etiket adını al
|
||||||
|
tagName1 := strings.Split(innerHTML, ">")[0]
|
||||||
|
tagName := strings.TrimPrefix(tagName1, "<")
|
||||||
|
fmt.Println("Tag name:", tagName)
|
||||||
|
fmt.Print(tagName)
|
||||||
|
if strings.Contains(tagName, "table") {
|
||||||
|
if strings.Contains(tagName1, " display: none;") {
|
||||||
|
displayControl = false
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
elemF = parentElement
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if displayControl {
|
||||||
|
err = el.Input(value)
|
||||||
|
}
|
||||||
|
elementInsertControl = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if elementInsertControl {
|
||||||
|
if tt != "0" {
|
||||||
|
newBordroPage, err := frame3.Element("body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
||||||
|
newBordroPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return errors.New(k + " Sütunu Bulunamadı Taslak Hatası, ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
saveButtonMessage, _ := ReceiveDOMMessages(frame3, ".alert-container", "innerText")
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
if saveButtonMessage != "Bordro hesaplanıyor." {
|
||||||
|
newBordroPage, err := frame3.Element("body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
||||||
|
newBordroPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
return errors.New(saveButtonMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
newBordroPage, err := frame3.Element("body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
||||||
|
newBordroPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
140
app/lib/bot/rodhelper.go
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
package bot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/go-rod/rod"
|
||||||
|
"github.com/go-rod/rod/lib/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Select struct {
|
||||||
|
Element *rod.Element
|
||||||
|
Selector string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (elemSelector *Select) SelectItem(changeValue string) error {
|
||||||
|
_, err := elemSelector.Element.Evaluate(rod.Eval(`()=>{document.querySelector("` + elemSelector.Selector + `").value = "` + changeValue + `";}`))
|
||||||
|
_, err = elemSelector.Element.Evaluate(rod.Eval(`()=>{document.querySelector("` + elemSelector.Selector + `").dispatchEvent(new Event('change'));}`))
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
func WaitLoad(frm *rod.Page) error { // belli bir süre redirect ten önceki js fonksiyonunun tamamlanması bekleniyor
|
||||||
|
wait := frm.WaitRequestIdle(100*time.Millisecond, nil, nil, nil)
|
||||||
|
wait()
|
||||||
|
err := frm.WaitLoad()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
func ReceiveDOMMessages(page *rod.Page, selector string, searchValue string) (string, error) {
|
||||||
|
// Tek bir öğe alınması, hata durumunu kontrol etmek için
|
||||||
|
elemd := page.MustElements(selector)
|
||||||
|
|
||||||
|
// Eğer elem boş ise, yani nil ise, hata döndür
|
||||||
|
if len(elemd) == 0 {
|
||||||
|
err := fmt.Errorf("Sellector Bulunamadı: %v", selector)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
elem := page.MustElement(selector)
|
||||||
|
// Eğer elem boş ise, yani nil ise, hata döndür
|
||||||
|
if elem == nil {
|
||||||
|
err := fmt.Errorf("Sellector Bulunamadı: %v", selector)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Öğenin metnini al
|
||||||
|
//text := elem.MustEval(fmt.Sprintf(`() => this.%s`, searchValue)).String()
|
||||||
|
// text := elem.MustEval(`() => this.innerText`).String()
|
||||||
|
text := elem.MustEval(fmt.Sprintf(`() => this.%s`, searchValue)).String()
|
||||||
|
|
||||||
|
return text, nil
|
||||||
|
}
|
||||||
|
func FillInput(frm *rod.Page, selector string, value string) error {
|
||||||
|
el, err := frm.Element(selector)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = el.Input(value)
|
||||||
|
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
func ClickItem(frm *rod.Page, selector string, clickCount int) error {
|
||||||
|
// Sayfadan ilgili öğeyi bul
|
||||||
|
el, err := frm.Element(selector)
|
||||||
|
err = el.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = el.Click(proto.InputMouseButtonLeft, clickCount)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
func Wait(frm *rod.Page, millisecond time.Duration) {
|
||||||
|
wait := frm.WaitRequestIdle(millisecond*time.Millisecond, nil, nil, nil)
|
||||||
|
wait()
|
||||||
|
|
||||||
|
}
|
||||||
|
func CloseBrowser(browser *rod.Browser) {
|
||||||
|
browser.Close()
|
||||||
|
}
|
||||||
|
func (l *Luca) GetPageByUrl(url string) (*rod.Page, error) {
|
||||||
|
allPages, err := l.Page.Browser().Pages()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
|
}
|
||||||
|
func (l *Luca) GetFrame(page *rod.Page, selector string) (*rod.Page, error) {
|
||||||
|
err := page.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
frm, err := page.Element(selector)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
frame, err := frm.Frame()
|
||||||
|
return frame, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func WaitDomElement(page *rod.Page, selector string, duration time.Duration) error {
|
||||||
|
if page == nil {
|
||||||
|
return errors.New("page is nil sellector : " + selector)
|
||||||
|
}
|
||||||
|
//todo: [hd] : timeout taki 10 integer değerini const olarak al ve bunu bastır
|
||||||
|
element, err := page.Timeout(duration * time.Second).Element(selector)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = element.WaitLoad()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReceiveDOMMessagesElements(page *rod.Page, selector string, searchValue string, duration time.Duration) (rod.Elements, error) {
|
||||||
|
//todo
|
||||||
|
// Tek bir öğe alınması, hata durumunu kontrol etmek için
|
||||||
|
elemd, err := page.Timeout(duration * time.Second).Elements(selector)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
// Eğer elem boş ise, yani nil ise, hata döndür
|
||||||
|
if len(elemd) == 0 {
|
||||||
|
err := fmt.Errorf("Sellector Bulunamadı: %v", selector)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return elemd, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// func (elemSelector *Select) MultipleEvalute(changeValue []string) error {
|
||||||
|
// for i := 0; i < len(changeValue); i++ {
|
||||||
|
// _, err := elemSelector.Element.Evaluate(rod.Eval(changeValue[i]))
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
|
||||||
|
// }
|
||||||
@@ -5,11 +5,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Company struct {
|
type Company struct {
|
||||||
|
Id int `db:"id"`
|
||||||
Name string `db:"name"`
|
Name string `db:"name"`
|
||||||
MemberNumber string `db:"member_number"`
|
MemberNumber string `db:"member_number"`
|
||||||
Username string `db:"username"`
|
Username string `db:"username"`
|
||||||
Password string `db:"password"`
|
Password string `db:"password"`
|
||||||
}
|
}
|
||||||
|
type CompanyInfo struct {
|
||||||
|
Company Company
|
||||||
|
Month float64
|
||||||
|
Year float64
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Company) Create() error {
|
func (c *Company) Create() error {
|
||||||
sq := `
|
sq := `
|
||||||
@@ -19,3 +25,40 @@ VALUES (:name, :member_number, :username, :password)
|
|||||||
_, err := run.DB.NamedExec(sq, &c)
|
_, err := run.DB.NamedExec(sq, &c)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
func (c *Company) Edit() error {
|
||||||
|
sq := `
|
||||||
|
UPDATE company SET
|
||||||
|
name = :name,
|
||||||
|
member_number = :member_number,
|
||||||
|
username = :username,
|
||||||
|
password = :password
|
||||||
|
WHERE id = :id;`
|
||||||
|
_, err := run.DB.NamedExec(sq, &c)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
//func GetCompany(companyName string) (Company, error) {
|
||||||
|
// sq := `
|
||||||
|
// SELECT * FROM company WHERE company = ?
|
||||||
|
// `
|
||||||
|
// err := run.DB.Get(&Company, sq, companyName)
|
||||||
|
// if err != nil {
|
||||||
|
// return Company{}, err
|
||||||
|
// }
|
||||||
|
// return Company{}, nil
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
|
||||||
|
func GetCompany(companyID float64) (Company, error) {
|
||||||
|
var company Company
|
||||||
|
|
||||||
|
sq := `
|
||||||
|
SELECT * FROM company WHERE id = ?
|
||||||
|
`
|
||||||
|
err := run.DB.Get(&company, sq, companyID)
|
||||||
|
if err != nil {
|
||||||
|
return Company{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return company, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
package company
|
package company
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bordrobot/lib/run"
|
"bordrobot/lib/run"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCompany_Create(t *testing.T) {
|
func TestCompany_Create(t *testing.T) {
|
||||||
err := run.InitDB("../..")
|
err := run.InitDB("../..")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
c := &Company{
|
c := &Company{
|
||||||
Name: "Deneme Firması",
|
Name: "Deneme Firması",
|
||||||
MemberNumber: "1234",
|
MemberNumber: "1234",
|
||||||
Username: "u1",
|
Username: "u1",
|
||||||
Password: "p1",
|
Password: "p1",
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.Create()
|
err = c.Create()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
run.DB.Close()
|
run.DB.Close()
|
||||||
}
|
}
|
||||||
|
|||||||
30
app/lib/helper/helper.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package helper
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
type errorInfo struct {
|
||||||
|
Error string
|
||||||
|
Index int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *errorInfo) ErrorHandle() {
|
||||||
|
//apiden veya txt ye yaz
|
||||||
|
}
|
||||||
|
func CreateFolder(folderName string) error {
|
||||||
|
|
||||||
|
if _, err := os.Stat(folderName); os.IsNotExist(err) {
|
||||||
|
// Klasör yoksa oluştur
|
||||||
|
err := os.Mkdir(folderName, 0755)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Klasör oluşturulamadı:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println("Klasör oluşturuldu:", folderName)
|
||||||
|
} else {
|
||||||
|
fmt.Println("Klasör zaten var:", folderName)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
348
app/lib/model/bordro.go
Normal file
@@ -0,0 +1,348 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
//"github.com/go-rod/rod"
|
||||||
|
)
|
||||||
|
|
||||||
|
type BordroProperty struct {
|
||||||
|
Index int
|
||||||
|
Value string
|
||||||
|
Id string
|
||||||
|
//DomType string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Bordro struct {
|
||||||
|
Sube BordroProperty // 0
|
||||||
|
Bolum BordroProperty //
|
||||||
|
TCKimlikNo BordroProperty //
|
||||||
|
AdiSoyadi BordroProperty //
|
||||||
|
NormalGun BordroProperty //4
|
||||||
|
HaftaTatili BordroProperty //
|
||||||
|
X75 BordroProperty //
|
||||||
|
EksikGunNeden BordroProperty //
|
||||||
|
ArgeDestekVeTasarim BordroProperty //
|
||||||
|
FazlaMesai BordroProperty // 9
|
||||||
|
GeceMesaisi BordroProperty //10
|
||||||
|
BayramMesaisi BordroProperty //
|
||||||
|
Yol BordroProperty //12
|
||||||
|
YemekGun BordroProperty //13
|
||||||
|
YemekTutar BordroProperty //
|
||||||
|
Aile BordroProperty //15
|
||||||
|
Cocuk BordroProperty //
|
||||||
|
Evlenme BordroProperty //17
|
||||||
|
Dogum BordroProperty //18
|
||||||
|
Olum BordroProperty //19
|
||||||
|
Askerlik BordroProperty //20
|
||||||
|
Ozelsigorta BordroProperty //21
|
||||||
|
BireyselEmeklilik BordroProperty //22
|
||||||
|
HayatSigortasi BordroProperty //23
|
||||||
|
PrimNet BordroProperty //24
|
||||||
|
PrimBrut BordroProperty //
|
||||||
|
IkramiyeNet BordroProperty //25
|
||||||
|
IkramiyeBrut BordroProperty //
|
||||||
|
KıdemTazminatı BordroProperty //28
|
||||||
|
IhbarTazminati BordroProperty //29
|
||||||
|
Bayram BordroProperty //30
|
||||||
|
Yakacak BordroProperty //31
|
||||||
|
HuzurHakki BordroProperty //32
|
||||||
|
HediyeKart BordroProperty
|
||||||
|
YakitKart BordroProperty
|
||||||
|
YillikIzin BordroProperty
|
||||||
|
MaasFarki BordroProperty
|
||||||
|
AyirilisPaketi BordroProperty
|
||||||
|
RamazanKumanyasi BordroProperty
|
||||||
|
TelefonDesteği BordroProperty //39
|
||||||
|
EkOdemeNet BordroProperty
|
||||||
|
EkOdemeBrut BordroProperty
|
||||||
|
IsAramaIzni BordroProperty
|
||||||
|
Prim2 BordroProperty //43
|
||||||
|
Prim3 BordroProperty
|
||||||
|
Prim4 BordroProperty
|
||||||
|
CalismaIzniHarci BordroProperty
|
||||||
|
OzeldurumOdenesi BordroProperty
|
||||||
|
EmekliSandigiCalisanPrimi BordroProperty
|
||||||
|
LisanTazminati BordroProperty
|
||||||
|
OdulOdenesi BordroProperty
|
||||||
|
IsSonuTazminati BordroProperty
|
||||||
|
VergiIstisnasiEkOdeme BordroProperty
|
||||||
|
KresYardimi BordroProperty //53
|
||||||
|
EsnekYanHak BordroProperty
|
||||||
|
AracKullanim BordroProperty
|
||||||
|
EgitimDesteği BordroProperty
|
||||||
|
DelegeUcreti BordroProperty
|
||||||
|
HarcTutarlari BordroProperty
|
||||||
|
SendikaIscilikFarkUcretleri BordroProperty
|
||||||
|
IsinmaDesteği BordroProperty
|
||||||
|
SoforlukMesaisi BordroProperty
|
||||||
|
Avans BordroProperty
|
||||||
|
Icra BordroProperty
|
||||||
|
Sendika BordroProperty
|
||||||
|
HediyeKart2 BordroProperty
|
||||||
|
YemekAyni BordroProperty
|
||||||
|
RamazanKumanyasiAyni BordroProperty
|
||||||
|
BagimliOSSKesintisi BordroProperty
|
||||||
|
CalismaIzniHarciAyni BordroProperty
|
||||||
|
TrafikCezasiKesintisi BordroProperty
|
||||||
|
BesKesintisi BordroProperty
|
||||||
|
YakitKart2 BordroProperty
|
||||||
|
GrupBesPersonelPayiKesintisi BordroProperty
|
||||||
|
IstisnadanKaynaklananKesinti BordroProperty
|
||||||
|
EmekliSandigiCalisanPrimKesintisi BordroProperty
|
||||||
|
PesinYillikIzinKesintisi BordroProperty
|
||||||
|
TelefonLimitAsimKesintisi BordroProperty
|
||||||
|
ZimmetTamirKesintisi BordroProperty
|
||||||
|
YakitAsimKesintisi BordroProperty
|
||||||
|
DigerAvanslar BordroProperty
|
||||||
|
DigerKesintiler BordroProperty
|
||||||
|
ZorunluBesKesintisi BordroProperty
|
||||||
|
ZimmetliBilgisayarTamirUcreti BordroProperty
|
||||||
|
HarcTutarlari2 BordroProperty
|
||||||
|
PrimAvansi BordroProperty
|
||||||
|
MasrafKesintisi BordroProperty
|
||||||
|
BireyselEmekPrimi BordroProperty //88
|
||||||
|
OzelsigortaPrimi BordroProperty //89
|
||||||
|
DigerIstisnalar BordroProperty //90
|
||||||
|
}
|
||||||
|
|
||||||
|
func getPageId(id string) string {
|
||||||
|
switch id {
|
||||||
|
case "NormalGun":
|
||||||
|
return "#normalGun0" //Normal Gün
|
||||||
|
case "HaftaTatili":
|
||||||
|
return "#normalGun1" //, "checkbox" Hafta Tatili
|
||||||
|
case "X75":
|
||||||
|
return "" //x7.5
|
||||||
|
case "EksikGunNeden":
|
||||||
|
return "" //Eksik Gün Neden
|
||||||
|
case "ArgeDestekVeTasarim":
|
||||||
|
return "" //ARGE-Destek ve Tasarım Faaliyeti
|
||||||
|
case "FazlaMesai":
|
||||||
|
return "#ekKazancCarpan0" //Fazla Mesai
|
||||||
|
case "GeceMesaisi":
|
||||||
|
return "#ekKazancCarpan1" //Gece Mesaisi
|
||||||
|
case "BayramMesaisi":
|
||||||
|
return "" //Bayram Mesaisi
|
||||||
|
case "Yol":
|
||||||
|
return "#ekKazancCarpan3" //Yol
|
||||||
|
case "YemekGun":
|
||||||
|
return "#ekKazancCarpan4" //Yemek (Gün)
|
||||||
|
case "YemekTutar":
|
||||||
|
return "" //Yemek (Tutar)
|
||||||
|
case "Aile":
|
||||||
|
return "#ekKazancDeger5" //Aile
|
||||||
|
case "Cocuk":
|
||||||
|
return "" //Çocuk
|
||||||
|
case "Evlenme":
|
||||||
|
return "#ekKazancDeger7" //Evlenme
|
||||||
|
case "Dogum":
|
||||||
|
return "#ekKazancDeger8" //Doğum
|
||||||
|
case "Olum":
|
||||||
|
return "#ekKazancDeger9" //Ölüm
|
||||||
|
case "Askerlik":
|
||||||
|
return "#ekKazancDeger10" //Askerlik
|
||||||
|
case "Ozelsigorta":
|
||||||
|
return "#ekKazancDeger11" //Özel Sigorta
|
||||||
|
case "BireyselEmeklilik":
|
||||||
|
return "#ekKazancDeger12" //Bireysel Emeklilik
|
||||||
|
case "HayatSigortasi":
|
||||||
|
return "#ekKazancDeger13" //Hayat Sigortası
|
||||||
|
case "PrimNet":
|
||||||
|
return "#ekKazancDeger14" //Prim (Net)
|
||||||
|
case "PrimBrut":
|
||||||
|
return "#ekKazancDeger15" //Prim (Brüt)
|
||||||
|
case "IkramiyeNet":
|
||||||
|
return "" //İkramiye (Net)
|
||||||
|
case "IkramiyeBrut":
|
||||||
|
return "" //İkramiye (Brüt)
|
||||||
|
case "KıdemTazminatı":
|
||||||
|
return "#ekKazancDeger16" //Kıdem Tazminatı
|
||||||
|
case "IhbarTazminati":
|
||||||
|
return "#ekKazancDeger17" //İhbar Tazminatı
|
||||||
|
case "Bayram":
|
||||||
|
return "#ekKazancDeger18" //Bayram
|
||||||
|
case "Yakacak":
|
||||||
|
return "#ekKazancDeger19" //Yakacak
|
||||||
|
case "HuzurHakki":
|
||||||
|
return "#ekKazancDeger23" //Huzur Hakkı
|
||||||
|
case "HediyeKart":
|
||||||
|
return "" //Hediye Kart*
|
||||||
|
case "YakitKart":
|
||||||
|
return "" //Yakıt Kart*
|
||||||
|
case "YillikIzin":
|
||||||
|
return "" //Yıllık İzin
|
||||||
|
case "MaasFarki":
|
||||||
|
return "" //Maaş Farkı
|
||||||
|
case "AyirilisPaketi":
|
||||||
|
return "" //Ayrılış Paketi
|
||||||
|
case "RamazanKumanyasi":
|
||||||
|
return "" //Ramazan Kumanyası*
|
||||||
|
case "TelefonDesteği":
|
||||||
|
return "#ekKazancDeger21" //Telefon Desteği
|
||||||
|
case "EkOdemeNet":
|
||||||
|
return "" //Ek Ödeme (Net)
|
||||||
|
case "EkOdemeBrut":
|
||||||
|
return "" //Ek Ödeme (Brüt)
|
||||||
|
case "IsAramaIzni":
|
||||||
|
return "" //İş Arama İzni
|
||||||
|
case "Prim2":
|
||||||
|
return "#ekKazancDeger20" //Prim2
|
||||||
|
case "Prim3":
|
||||||
|
return "" //Prim3
|
||||||
|
case "Prim4":
|
||||||
|
return "" //Prim4
|
||||||
|
case "CalismaIzniHarci":
|
||||||
|
return "" //Çalışma İzni Harç. Vb.*
|
||||||
|
case "OzeldurumOdenesi":
|
||||||
|
return "" //Özel Durum Ödemesi
|
||||||
|
case "EmekliSandigiCalisanPrimi":
|
||||||
|
return "" //Emekli Sandığı Çalışan Primi
|
||||||
|
case "LisanTazminati":
|
||||||
|
return "" //Lisan Tazminatı
|
||||||
|
case "OdulOdenesi":
|
||||||
|
return "" //Ödül Ödemesi
|
||||||
|
case "IsSonuTazminati":
|
||||||
|
return "" //İş Sonu Tazminatı
|
||||||
|
case "VergiIstisnasiEkOdeme":
|
||||||
|
return "" //Vergi İstisnası Ek Ödeme
|
||||||
|
case "KresYardimi":
|
||||||
|
return "#ekKazancDeger22" //Kreş Yardımı
|
||||||
|
case "EsnekYanHak":
|
||||||
|
return "" //Esnek Yan Hak
|
||||||
|
case "AracKullanim":
|
||||||
|
return "" //Araç Kullanım
|
||||||
|
case "EgitimDesteği":
|
||||||
|
return "" //Eğitim Desteği
|
||||||
|
case "DelegeUcreti":
|
||||||
|
return "" //Delege Ücreti
|
||||||
|
case "HarcTutarlari":
|
||||||
|
return "" //Harç Tutarları*
|
||||||
|
case "SendikaIscilikFarkUcretleri":
|
||||||
|
return "" //Sendika İşçilik Fark Ücretleri
|
||||||
|
case "IsinmaDesteği":
|
||||||
|
return "" //Isınma Desteği
|
||||||
|
case "SoforlukMesaisi":
|
||||||
|
return "" //Şoförlük Mesaisi
|
||||||
|
case "Avans":
|
||||||
|
return "" //Avans
|
||||||
|
case "Icra":
|
||||||
|
return "" //icra
|
||||||
|
case "Sendika":
|
||||||
|
return "" //Sendika
|
||||||
|
case "HediyeKart2":
|
||||||
|
return "" //Hediye Kart
|
||||||
|
case "YemekAyni":
|
||||||
|
return "" //Yemek (Ayni)
|
||||||
|
case "RamazanKumanyasiAyni":
|
||||||
|
return "" //Ramazan Kumanyası (Ayni)
|
||||||
|
case "BagimliOSSKesintisi":
|
||||||
|
return "" //Bağımlı (Eş-Çocuk) ÖSS Kesintisi
|
||||||
|
case "CalismaIzniHarciAyni":
|
||||||
|
return "" //Çalışma İzni Harç. Vb.(Ayni)
|
||||||
|
case "TrafikCezasiKesintisi":
|
||||||
|
return "" //Trafik Cezası Kesintisi
|
||||||
|
case "BesKesintisi":
|
||||||
|
return ""
|
||||||
|
case "YakitKart2":
|
||||||
|
return ""
|
||||||
|
case "GrupBesPersonelPayiKesintisi":
|
||||||
|
return ""
|
||||||
|
case "IstisnadanKaynaklananKesinti":
|
||||||
|
return ""
|
||||||
|
case "EmekliSandigiCalisanPrimKesintisi":
|
||||||
|
return ""
|
||||||
|
case "PesinYillikIzinKesintisi":
|
||||||
|
return ""
|
||||||
|
case "TelefonLimitAsimKesintisi":
|
||||||
|
return ""
|
||||||
|
case "ZimmetTamirKesintisi":
|
||||||
|
return ""
|
||||||
|
case "YakitAsimKesintisi":
|
||||||
|
return ""
|
||||||
|
case "DigerAvanslar":
|
||||||
|
return ""
|
||||||
|
case "DigerKesintiler":
|
||||||
|
return ""
|
||||||
|
case "ZorunluBesKesintisi":
|
||||||
|
return ""
|
||||||
|
case "ZimmetliBilgisayarTamirUcreti":
|
||||||
|
return ""
|
||||||
|
case "HarcTutarlari2":
|
||||||
|
return ""
|
||||||
|
case "PrimAvansi":
|
||||||
|
return ""
|
||||||
|
case "MasrafKesintisi":
|
||||||
|
return ""
|
||||||
|
case "BireyselEmekPrimi":
|
||||||
|
return "#bireyselEmeklilikIstisna"
|
||||||
|
case "OzelsigortaPrimi":
|
||||||
|
return "#ozelSigortaIstisna"
|
||||||
|
case "DigerIstisnalar":
|
||||||
|
return "#digerIstisna"
|
||||||
|
default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// func (b *Bordro) FillBordroForm(rodForm *rod.Page) error {
|
||||||
|
// objValue := reflect.ValueOf(b).Elem()
|
||||||
|
// objType := objValue.Type()
|
||||||
|
// for i := 0; i < objValue.NumField(); i++ {
|
||||||
|
// field := objValue.Field(i)
|
||||||
|
// fieldName := objType.Field(i).Name
|
||||||
|
// valueField := field.FieldByName("Value")
|
||||||
|
// idField := field.FieldByName("Id")
|
||||||
|
// idValue := idField.Interface().(string)
|
||||||
|
// if idValue != "" {
|
||||||
|
// elem, err := rodForm.Element(idField.Interface().(string))
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// value := valueField.Interface().(string)
|
||||||
|
// // switch expression {
|
||||||
|
// // case "input":
|
||||||
|
// // //elem.Input(value)
|
||||||
|
|
||||||
|
// // }
|
||||||
|
// elem.Input(value)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fmt.Print(fieldName)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
|
||||||
|
// BordroProperty structının tipi de olabilir drop checkbox vs ayrı bir fonksiyon çalışabilir getPageId den dönebilirsin
|
||||||
|
func NewFromExcelLine(rows []string) (*Bordro, error) {
|
||||||
|
bordro := Bordro{} // Yeni bir Bordro örneği oluştur
|
||||||
|
//her indexi eşitleyebilirsin bordro objesine veya tek
|
||||||
|
// Iterate over the fields of MyStruct
|
||||||
|
objValue := reflect.ValueOf(&bordro).Elem()
|
||||||
|
objType := objValue.Type()
|
||||||
|
for i := 0; i < objValue.NumField(); i++ {
|
||||||
|
field := objValue.Field(i)
|
||||||
|
fieldName := objType.Field(i).Name
|
||||||
|
indexField := field.FieldByName("Index")
|
||||||
|
valueField := field.FieldByName("Value")
|
||||||
|
idField := field.FieldByName("Id")
|
||||||
|
|
||||||
|
if len(rows) > i {
|
||||||
|
indexField.SetInt(int64(i))
|
||||||
|
valueField.SetString(rows[i])
|
||||||
|
idField.SetString(getPageId(fieldName))
|
||||||
|
} else {
|
||||||
|
indexField.SetInt(int64(i))
|
||||||
|
valueField.SetString("")
|
||||||
|
idField.SetString(getPageId(fieldName))
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Print(field)
|
||||||
|
fmt.Print(fieldName)
|
||||||
|
}
|
||||||
|
fmt.Print(objType)
|
||||||
|
//bordro.Sube = ExcelCellValue{ExcelIndex: 0}
|
||||||
|
|
||||||
|
return &bordro, nil
|
||||||
|
|
||||||
|
}
|
||||||
BIN
app/lib/ocr.rar
Normal file
65
app/lib/ocr/geminiCaptcha.go
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package ocr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/carlmjohnson/requests"
|
||||||
|
)
|
||||||
|
|
||||||
|
func DecodeGeminiCaptcha(ctx context.Context, image []byte, typ string) (string, error) {
|
||||||
|
var captchaResult string
|
||||||
|
var errBody string
|
||||||
|
|
||||||
|
url := "https://notvis.notitek.com.tr" + "/api/captcha/gemini"
|
||||||
|
|
||||||
|
err := requests.
|
||||||
|
URL(url).
|
||||||
|
Header("X-Api-Key", "3c43c4eb-4b5d-4636-8dd5-3d573a7a0a27").
|
||||||
|
//Header("Content-Type", "application/json").
|
||||||
|
//Header("Authorization", "Bearer "+l.sessionID).
|
||||||
|
BodyBytes(image).
|
||||||
|
ToString(&captchaResult).
|
||||||
|
Method("POST").
|
||||||
|
AddValidator(
|
||||||
|
requests.ValidatorHandler(
|
||||||
|
requests.DefaultValidator,
|
||||||
|
requests.ToString(&errBody),
|
||||||
|
)).
|
||||||
|
Fetch(ctx)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, requests.ErrInvalidHandled) {
|
||||||
|
err = errors.New(errBody)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return captchaResult, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func DecodeTwoCaptcha(ctx context.Context, image []byte, typ string) (string, error) {
|
||||||
|
var captchaResult string
|
||||||
|
var errBody string
|
||||||
|
|
||||||
|
url := "https://notvis.notitek.com.tr" + "/api/captcha/twoCaptcha"
|
||||||
|
|
||||||
|
err := requests.
|
||||||
|
URL(url).
|
||||||
|
Header("X-Api-Key", "3c43c4eb-4b5d-4636-8dd5-3d573a7a0a27").
|
||||||
|
BodyBytes(image).
|
||||||
|
ToString(&captchaResult).
|
||||||
|
Method("POST").
|
||||||
|
AddValidator(
|
||||||
|
requests.ValidatorHandler(
|
||||||
|
requests.DefaultValidator,
|
||||||
|
requests.ToString(&errBody),
|
||||||
|
)).
|
||||||
|
Fetch(ctx)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, requests.ErrInvalidHandled) {
|
||||||
|
err = errors.New(errBody)
|
||||||
|
}
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return captchaResult, err
|
||||||
|
}
|
||||||
12
app/lib/ocr/readpdf-75de5191c083.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"type": "service_account",
|
||||||
|
"project_id": "readpdf-247814",
|
||||||
|
"private_key_id": "75de5191c0835028caf9413f8023f26e353064f8",
|
||||||
|
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJ0D23gU4luBgN\nRUmhL9h1qaBqNcv5KGPYUjDcdCGTixea8nOkOxZwYLmKU3VpEmizAAxe2zVrTH0J\nalJwW+u6UUKrgIDbV68/IzYKKKQ7HwrpVnjh0T8kSFTCsfoCcTAmhlFLvHtQBUdU\nxl1E5X+Ckp3K2LOZwi5lrlK3VttSuzFTWmQ2ZMjeEdxwPjsyTsM8XWQ+SQUoPYFj\nuLcqHFf8caZFPWXrxXluTOcJOl/N5OAvObrftUz2stNnwhuPI7648umzdeAuMWGW\nrRd0ZTPDtH0xx56nvSoghNREw9imNVKIlUPwSwCBZ5iNH6fiTO5IdeDG9qWf/STJ\nwVvaDj1xAgMBAAECggEAAdCVktOJgwf8xLcddQ2bwghxy4K1qtqUy0Ux8J7lY7uZ\nzWg7Z1FWClH/A8zBqYg42M3ko+sPYpT1gDgsivDIqzbqhTr1QwOu17/WpJC+U/8b\nd1hdDerLyTpn82LrqfSf8ji9p74Hfdi4+NIv1IbGdsN1bSA1vT7kcUBNY3NXKuSa\nm5ceq6cSzuPH8qxjgkMIxxARCQtNVksMk8lIBoXNk4xxBgGnOwgHWEK9bGarPXZO\n8Z9ruWHCAJL1fiXjyJbVhdz4q8euVdR10KpF+u0/lHx2JMlLBPuIDlC8sxpwX+/V\nSw5wFziGETJiiRgkKxEqKIt/WvjHxDHWkaNZPcXkgQKBgQD0rJvKn4/oS/4kECFo\nAPFZs7uHiMDuTKh9P4aE7Pu1b3sEXAfsjMk3N5j1eV8ACFLzOfCjAStue1MFj81S\nz4dl9NBRNUdE+uTORmiX/Ch2t6bSlKNi8CdkHHKAs6kVk2Wr2XBD0fYKEmGkuh++\nMenBPZuOBjSULy4v1wumW/2UTQKBgQDTJ7tNFzt7hMoW3/djasIHUdJ4m1JZWa1A\n4fDUfvCFARUUr0k1TxcHAtQ5wQwue+uF5J7OixI+xavwHSXBTPQLbn2V2Ypbaa/F\nNr63IR2IKrtwJzt8LTXBvREESajjolvb31Vxf14/0nJgW67bjaLu5/Yq3/mjjRIZ\nqg7PpdNvtQKBgQCD8PTOLn9/CEPTFLO/DwsXkVmmO/O2TbZqXDBhTB5sd+KBtlM7\nl6wGT7/3V+0H6nU43lzKuh2+pVhe3m4dovXj4EHaGP4Gz7lFFyjeFMeJRX37ftYg\ny1qinMiOaNPcY7DnHAlzOS0Rv1nSZ+AoQ2hHob5ZtzTxWAPzHmcU3fR/3QKBgQC8\nJOvcffXvUlurVDafa/GlCgAKnQMcQC6C4I9xGAaBzHwXKTSG/ojbI2csatnK1Xn/\nnLzv9rT0H7fbRG1utn3BbdsS2XpRh3Mpu2Tl0ej5enH3Nc3oEHSUwz1VX7jP08wb\ntvzwG3hET+S//RFp6eMjEqaif111oG5fVcrKtMwX/QKBgCCTlt3lBaZPuUInLEIK\nNRqR7iZnepJsDUMYJj/T/zg+JL0novWViVEQaFB88soNGXjV6WRmytlUDi3PpNe/\nswfxQICn+ylZtYD8VoHL1+l9kDBVUQlKmZuMgh8YKEWKHoAok5gZYedB4Gtte1XQ\n+ase2cuWUegX3FAlcMf3GBqE\n-----END PRIVATE KEY-----\n",
|
||||||
|
"client_email": "my-vision-sa@readpdf-247814.iam.gserviceaccount.com",
|
||||||
|
"client_id": "101714157123021750580",
|
||||||
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||||
|
"token_uri": "https://oauth2.googleapis.com/token",
|
||||||
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||||
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-vision-sa%40readpdf-247814.iam.gserviceaccount.com"
|
||||||
|
}
|
||||||
BIN
app/lib/ocr/screenshot.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
67
app/lib/ocr/visionapi.go
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
package ocr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"google.golang.org/api/option"
|
||||||
|
|
||||||
|
vision "cloud.google.com/go/vision/apiv1"
|
||||||
|
)
|
||||||
|
|
||||||
|
var credsPath = "C:/Users/huseyin/Desktop/project/notitek/BordroRobot/app/lib/ocr/readpdf-75de5191c083.json"
|
||||||
|
|
||||||
|
func detectText(filePath string) ([]string, error) {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
client, err := vision.NewImageAnnotatorClient(ctx, option.WithCredentialsFile(credsPath))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("ImageAnnotatorClient oluşturulamadı: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("Dosya açılamadı: %v", err)
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
image, err := vision.NewImageFromReader(f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("Resim oluşturulamadı: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
annotations, err := client.DetectTexts(ctx, image, nil, 10)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("Metin tespit edilemedi: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
res := make([]string, 0)
|
||||||
|
if len(annotations) == 0 {
|
||||||
|
return nil, fmt.Errorf("Metin tespit edilemedi: %v", err)
|
||||||
|
} else {
|
||||||
|
fmt.Println("Metin:")
|
||||||
|
for _, annotation := range annotations {
|
||||||
|
// fmt.Println(annotation)
|
||||||
|
res = append(res, annotation.Description)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func VisionApi(path string) ([]string, error) {
|
||||||
|
filePath := path // Örnek bir dosya yolu
|
||||||
|
|
||||||
|
resp, err := detectText(filePath)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Metin tespit edilemedi: %v\n", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, txt := range resp {
|
||||||
|
fmt.Println(txt)
|
||||||
|
}
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
package run
|
package run
|
||||||
|
|
||||||
import "github.com/wailsapp/wails/v3/pkg/application"
|
import "github.com/wailsapp/wails/v3/pkg/application"
|
||||||
|
|
||||||
var APP *application.App
|
var APP *application.App
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ func InitDB(path string) error {
|
|||||||
|
|
||||||
companySchema := `
|
companySchema := `
|
||||||
create table company (
|
create table company (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
name text not null unique,
|
name text not null unique,
|
||||||
member_number text not null,
|
member_number text not null,
|
||||||
username text not null,
|
username text not null,
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package srv
|
package srv
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bordrobot/lib/bot"
|
||||||
"bordrobot/lib/company"
|
"bordrobot/lib/company"
|
||||||
"bordrobot/lib/run"
|
"bordrobot/lib/run"
|
||||||
|
"fmt"
|
||||||
|
"log/slog"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
"github.com/wailsapp/wails/v3/pkg/application"
|
"github.com/wailsapp/wails/v3/pkg/application"
|
||||||
"github.com/xuri/excelize/v2"
|
"github.com/xuri/excelize/v2"
|
||||||
"log/slog"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Srv struct {
|
type Srv struct {
|
||||||
@@ -28,10 +33,25 @@ func (s *Srv) CreateCompany(name, memberNumber, username, password string) error
|
|||||||
|
|
||||||
return c.Create()
|
return c.Create()
|
||||||
}
|
}
|
||||||
|
func (s *Srv) EditCompany(id float64, name, memberNumber, username, password string) error {
|
||||||
|
c := &company.Company{
|
||||||
|
Id: int(id),
|
||||||
|
Name: name,
|
||||||
|
MemberNumber: memberNumber,
|
||||||
|
Username: username,
|
||||||
|
Password: password,
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Edit()
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Srv) UploadExcel() string {
|
func (s *Srv) UploadExcel() string {
|
||||||
dialog := application.OpenFileDialog()
|
dialog := application.OpenFileDialog()
|
||||||
dialog.AddFilter("Excel Dosyaları", "*.xls;*.xlsx")
|
// dialog.AddFilter("Excel Dosyaları", "*.xls;*.xlsx;*.ods")
|
||||||
|
dialog.AddFilter("Excel 97-2003", "*.xls")
|
||||||
|
dialog.AddFilter("Excel 2007+", "*.xlsx")
|
||||||
|
dialog.AddFilter("LibreOffice Calc", "*.ods")
|
||||||
|
|
||||||
dialog.SetTitle("Bordro Excel Dosyası Yükleme")
|
dialog.SetTitle("Bordro Excel Dosyası Yükleme")
|
||||||
file, err := dialog.PromptForSingleSelection()
|
file, err := dialog.PromptForSingleSelection()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -41,11 +61,38 @@ func (s *Srv) UploadExcel() string {
|
|||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
type userInfo struct {
|
||||||
//todo: readb company details by name
|
userName string
|
||||||
//todo: save xls to application folder as /name/year/month.xlsx
|
password string
|
||||||
|
accountNo string
|
||||||
|
}
|
||||||
|
|
||||||
//wails nümerik değerleri float gönderiyor.. int gönderimi araştırılmalı
|
func (s *Srv) Rpa(companyID float64, month float64, year float64, devMode bool) error {
|
||||||
|
type CompanyInfo struct {
|
||||||
|
company *company.Company // float64.Company türünü gömme
|
||||||
|
month float64 // yeni bir alan ekliyoruz
|
||||||
|
year float64
|
||||||
|
}
|
||||||
|
user, err := company.GetCompany(companyID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// companyInfo := CompanyInfo{
|
||||||
|
// company: &user,
|
||||||
|
// month: month,
|
||||||
|
// year: year,
|
||||||
|
// }
|
||||||
|
|
||||||
|
//todo: readb company details by name
|
||||||
|
b := bot.NewLucaBot(devMode)
|
||||||
|
emitLog("Aktarım Başladı")
|
||||||
|
err = b.Login(user, month, year)
|
||||||
|
if err != nil {
|
||||||
|
//todo: inform user about process and errors
|
||||||
|
emitLog("Şifreniz Hatalı")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
err = b.PayrollPageLogin()
|
||||||
slog.Debug("inputs", "year", year, "month", month)
|
slog.Debug("inputs", "year", year, "month", month)
|
||||||
|
|
||||||
f, err := excelize.OpenFile(s.xlsFileName)
|
f, err := excelize.OpenFile(s.xlsFileName)
|
||||||
@@ -62,21 +109,170 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
sheets := f.GetSheetList()
|
sheets := f.GetSheetList()
|
||||||
cols, err := f.GetCols(sheets[0])
|
rows, err := f.GetRows(sheets[0])
|
||||||
|
fmt.Println(rows)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error(err.Error())
|
slog.Error(err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for _, row := range cols {
|
if len(rows) < 3 {
|
||||||
//todo: process excel and do data input
|
emitLog("Boş Excel Yüklemesi")
|
||||||
|
b.ClosingBrowserFromExternalLink()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// if rows[0][0] == "" {
|
||||||
|
// rows = rows[1:]
|
||||||
|
// }
|
||||||
|
// type hashtagValue struct {
|
||||||
|
// B string
|
||||||
|
// N string
|
||||||
|
// G string
|
||||||
|
// S string
|
||||||
|
// }
|
||||||
|
// checkHeader := make(map[string]*hashtagValue)
|
||||||
|
|
||||||
//todo: inform user about process and errors
|
// for _, col := range rows[0] {
|
||||||
run.APP.Events.Emit(&application.WailsEvent{
|
// if strings.Contains(col, "Cagatay") {
|
||||||
Name: "logProcess",
|
// fmt.Print("deneme")
|
||||||
Data: row[1],
|
// }
|
||||||
})
|
// var keySplitOne string
|
||||||
|
// hs := &hashtagValue{
|
||||||
|
// B: "",
|
||||||
|
// N: "",
|
||||||
|
// G: "",
|
||||||
|
// S: "",
|
||||||
|
// }
|
||||||
|
// key := col
|
||||||
|
// if strings.Contains(col, "#") {
|
||||||
|
// keySplit := strings.SplitN(col, " #", 2)
|
||||||
|
// key = strings.TrimSpace(keySplit[0])
|
||||||
|
// keySplitOne = strings.TrimSpace(keySplit[0])
|
||||||
|
// fmt.Print(keySplitOne)
|
||||||
|
// if existingHS, ok := checkHeader[key]; ok {
|
||||||
|
// hs = existingHS
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Burada keySplitOne değerine göre hs struct'ının hangi alanını dolduracağımızı belirliyoruz
|
||||||
|
// if keySplit[1] == "B" {
|
||||||
|
// hs.B = keySplit[1]
|
||||||
|
// } else if keySplit[1] == "N" {
|
||||||
|
// hs.N = keySplit[1]
|
||||||
|
// } else if keySplit[1] == "G" {
|
||||||
|
// hs.G = keySplit[1]
|
||||||
|
// } else if keySplit[1] == "S" {
|
||||||
|
// hs.S = keySplit[1]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// checkHeader[key] = hs
|
||||||
|
|
||||||
|
// }
|
||||||
|
var lastItem bool = false
|
||||||
|
// data := make([]*model.Bordro, 0) // []*Bordro türünde bir dilim oluştur
|
||||||
|
for i := 1; i < len(rows); i++ {
|
||||||
|
brd := &bot.LucaBordro{
|
||||||
|
Sube: rows[i][0],
|
||||||
|
Bolum: rows[i][1],
|
||||||
|
TcNo: rows[i][2],
|
||||||
|
AdSoyad: rows[i][3],
|
||||||
|
Ucretler: make(map[string]decimal.Decimal),
|
||||||
|
//Header: make(map[string]string),
|
||||||
|
}
|
||||||
|
var status bool = false
|
||||||
|
//var ExcelError string
|
||||||
|
for ndx, col := range rows[i] {
|
||||||
|
if ndx > 3 {
|
||||||
|
key := rows[0][ndx]
|
||||||
|
|
||||||
|
if strings.Contains(key, "#") {
|
||||||
|
keySplit := strings.SplitN(key, " #", 2)
|
||||||
|
keySplitOne := strings.TrimSpace(keySplit[0])
|
||||||
|
tseK := strings.TrimSpace(keySplit[1])
|
||||||
|
fmt.Print(tseK)
|
||||||
|
for k, d := range brd.Ucretler {
|
||||||
|
if strings.Contains(k, keySplitOne) { //k=olan
|
||||||
|
a := d.String()
|
||||||
|
fmt.Print(a)
|
||||||
|
if strings.Contains(k, "B") && strings.Contains(tseK, "N") {
|
||||||
|
if col != "" && a != "0" {
|
||||||
|
emitLog(key + " : aynı anda B ve N Sütunu Girilemez ")
|
||||||
|
status = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if strings.Contains(k, "N") && strings.Contains(tseK, "B") {
|
||||||
|
if col != "" && a != "0" {
|
||||||
|
emitLog(key + " : aynı anda N ve B Sütunu Girilemez ")
|
||||||
|
status = true
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if strings.Contains(k, "G") && strings.Contains(tseK, "S") {
|
||||||
|
if col != "" && a != "0" {
|
||||||
|
emitLog(key + ": aynı anda G ve S Sütunu Girilemez ")
|
||||||
|
status = true
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if strings.Contains(k, "S") && strings.Contains(tseK, "G") {
|
||||||
|
if col != "" && a != "0" {
|
||||||
|
emitLog(key + ": aynı anda S ve G Sütunu Girilemez ")
|
||||||
|
status = true
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if status {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
brd.Ucretler[key], err = decimal.NewFromString(col)
|
||||||
|
if err != nil {
|
||||||
|
if strings.Contains(col, ",") {
|
||||||
|
col = strings.Replace(col, ",", "", -1)
|
||||||
|
brd.Ucretler[key], err = decimal.NewFromString(col)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Print(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// emitLog(`excel okunurken sorun oluştu`)
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if status {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if i == len(rows)-1 {
|
||||||
|
lastItem = true
|
||||||
|
}
|
||||||
|
err := b.BordroYaz(int(month), int(year), brd, lastItem)
|
||||||
|
var str string
|
||||||
|
if err != nil {
|
||||||
|
emitLog("Şube : " + brd.Sube + "Bölüm : " + brd.Bolum + "Kullanıcı Adı: " + brd.AdSoyad + err.Error())
|
||||||
|
|
||||||
|
} else {
|
||||||
|
str = "Şube : " + brd.Sube + "Bölüm : " + brd.Bolum + "işlem başarılı, " + "Kullanıcı Adı: " + brd.AdSoyad
|
||||||
|
emitLog(str)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
emitLog("İşlem Tamamlandı")
|
||||||
|
b.ClosingBrowserFromExternalLink()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func emitLog(logMessage string) {
|
||||||
|
run.APP.Events.Emit(&application.WailsEvent{
|
||||||
|
Name: "logProcess",
|
||||||
|
Data: logMessage,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
type LoginUser struct {
|
type LoginUser struct {
|
||||||
UserName string
|
UserName string
|
||||||
password string
|
password string
|
||||||
Token string
|
Token string
|
||||||
LoggedIn bool
|
LoggedIn bool
|
||||||
}
|
}
|
||||||
type LoginService struct{}
|
type LoginService struct{}
|
||||||
|
|
||||||
func (g *LoginService) Login(userName string, password string) LoginUser {
|
func (g *LoginService) Login(userName string, password string) LoginUser {
|
||||||
return LoginUser{password: password, UserName: userName, Token: "test", LoggedIn: true}
|
return LoginUser{password: password, UserName: userName, Token: "test", LoggedIn: true}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ import (
|
|||||||
"bordrobot/lib/run"
|
"bordrobot/lib/run"
|
||||||
"bordrobot/lib/srv"
|
"bordrobot/lib/srv"
|
||||||
"embed"
|
"embed"
|
||||||
"github.com/wailsapp/wails/v3/pkg/application"
|
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
|
"github.com/wailsapp/wails/v3/pkg/application"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Wails uses Go's `embed` package to embed the frontend files into the binary.
|
// Wails uses Go's `embed` package to embed the frontend files into the binary.
|
||||||
|
|||||||
BIN
app/processFolder/screenshot.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
app/sadasdads.zip
Normal file
BIN
app/screenshot.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "Vue + Vite",
|
"name": "Vue + Vite",
|
||||||
"shortname": "vue",
|
"shortname": "vue",
|
||||||
"author": "Lea Anthony",
|
"author": "Lea Anthony",
|
||||||
"description": "Vue + Vite development server",
|
"description": "Vue + Vite development server",
|
||||||
"helpurl": "https://wails.io",
|
"helpurl": "https://wails.io",
|
||||||
"version": 3
|
"version": 3
|
||||||
}
|
}
|
||||||