@d-mok/quasar-app-extension-quasar-axe 1.0.21 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/templates/src/utils.ts +81 -16
- package/src/utils/ORM/basic.ts +15 -10
- package/src/utils/ORM/rpc.ts +0 -4
- package/src/utils/ORM/table.ts +2 -58
- package/src/utils/supabase.ts +5 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@d-mok/quasar-app-extension-quasar-axe",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"description": "A Quasar App Extension",
|
|
5
5
|
"author": "d-mok <49301824+d-mok@users.noreply.github.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@types/papaparse": "^5.3.2",
|
|
25
25
|
"@types/webpack-env": "^1.16.3",
|
|
26
26
|
"papaparse": "^5.3.1",
|
|
27
|
-
"sapphire-js": "^1.0.
|
|
27
|
+
"sapphire-js": "^1.0.64"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@quasar/app": "^3.3.1",
|
|
@@ -1,34 +1,99 @@
|
|
|
1
1
|
|
|
2
2
|
//@ts-ignore
|
|
3
|
-
|
|
3
|
+
import { qDialog as _qDialog } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/dialog'
|
|
4
4
|
//@ts-ignore
|
|
5
|
-
|
|
5
|
+
import { qNotify as _qNotify } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/notify'
|
|
6
6
|
//@ts-ignore
|
|
7
|
-
|
|
7
|
+
import { TableEdit as _TableEdit, Empower as _Empower } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/ORM/table'
|
|
8
8
|
//@ts-ignore
|
|
9
|
-
|
|
9
|
+
import { TableView as _TableView } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/ORM/view'
|
|
10
10
|
//@ts-ignore
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
//@ts-ignore
|
|
14
|
-
import '@d-mok/quasar-app-extension-quasar-axe/src/utils/supabase'
|
|
15
|
-
//@ts-ignore
|
|
16
|
-
export { supabase, handleError, callRPC } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/supabase'
|
|
11
|
+
import { TableRPC as _TableRPC } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/ORM/rpc'
|
|
17
12
|
//@ts-ignore
|
|
18
13
|
export { Sheet, List } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/sapphire'
|
|
14
|
+
//@ts-ignore
|
|
15
|
+
import { EMAIL as _EMAIL, RPC as _RPC } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/supabase'
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
declare global {
|
|
19
|
+
var qDialog: typeof _qDialog
|
|
20
|
+
var qNotify: typeof _qNotify
|
|
21
|
+
var TableEdit: typeof _TableEdit
|
|
22
|
+
var Empower: typeof _Empower
|
|
23
|
+
var TableView: typeof _TableView
|
|
24
|
+
var TableRPC: typeof _TableRPC
|
|
25
|
+
var EMAIL: typeof _EMAIL
|
|
26
|
+
var RPC: typeof _RPC
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
globalThis.qDialog = _qDialog
|
|
30
|
+
globalThis.qNotify = _qNotify
|
|
31
|
+
globalThis.TableEdit = _TableEdit
|
|
32
|
+
globalThis.Empower = _Empower
|
|
33
|
+
globalThis.TableView = _TableView
|
|
34
|
+
globalThis.TableRPC = _TableRPC
|
|
35
|
+
globalThis.EMAIL = _EMAIL
|
|
36
|
+
globalThis.RPC = _RPC
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
19
41
|
|
|
20
42
|
|
|
21
43
|
//@ts-ignore
|
|
22
|
-
import
|
|
44
|
+
import '@d-mok/quasar-app-extension-quasar-axe/src/utils/supabase'
|
|
23
45
|
//@ts-ignore
|
|
24
|
-
|
|
46
|
+
export { supabase } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/supabase'
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// //@ts-ignore
|
|
50
|
+
// import { qDialog } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/dialog'
|
|
51
|
+
// //@ts-ignore
|
|
52
|
+
// import { qNotify } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/notify'
|
|
25
53
|
//@ts-ignore
|
|
26
54
|
import { supabase } from '@d-mok/quasar-app-extension-quasar-axe/src/utils/supabase'
|
|
27
55
|
if (process.env.DEBUGGING) {
|
|
28
|
-
// @ts-ignore
|
|
29
|
-
globalThis.qDialog = qDialog
|
|
30
|
-
// @ts-ignore
|
|
31
|
-
globalThis.qNotify = qNotify
|
|
56
|
+
// // @ts-ignore
|
|
57
|
+
// globalThis.qDialog = qDialog
|
|
58
|
+
// // @ts-ignore
|
|
59
|
+
// globalThis.qNotify = qNotify
|
|
32
60
|
// @ts-ignore
|
|
33
61
|
globalThis.supabase = supabase
|
|
34
62
|
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
// expose vue functions
|
|
72
|
+
|
|
73
|
+
declare global {
|
|
74
|
+
var ref: typeof _ref
|
|
75
|
+
var watch: typeof _watch
|
|
76
|
+
var watchEffect: typeof _watchEffect
|
|
77
|
+
var computed: typeof _computed
|
|
78
|
+
var useRouter: typeof _useRouter
|
|
79
|
+
var useRoute: typeof _useRoute
|
|
80
|
+
type PropType<T> = _PropType<T>
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
import {
|
|
84
|
+
ref as _ref,
|
|
85
|
+
watch as _watch,
|
|
86
|
+
watchEffect as _watchEffect,
|
|
87
|
+
computed as _computed,
|
|
88
|
+
PropType as _PropType
|
|
89
|
+
} from 'vue'
|
|
90
|
+
|
|
91
|
+
import { useRouter as _useRouter, useRoute as _useRoute } from 'vue-router'
|
|
92
|
+
|
|
93
|
+
globalThis.ref = _ref
|
|
94
|
+
globalThis.watch = _watch
|
|
95
|
+
globalThis.watchEffect = _watchEffect
|
|
96
|
+
globalThis.computed = _computed
|
|
97
|
+
globalThis.useRouter = _useRouter
|
|
98
|
+
globalThis.useRoute = _useRoute
|
|
99
|
+
|
package/src/utils/ORM/basic.ts
CHANGED
|
@@ -45,17 +45,22 @@ export abstract class BasicTable<T extends R, R extends object> extends Sheet<T>
|
|
|
45
45
|
/**
|
|
46
46
|
* The class of the elements.
|
|
47
47
|
*/
|
|
48
|
-
public abstract readonly
|
|
48
|
+
public abstract readonly Puppet: new (_: Partial<R>) => T
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
51
|
* The default ordering instruction object.
|
|
52
52
|
*/
|
|
53
53
|
public readonly ordering: Readonly<Ordering<T>> = []
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* The row class (for extracting fields in select)
|
|
57
|
+
*/
|
|
58
|
+
public readonly Rack: undefined | (new (_: Partial<R>) => R) = undefined
|
|
59
|
+
|
|
55
60
|
|
|
56
61
|
|
|
57
62
|
private convert(data: R[]): T[] {
|
|
58
|
-
return data.map($ => new this.
|
|
63
|
+
return data.map($ => new this.Puppet($))
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
private log(msg: string, data?: T[]): void {
|
|
@@ -70,9 +75,9 @@ export abstract class BasicTable<T extends R, R extends object> extends Sheet<T>
|
|
|
70
75
|
|
|
71
76
|
|
|
72
77
|
private fields(): string {
|
|
73
|
-
|
|
74
|
-
let
|
|
75
|
-
return
|
|
78
|
+
if (this.Rack === undefined) return '*'
|
|
79
|
+
let newObj = new this.Rack({})
|
|
80
|
+
return Object.keys(newObj).join(',')
|
|
76
81
|
}
|
|
77
82
|
|
|
78
83
|
|
|
@@ -110,7 +115,7 @@ export abstract class BasicTable<T extends R, R extends object> extends Sheet<T>
|
|
|
110
115
|
param?: any
|
|
111
116
|
where?: Where<R>
|
|
112
117
|
custom?: (_: PostgrestFilterBuilder) => PostgrestFilterBuilder
|
|
113
|
-
action?: (
|
|
118
|
+
action?: (puppet: T[]) => void
|
|
114
119
|
confirm?: [string, string?]
|
|
115
120
|
notify?: string
|
|
116
121
|
slience?: boolean
|
|
@@ -125,12 +130,12 @@ export abstract class BasicTable<T extends R, R extends object> extends Sheet<T>
|
|
|
125
130
|
let { data, error } = await q
|
|
126
131
|
handleError(data, error)
|
|
127
132
|
|
|
128
|
-
let
|
|
129
|
-
action(
|
|
133
|
+
let puppets = this.convert(data)
|
|
134
|
+
action(puppets)
|
|
130
135
|
this.order(...this.ordering)
|
|
131
136
|
|
|
132
137
|
|
|
133
|
-
this.log(type,
|
|
138
|
+
this.log(type, puppets)
|
|
134
139
|
if (notify) qNotify.toast(notify)
|
|
135
140
|
if (slience) loadingBar(true)
|
|
136
141
|
}
|
|
@@ -143,7 +148,7 @@ export abstract class BasicTable<T extends R, R extends object> extends Sheet<T>
|
|
|
143
148
|
* Get an item by `criteria`. If not found, return a new object.
|
|
144
149
|
*/
|
|
145
150
|
got(criteria: Criteria<T>): T {
|
|
146
|
-
return this.get(criteria) ?? new this.
|
|
151
|
+
return this.get(criteria) ?? new this.Puppet({})
|
|
147
152
|
}
|
|
148
153
|
|
|
149
154
|
|
package/src/utils/ORM/rpc.ts
CHANGED
package/src/utils/ORM/table.ts
CHANGED
|
@@ -16,7 +16,7 @@ type muteOptions = {
|
|
|
16
16
|
* @template T - type of element class
|
|
17
17
|
* @template R - type of database row class
|
|
18
18
|
*/
|
|
19
|
-
export abstract class
|
|
19
|
+
export abstract class TableEdit<T extends R, R extends object> extends TableView<T, R>{
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
@@ -109,7 +109,7 @@ export function Empower<RCls extends Constructor, R = InstanceType<RCls>>(BaseCl
|
|
|
109
109
|
|
|
110
110
|
return class extends BaseCls {
|
|
111
111
|
|
|
112
|
-
public hostTable:
|
|
112
|
+
public hostTable: TableEdit<any, any> | undefined = undefined;
|
|
113
113
|
|
|
114
114
|
public async update(
|
|
115
115
|
this: this & R,
|
|
@@ -155,59 +155,3 @@ export function Empower<RCls extends Constructor, R = InstanceType<RCls>>(BaseCl
|
|
|
155
155
|
|
|
156
156
|
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
// class FolderRow {
|
|
167
|
-
// id: number = 0
|
|
168
|
-
// subject: string = ""
|
|
169
|
-
// category: string = ""
|
|
170
|
-
// teacher: string = ""
|
|
171
|
-
// bank: string = ""
|
|
172
|
-
// name: string = ""
|
|
173
|
-
// pub_q: boolean = false
|
|
174
|
-
// pub_s: boolean = false
|
|
175
|
-
// codes: string[] = []
|
|
176
|
-
// modified: number = 0
|
|
177
|
-
|
|
178
|
-
// constructor(row = {}) {
|
|
179
|
-
// Object.assign(this, row)
|
|
180
|
-
// }
|
|
181
|
-
// }
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
// export class Folder extends FolderRow {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
// }
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
// export class FolderTable extends Table<Folder, FolderRow>{
|
|
196
|
-
// readonly tableName = 'folder'
|
|
197
|
-
// readonly idField = 'id' as const
|
|
198
|
-
// readonly entityClass = Folder
|
|
199
|
-
// readonly ordering = [
|
|
200
|
-
// 'subject',
|
|
201
|
-
// { category: ['topic', 'paper', 'exercise'] },
|
|
202
|
-
// 'bank',
|
|
203
|
-
// 'name'
|
|
204
|
-
// ] as const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
// }
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
// export const Folders = (new FolderTable).reactive()
|
|
212
|
-
|
|
213
|
-
// Folders.selectIn('teacher', [1,2,3])
|
package/src/utils/supabase.ts
CHANGED
|
@@ -137,15 +137,17 @@ export function handleError<T>(data: T[] | null, error: PostgrestError | null):
|
|
|
137
137
|
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
const _filterBuilder = supabase.from('DEMO').select().eq('','').order('f').limit(3)
|
|
140
|
+
const _filterBuilder = supabase.from('DEMO').select().eq('', '').order('f').limit(3)
|
|
141
141
|
export type PostgrestFilterBuilder = typeof _filterBuilder
|
|
142
142
|
|
|
143
143
|
|
|
144
144
|
|
|
145
|
-
export async function
|
|
145
|
+
export async function RPC<T>(fn: string, params?: object | undefined) {
|
|
146
146
|
let { data, error } = await supabase.rpc<T>(fn, params)
|
|
147
147
|
handleError(data, error)
|
|
148
148
|
return data
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
export function EMAIL(): string {
|
|
152
|
+
return supabase.email()
|
|
153
|
+
}
|