feat: draft of excel export
This commit is contained in:
@@ -1 +1 @@
|
|||||||
1a407d8a115d4dcba0f64a4a4e445309
|
e0088cba993d74efbca325beafeb26e0
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ddc4b88644fe1db1c146bd0cc127cf98
|
7923625c15ebc662cfde019f067dedd9
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ff91e2561ee95f47290ca5b41d1bc0ec
|
2f8bbf1ef861a77d4c55b91b044d0028
|
||||||
|
|||||||
@@ -5,6 +5,9 @@
|
|||||||
// @ts-ignore: Unused imports
|
// @ts-ignore: Unused imports
|
||||||
import {Create as $Create} from "@wailsio/runtime";
|
import {Create as $Create} from "@wailsio/runtime";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author A sample of comment
|
||||||
|
*/
|
||||||
export class Author {
|
export class Author {
|
||||||
"Id": number;
|
"Id": number;
|
||||||
"Name": string;
|
"Name": string;
|
||||||
@@ -33,6 +36,7 @@ export class Author {
|
|||||||
export class Post {
|
export class Post {
|
||||||
"Id": number;
|
"Id": number;
|
||||||
"Text": string;
|
"Text": string;
|
||||||
|
"CreatedAt": number;
|
||||||
|
|
||||||
/** Creates a new Post instance. */
|
/** Creates a new Post instance. */
|
||||||
constructor($$source: Partial<Post> = {}) {
|
constructor($$source: Partial<Post> = {}) {
|
||||||
@@ -42,6 +46,9 @@ export class Post {
|
|||||||
if (!("Text" in $$source)) {
|
if (!("Text" in $$source)) {
|
||||||
this["Text"] = "";
|
this["Text"] = "";
|
||||||
}
|
}
|
||||||
|
if (!("CreatedAt" in $$source)) {
|
||||||
|
this["CreatedAt"] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
Object.assign(this, $$source);
|
Object.assign(this, $$source);
|
||||||
}
|
}
|
||||||
|
|||||||
4
frontend/bindings/time/index.ts
Normal file
4
frontend/bindings/time/index.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
export * from "./models.js";
|
||||||
51
frontend/bindings/time/models.ts
Normal file
51
frontend/bindings/time/models.ts
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
||||||
|
// This file is automatically generated. DO NOT EDIT
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
|
// @ts-ignore: Unused imports
|
||||||
|
import {Create as $Create} from "@wailsio/runtime";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Time represents an instant in time with nanosecond precision.
|
||||||
|
*
|
||||||
|
* Programs using times should typically store and pass them as values,
|
||||||
|
* not pointers. That is, time variables and struct fields should be of
|
||||||
|
* type time.Time, not *time.Time.
|
||||||
|
*
|
||||||
|
* A Time value can be used by multiple goroutines simultaneously except
|
||||||
|
* that the methods GobDecode, UnmarshalBinary, UnmarshalJSON and
|
||||||
|
* UnmarshalText are not concurrency-safe.
|
||||||
|
*
|
||||||
|
* Time instants can be compared using the Before, After, and Equal methods.
|
||||||
|
* The Sub method subtracts two instants, producing a Duration.
|
||||||
|
* The Add method adds a Time and a Duration, producing a Time.
|
||||||
|
*
|
||||||
|
* The zero value of type Time is January 1, year 1, 00:00:00.000000000 UTC.
|
||||||
|
* As this time is unlikely to come up in practice, the IsZero method gives
|
||||||
|
* a simple way of detecting a time that has not been initialized explicitly.
|
||||||
|
*
|
||||||
|
* Each time has an associated Location. The methods Local, UTC, and In return a
|
||||||
|
* Time with a specific Location. Changing the Location of a Time value with
|
||||||
|
* these methods does not change the actual instant it represents, only the time
|
||||||
|
* zone in which to interpret it.
|
||||||
|
*
|
||||||
|
* Representations of a Time value saved by the GobEncode, MarshalBinary,
|
||||||
|
* MarshalJSON, and MarshalText methods store the Time.Location's offset, but not
|
||||||
|
* the location name. They therefore lose information about Daylight Saving Time.
|
||||||
|
*
|
||||||
|
* In addition to the required “wall clock” reading, a Time may contain an optional
|
||||||
|
* reading of the current process's monotonic clock, to provide additional precision
|
||||||
|
* for comparison or subtraction.
|
||||||
|
* See the “Monotonic Clocks” section in the package documentation for details.
|
||||||
|
*
|
||||||
|
* Note that the Go == operator compares not just the time instant but also the
|
||||||
|
* Location and the monotonic clock reading. Therefore, Time values should not
|
||||||
|
* be used as map or database keys without first guaranteeing that the
|
||||||
|
* identical Location has been set for all values, which can be achieved
|
||||||
|
* through use of the UTC or Local method, and that the monotonic clock reading
|
||||||
|
* has been stripped by setting t = t.Round(0). In general, prefer t.Equal(u)
|
||||||
|
* to t == u, since t.Equal uses the most accurate comparison available and
|
||||||
|
* correctly handles the case when only one of its arguments has a monotonic
|
||||||
|
* clock reading.
|
||||||
|
*/
|
||||||
|
export type Time = any;
|
||||||
File diff suppressed because one or more lines are too long
2
frontend/dist/index.html
vendored
2
frontend/dist/index.html
vendored
@@ -6,7 +6,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link rel="stylesheet" href="/style.css" />
|
<link rel="stylesheet" href="/style.css" />
|
||||||
<title>Wails + Vue + TS</title>
|
<title>Wails + Vue + TS</title>
|
||||||
<script type="module" crossorigin src="/assets/index-oNxRZnbe.js"></script>
|
<script type="module" crossorigin src="/assets/index-CeF7Es-a.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-bq12HDyQ.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-bq12HDyQ.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
10
frontend/node_modules/.vite/deps/_metadata.json
generated
vendored
10
frontend/node_modules/.vite/deps/_metadata.json
generated
vendored
@@ -1,19 +1,19 @@
|
|||||||
{
|
{
|
||||||
"hash": "257bd7a5",
|
"hash": "63964395",
|
||||||
"configHash": "b9bde7bc",
|
"configHash": "d64a9a31",
|
||||||
"lockfileHash": "21c581ed",
|
"lockfileHash": "21c581ed",
|
||||||
"browserHash": "d3139d3b",
|
"browserHash": "f28abe22",
|
||||||
"optimized": {
|
"optimized": {
|
||||||
"@wailsio/runtime": {
|
"@wailsio/runtime": {
|
||||||
"src": "../../@wailsio/runtime/src/index.js",
|
"src": "../../@wailsio/runtime/src/index.js",
|
||||||
"file": "@wailsio_runtime.js",
|
"file": "@wailsio_runtime.js",
|
||||||
"fileHash": "aba6d6fb",
|
"fileHash": "b57ae746",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
},
|
},
|
||||||
"vue": {
|
"vue": {
|
||||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||||
"file": "vue.js",
|
"file": "vue.js",
|
||||||
"fileHash": "cec76e90",
|
"fileHash": "616b6ec4",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
1620
frontend/node_modules/.vite/deps_temp_e0499671/@wailsio_runtime.js
generated
vendored
Normal file
1620
frontend/node_modules/.vite/deps_temp_e0499671/@wailsio_runtime.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
frontend/node_modules/.vite/deps_temp_e0499671/@wailsio_runtime.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps_temp_e0499671/@wailsio_runtime.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
10
frontend/node_modules/.vite/deps_temp_e0499671/chunk-PZ5AY32C.js
generated
vendored
Normal file
10
frontend/node_modules/.vite/deps_temp_e0499671/chunk-PZ5AY32C.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
|
||||||
|
export {
|
||||||
|
__export
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=chunk-PZ5AY32C.js.map
|
||||||
7
frontend/node_modules/.vite/deps_temp_e0499671/chunk-PZ5AY32C.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps_temp_e0499671/chunk-PZ5AY32C.js.map
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"sources": [],
|
||||||
|
"sourcesContent": [],
|
||||||
|
"mappings": "",
|
||||||
|
"names": []
|
||||||
|
}
|
||||||
3
frontend/node_modules/.vite/deps_temp_e0499671/package.json
generated
vendored
Normal file
3
frontend/node_modules/.vite/deps_temp_e0499671/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"type": "module"
|
||||||
|
}
|
||||||
12543
frontend/node_modules/.vite/deps_temp_e0499671/vue.js
generated
vendored
Normal file
12543
frontend/node_modules/.vite/deps_temp_e0499671/vue.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
frontend/node_modules/.vite/deps_temp_e0499671/vue.js.map
generated
vendored
Normal file
7
frontend/node_modules/.vite/deps_temp_e0499671/vue.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
frontend/node_modules/esbuild/lib/downloaded-@esbuild-linux-x64-esbuild
generated
vendored
Executable file
BIN
frontend/node_modules/esbuild/lib/downloaded-@esbuild-linux-x64-esbuild
generated
vendored
Executable file
Binary file not shown.
6
go.mod
6
go.mod
@@ -6,6 +6,7 @@ toolchain go1.23.4
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3
|
github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3
|
||||||
|
github.com/xuri/excelize/v2 v2.9.0
|
||||||
gorm.io/driver/sqlite v1.5.0
|
gorm.io/driver/sqlite v1.5.0
|
||||||
gorm.io/gen v0.3.26
|
gorm.io/gen v0.3.26
|
||||||
gorm.io/gorm v1.25.12
|
gorm.io/gorm v1.25.12
|
||||||
@@ -42,8 +43,11 @@ require (
|
|||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-sqlite3 v1.14.16 // indirect
|
github.com/mattn/go-sqlite3 v1.14.16 // indirect
|
||||||
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
|
||||||
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
||||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
|
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
|
||||||
|
github.com/richardlehane/mscfb v1.0.4 // indirect
|
||||||
|
github.com/richardlehane/msoleps v1.0.4 // indirect
|
||||||
github.com/rivo/uniseg v0.4.7 // indirect
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
github.com/samber/lo v1.38.1 // indirect
|
github.com/samber/lo v1.38.1 // indirect
|
||||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||||
@@ -51,6 +55,8 @@ require (
|
|||||||
github.com/wailsapp/go-webview2 v1.0.18 // indirect
|
github.com/wailsapp/go-webview2 v1.0.18 // indirect
|
||||||
github.com/wailsapp/mimetype v1.4.1 // indirect
|
github.com/wailsapp/mimetype v1.4.1 // indirect
|
||||||
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||||
|
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect
|
||||||
|
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect
|
||||||
golang.org/x/crypto v0.30.0 // indirect
|
golang.org/x/crypto v0.30.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
||||||
golang.org/x/mod v0.22.0 // indirect
|
golang.org/x/mod v0.22.0 // indirect
|
||||||
|
|||||||
15
go.sum
15
go.sum
@@ -100,6 +100,8 @@ github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwp
|
|||||||
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
||||||
github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA=
|
github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA=
|
||||||
github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
|
github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
|
||||||
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
|
||||||
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
||||||
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||||
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
||||||
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
|
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
|
||||||
@@ -110,6 +112,11 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
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/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
||||||
|
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
|
||||||
|
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||||
|
github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00=
|
||||||
|
github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
@@ -135,6 +142,12 @@ github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3 h1:9aCL0IXD60A5iscQ/ps6f3ti3IlaoG6
|
|||||||
github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3/go.mod h1:9Ca1goy5oqxmy8Oetb8Tchkezcx4tK03DK+SqYByu5Y=
|
github.com/wailsapp/wails/v3 v3.0.0-alpha.8.3/go.mod h1:9Ca1goy5oqxmy8Oetb8Tchkezcx4tK03DK+SqYByu5Y=
|
||||||
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||||
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
|
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
|
||||||
|
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY=
|
||||||
|
github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
|
||||||
|
github.com/xuri/excelize/v2 v2.9.0 h1:1tgOaEq92IOEumR1/JfYS/eR0KHOCsRv/rYXXh6YJQE=
|
||||||
|
github.com/xuri/excelize/v2 v2.9.0/go.mod h1:uqey4QBZ9gdMeWApPLdhm9x+9o2lq4iVmjiLfBS5hdE=
|
||||||
|
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 h1:hPVCafDV85blFTabnqKgNhDCkJX25eik94Si9cTER4A=
|
||||||
|
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
|
||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
@@ -145,6 +158,8 @@ golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY=
|
|||||||
golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||||
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||||
|
golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s=
|
||||||
|
golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78=
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
|
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
|
||||||
|
|||||||
@@ -34,6 +34,11 @@ func ErrorDialog(title string, message string) {
|
|||||||
application.ErrorDialog().AttachToWindow(currentWindow).SetTitle(title).SetMessage(message).Show()
|
application.ErrorDialog().AttachToWindow(currentWindow).SetTitle(title).SetMessage(message).Show()
|
||||||
}
|
}
|
||||||
|
|
||||||
func SaveFileDialog(title string) {
|
func SaveFileDialog(title string, filename string) (string, error) {
|
||||||
checkInit()
|
checkInit()
|
||||||
|
selection, err := application.SaveFileDialog().AttachToWindow(currentWindow).SetFilename(filename).PromptForSingleSelection()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return selection, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,37 @@
|
|||||||
package excel
|
package excel
|
||||||
|
|
||||||
|
import (
|
||||||
|
"app/internal/services"
|
||||||
|
"github.com/xuri/excelize/v2"
|
||||||
|
"log/slog"
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TableHeaders struct {
|
||||||
|
Headers []string
|
||||||
|
IgnoredFieldsIndices []uint
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExportEntityToSpreadsheet[T any](filename, sheetName string, entity T, service services.Service[T]) error {
|
||||||
|
file := excelize.NewFile()
|
||||||
|
defer func() {
|
||||||
|
if err := file.Close(); err != nil {
|
||||||
|
slog.Error("Error while closing excel file: ", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExportHeaders(entity any) TableHeaders {
|
||||||
|
headers := TableHeaders{}
|
||||||
|
v := reflect.TypeOf(entity)
|
||||||
|
for i := range v.NumField() {
|
||||||
|
field := v.Field(i)
|
||||||
|
displayName := field.Tag.Get("displayName")
|
||||||
|
if displayName != "" {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,9 +6,11 @@ var Entities = []any{
|
|||||||
|
|
||||||
type Post struct {
|
type Post struct {
|
||||||
Id uint `gorm:"primaryKey"`
|
Id uint `gorm:"primaryKey"`
|
||||||
Text string
|
Text string `displayName:"Текст"`
|
||||||
|
CreatedAt int64 `gorm:"autoCreateTime" displayName:"Дата публикации" cellType:"timestamp"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Author A sample of comment
|
||||||
type Author struct {
|
type Author struct {
|
||||||
Id uint `gorm:"primaryKey"`
|
Id uint `gorm:"primaryKey"`
|
||||||
Name string
|
Name string
|
||||||
|
|||||||
Reference in New Issue
Block a user