react-hook-core 0.4.7 → 0.4.8
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/lib/core.js +2 -52
- package/lib/useEdit.js +46 -6
- package/package.json +1 -1
- package/src/core.ts +3 -114
- package/src/edit.ts +2 -25
- package/src/search.ts +1 -2
- package/src/useEdit.ts +41 -2
- package/lib/useView.js +0 -133
- package/src/useView.ts +0 -183
package/lib/core.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true })
|
|
3
3
|
var formutil_1 = require("./formutil")
|
|
4
4
|
exports.pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
|
|
5
|
+
exports.sizes = exports.pageSizes
|
|
5
6
|
var resources = (function () {
|
|
6
7
|
function resources() {}
|
|
7
8
|
resources.phone = / |-|\.|\(|\)/g
|
|
@@ -16,17 +17,6 @@ var resources = (function () {
|
|
|
16
17
|
return resources
|
|
17
18
|
})()
|
|
18
19
|
exports.resources = resources
|
|
19
|
-
exports.size = exports.pageSizes
|
|
20
|
-
function getCurrencyCode(form) {
|
|
21
|
-
if (form) {
|
|
22
|
-
var x = form.getAttribute("currency-code")
|
|
23
|
-
if (x) {
|
|
24
|
-
return x
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return undefined
|
|
28
|
-
}
|
|
29
|
-
exports.getCurrencyCode = getCurrencyCode
|
|
30
20
|
function removePhoneFormat(phone) {
|
|
31
21
|
if (phone) {
|
|
32
22
|
return phone.replace(resources.phone, "")
|
|
@@ -35,46 +25,6 @@ function removePhoneFormat(phone) {
|
|
|
35
25
|
}
|
|
36
26
|
}
|
|
37
27
|
exports.removePhoneFormat = removePhoneFormat
|
|
38
|
-
function buildKeys(attributes) {
|
|
39
|
-
if (!attributes) {
|
|
40
|
-
return []
|
|
41
|
-
}
|
|
42
|
-
var ks = Object.keys(attributes)
|
|
43
|
-
var ps = []
|
|
44
|
-
for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
|
|
45
|
-
var k = ks_1[_i]
|
|
46
|
-
var attr = attributes[k]
|
|
47
|
-
if (attr.key === true) {
|
|
48
|
-
ps.push(k)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return ps
|
|
52
|
-
}
|
|
53
|
-
exports.buildKeys = buildKeys
|
|
54
|
-
function buildId(p, keys) {
|
|
55
|
-
if (!keys || keys.length === 0 || keys.length === 1) {
|
|
56
|
-
if (keys && keys.length === 1) {
|
|
57
|
-
if (p[keys[0]]) {
|
|
58
|
-
return p[keys[0]]
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return p["id"]
|
|
62
|
-
}
|
|
63
|
-
var id = {}
|
|
64
|
-
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
65
|
-
var key = keys_1[_i]
|
|
66
|
-
var v = p[key]
|
|
67
|
-
if (!v) {
|
|
68
|
-
v = p[key]
|
|
69
|
-
if (!v) {
|
|
70
|
-
return null
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
id[key] = v
|
|
74
|
-
}
|
|
75
|
-
return id
|
|
76
|
-
}
|
|
77
|
-
exports.buildId = buildId
|
|
78
28
|
exports.datetimeToString = function (inputDate) {
|
|
79
29
|
var date = new Date(inputDate)
|
|
80
30
|
var year = date.getFullYear()
|
|
@@ -116,7 +66,7 @@ function getModelName(form, name) {
|
|
|
116
66
|
var b = form.name
|
|
117
67
|
if (b) {
|
|
118
68
|
if (b.endsWith("Form")) {
|
|
119
|
-
return b.
|
|
69
|
+
return b.substring(0, b.length - 4)
|
|
120
70
|
}
|
|
121
71
|
return b
|
|
122
72
|
}
|
package/lib/useEdit.js
CHANGED
|
@@ -24,6 +24,46 @@ var merge_1 = require("./merge")
|
|
|
24
24
|
var reflect_1 = require("./reflect")
|
|
25
25
|
var state_1 = require("./state")
|
|
26
26
|
var update_1 = require("./update")
|
|
27
|
+
function buildKeys(attributes) {
|
|
28
|
+
if (!attributes) {
|
|
29
|
+
return []
|
|
30
|
+
}
|
|
31
|
+
var ks = Object.keys(attributes)
|
|
32
|
+
var ps = []
|
|
33
|
+
for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
|
|
34
|
+
var k = ks_1[_i]
|
|
35
|
+
var attr = attributes[k]
|
|
36
|
+
if (attr.key === true) {
|
|
37
|
+
ps.push(k)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return ps
|
|
41
|
+
}
|
|
42
|
+
exports.buildKeys = buildKeys
|
|
43
|
+
function buildId(p, keys) {
|
|
44
|
+
if (!keys || keys.length === 0 || keys.length === 1) {
|
|
45
|
+
if (keys && keys.length === 1) {
|
|
46
|
+
if (p[keys[0]]) {
|
|
47
|
+
return p[keys[0]]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return p["id"]
|
|
51
|
+
}
|
|
52
|
+
var id = {}
|
|
53
|
+
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
54
|
+
var key = keys_1[_i]
|
|
55
|
+
var v = p[key]
|
|
56
|
+
if (!v) {
|
|
57
|
+
v = p[key]
|
|
58
|
+
if (!v) {
|
|
59
|
+
return null
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
id[key] = v
|
|
63
|
+
}
|
|
64
|
+
return id
|
|
65
|
+
}
|
|
66
|
+
exports.buildId = buildId
|
|
27
67
|
function build(attributes, name) {
|
|
28
68
|
if (!attributes) {
|
|
29
69
|
return undefined
|
|
@@ -47,8 +87,8 @@ function buildMetaModel(attributes) {
|
|
|
47
87
|
var md = {}
|
|
48
88
|
var pks = new Array()
|
|
49
89
|
var keys = Object.keys(attributes)
|
|
50
|
-
for (var _i = 0,
|
|
51
|
-
var key =
|
|
90
|
+
for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
|
|
91
|
+
var key = keys_2[_i]
|
|
52
92
|
var attr = attributes[key]
|
|
53
93
|
if (attr) {
|
|
54
94
|
if (attr.version) {
|
|
@@ -96,7 +136,7 @@ exports.useEdit = function (refForm, initialState, service, p2, p) {
|
|
|
96
136
|
p.version = version
|
|
97
137
|
}
|
|
98
138
|
}
|
|
99
|
-
var id =
|
|
139
|
+
var id = buildId(params, keys)
|
|
100
140
|
if (p && p.initialize) {
|
|
101
141
|
p.initialize(id, baseProps.load, baseProps.setState, p.callback)
|
|
102
142
|
} else {
|
|
@@ -133,7 +173,7 @@ exports.useEditProps = function (props, refForm, initialState, service, p2, p) {
|
|
|
133
173
|
p.version = version
|
|
134
174
|
}
|
|
135
175
|
}
|
|
136
|
-
var id =
|
|
176
|
+
var id = buildId(params, keys)
|
|
137
177
|
if (p && p.initialize) {
|
|
138
178
|
p.initialize(id, baseProps.load, baseProps.setState, p.callback)
|
|
139
179
|
} else {
|
|
@@ -414,8 +454,8 @@ exports.useCoreEdit = function (refForm, initialState, service, p1, p, props) {
|
|
|
414
454
|
if (isPatch) {
|
|
415
455
|
var keys = Object.keys(result)
|
|
416
456
|
var a = origin
|
|
417
|
-
for (var _i = 0,
|
|
418
|
-
var k =
|
|
457
|
+
for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {
|
|
458
|
+
var k = keys_3[_i]
|
|
419
459
|
a[k] = result[k]
|
|
420
460
|
}
|
|
421
461
|
succeed(successMsg, a, undefined, backOnSave, a)
|
package/package.json
CHANGED
package/src/core.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Params } from "react-router"
|
|
2
1
|
import { focusFirstElement } from "./formutil"
|
|
3
2
|
|
|
4
3
|
export interface LoadingService {
|
|
@@ -6,6 +5,7 @@ export interface LoadingService {
|
|
|
6
5
|
hideLoading(): void
|
|
7
6
|
}
|
|
8
7
|
export const pageSizes = [12, 24, 60, 100, 120, 180, 300, 600]
|
|
8
|
+
export const sizes = pageSizes
|
|
9
9
|
// tslint:disable-next-line:class-name
|
|
10
10
|
export class resources {
|
|
11
11
|
static phone = / |-|\.|\(|\)/g
|
|
@@ -18,17 +18,7 @@ export class resources {
|
|
|
18
18
|
static limits = pageSizes
|
|
19
19
|
static pageMaxSize = 7
|
|
20
20
|
}
|
|
21
|
-
export const size = pageSizes
|
|
22
21
|
|
|
23
|
-
export function getCurrencyCode(form?: HTMLFormElement | null): string | undefined {
|
|
24
|
-
if (form) {
|
|
25
|
-
const x = form.getAttribute("currency-code")
|
|
26
|
-
if (x) {
|
|
27
|
-
return x
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return undefined
|
|
31
|
-
}
|
|
32
22
|
export function removePhoneFormat(phone: string): string {
|
|
33
23
|
if (phone) {
|
|
34
24
|
return phone.replace(resources.phone, "")
|
|
@@ -42,7 +32,6 @@ export interface StringMap {
|
|
|
42
32
|
export interface ResourceService {
|
|
43
33
|
resource(): StringMap
|
|
44
34
|
value(key: string, param?: any): string
|
|
45
|
-
format(f: string, ...args: any[]): string
|
|
46
35
|
}
|
|
47
36
|
|
|
48
37
|
export interface Locale {
|
|
@@ -98,13 +87,7 @@ export type DataType =
|
|
|
98
87
|
| "dates"
|
|
99
88
|
| "datetimes"
|
|
100
89
|
| "times"
|
|
101
|
-
|
|
102
|
-
export interface Metadata {
|
|
103
|
-
name?: string;
|
|
104
|
-
attributes: Attributes;
|
|
105
|
-
source?: string;
|
|
106
|
-
}
|
|
107
|
-
*/
|
|
90
|
+
|
|
108
91
|
export interface Attribute {
|
|
109
92
|
name?: string
|
|
110
93
|
type?: DataType
|
|
@@ -116,45 +99,6 @@ export interface Attributes {
|
|
|
116
99
|
[key: string]: Attribute
|
|
117
100
|
}
|
|
118
101
|
|
|
119
|
-
export function buildKeys(attributes: Attributes): string[] {
|
|
120
|
-
if (!attributes) {
|
|
121
|
-
return []
|
|
122
|
-
}
|
|
123
|
-
const ks = Object.keys(attributes)
|
|
124
|
-
const ps = []
|
|
125
|
-
for (const k of ks) {
|
|
126
|
-
const attr: Attribute = attributes[k]
|
|
127
|
-
if (attr.key === true) {
|
|
128
|
-
ps.push(k)
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return ps
|
|
132
|
-
}
|
|
133
|
-
type Readonly<T> = {
|
|
134
|
-
readonly [P in keyof T]: T[P]
|
|
135
|
-
}
|
|
136
|
-
export function buildId<ID>(p: Readonly<Params<string>>, keys?: string[]): ID | null {
|
|
137
|
-
if (!keys || keys.length === 0 || keys.length === 1) {
|
|
138
|
-
if (keys && keys.length === 1) {
|
|
139
|
-
if (p[keys[0]]) {
|
|
140
|
-
return p[keys[0]] as any
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return p["id"] as any
|
|
144
|
-
}
|
|
145
|
-
const id: any = {}
|
|
146
|
-
for (const key of keys) {
|
|
147
|
-
let v = p[key]
|
|
148
|
-
if (!v) {
|
|
149
|
-
v = p[key]
|
|
150
|
-
if (!v) {
|
|
151
|
-
return null
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
id[key] = v
|
|
155
|
-
}
|
|
156
|
-
return id
|
|
157
|
-
}
|
|
158
102
|
export const datetimeToString = (inputDate: Date) => {
|
|
159
103
|
const date = new Date(inputDate)
|
|
160
104
|
const year = date.getFullYear()
|
|
@@ -172,61 +116,6 @@ export const dateToString = (inputDate: Date) => {
|
|
|
172
116
|
const day = String(inputDate.getDate()).padStart(2, "0")
|
|
173
117
|
return `${year}-${month}-${day}`
|
|
174
118
|
}
|
|
175
|
-
/*
|
|
176
|
-
export function formatFax(value: string) {
|
|
177
|
-
return formatter.formatFax(value);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
export function formatPhone(value: string) {
|
|
181
|
-
return formatter.formatPhone(value);
|
|
182
|
-
}
|
|
183
|
-
export function formatNumber(num: string|number, scale?: number, locale?: Locale): string {
|
|
184
|
-
if (!scale) {
|
|
185
|
-
scale = 2;
|
|
186
|
-
}
|
|
187
|
-
if (!locale) {
|
|
188
|
-
locale = storage.getLocale();
|
|
189
|
-
}
|
|
190
|
-
let c: number;
|
|
191
|
-
if (!num) {
|
|
192
|
-
return '';
|
|
193
|
-
} else if (typeof num === 'number') {
|
|
194
|
-
c = num;
|
|
195
|
-
} else {
|
|
196
|
-
const x: any = num;
|
|
197
|
-
if (isNaN(x)) {
|
|
198
|
-
return '';
|
|
199
|
-
} else {
|
|
200
|
-
c = parseFloat(x);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return storage.locale().formatNumber(c, scale, locale);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
export function formatCurrency(currency: string|number, locale?: Locale, currencyCode?: string) {
|
|
207
|
-
if (!currencyCode) {
|
|
208
|
-
currencyCode = 'USD';
|
|
209
|
-
}
|
|
210
|
-
if (!locale) {
|
|
211
|
-
locale = storage.getLocale();
|
|
212
|
-
}
|
|
213
|
-
let c: number;
|
|
214
|
-
if (!currency) {
|
|
215
|
-
return '';
|
|
216
|
-
} else if (typeof currency === 'number') {
|
|
217
|
-
c = currency;
|
|
218
|
-
} else {
|
|
219
|
-
let x: any = currency;
|
|
220
|
-
x = x.replace(locale.decimalSeparator, '.');
|
|
221
|
-
if (isNaN(x)) {
|
|
222
|
-
return '';
|
|
223
|
-
} else {
|
|
224
|
-
c = parseFloat(x);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return storage.locale().formatCurrency(c, currencyCode, locale);
|
|
228
|
-
}
|
|
229
|
-
*/
|
|
230
119
|
|
|
231
120
|
export function initForm(form?: HTMLFormElement, initMat?: (f: HTMLFormElement) => void): HTMLFormElement | undefined {
|
|
232
121
|
if (form) {
|
|
@@ -251,7 +140,7 @@ export function getModelName(form?: HTMLFormElement | null, name?: string): stri
|
|
|
251
140
|
const b = form.name
|
|
252
141
|
if (b) {
|
|
253
142
|
if (b.endsWith("Form")) {
|
|
254
|
-
return b.
|
|
143
|
+
return b.substring(0, b.length - 4)
|
|
255
144
|
}
|
|
256
145
|
return b
|
|
257
146
|
}
|
package/src/edit.ts
CHANGED
|
@@ -48,31 +48,7 @@ export function createModel<T>(attributes?: Attributes): T {
|
|
|
48
48
|
}
|
|
49
49
|
return obj
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
export function initPropertyNullInModel<T>(obj: T, m?: Attributes): T {
|
|
53
|
-
if (!m) {
|
|
54
|
-
const x: any = {};
|
|
55
|
-
return x;
|
|
56
|
-
}
|
|
57
|
-
const model = createModel(m);
|
|
58
|
-
for (const key of Object.keys(model as any)) {
|
|
59
|
-
if (obj && !(obj as any).hasOwnProperty(key)) {
|
|
60
|
-
(obj as any)[key] = (model as any)[key];
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return obj;
|
|
64
|
-
}
|
|
65
|
-
export function handleStatus(x: number|string, st: EditStatusConfig, gv: (k: string, p?: any) => string, se: (m: string, title?: string, detail?: string, callback?: () => void) => void): void {
|
|
66
|
-
const title = gv('error');
|
|
67
|
-
if (x === st.version_error) {
|
|
68
|
-
se(gv('error_version'), title);
|
|
69
|
-
} else if (x === st.data_corrupt) {
|
|
70
|
-
se(gv('error_data_corrupt'), title);
|
|
71
|
-
} else {
|
|
72
|
-
se(gv('error_internal'), title);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
*/
|
|
51
|
+
|
|
76
52
|
export function isSuccessful<T>(x: number | T | ErrorMessage[]): boolean {
|
|
77
53
|
if (Array.isArray(x)) {
|
|
78
54
|
return false
|
|
@@ -83,6 +59,7 @@ export function isSuccessful<T>(x: number | T | ErrorMessage[]): boolean {
|
|
|
83
59
|
}
|
|
84
60
|
return false
|
|
85
61
|
}
|
|
62
|
+
|
|
86
63
|
type Result<T> = number | T | ErrorMessage[]
|
|
87
64
|
export function afterSaved<T>(
|
|
88
65
|
res: Result<T>,
|
package/src/search.ts
CHANGED
|
@@ -33,7 +33,6 @@ export interface Sortable {
|
|
|
33
33
|
export interface Pagination {
|
|
34
34
|
initLimit?: number
|
|
35
35
|
limit: number
|
|
36
|
-
// limit: number;
|
|
37
36
|
page?: number
|
|
38
37
|
total?: number
|
|
39
38
|
pages?: number
|
|
@@ -43,7 +42,7 @@ export interface Pagination {
|
|
|
43
42
|
appendable?: boolean
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
interface Searchable extends Pagination, Sortable {}
|
|
45
|
+
export interface Searchable extends Pagination, Sortable {}
|
|
47
46
|
|
|
48
47
|
export function getOffset(limit: number, page?: number, firstLimit?: number): number {
|
|
49
48
|
const p = page && page > 0 ? page : 1
|
package/src/useEdit.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { useEffect, useState } from "react"
|
|
2
|
-
import { useNavigate, useParams } from "react-router"
|
|
2
|
+
import { Params, useNavigate, useParams } from "react-router"
|
|
3
3
|
import {
|
|
4
4
|
Attribute,
|
|
5
5
|
Attributes,
|
|
6
|
-
buildId,
|
|
7
6
|
ErrorMessage,
|
|
8
7
|
getModelName as getModelName2,
|
|
9
8
|
hideLoading,
|
|
@@ -23,6 +22,46 @@ import { clone, makeDiff } from "./reflect"
|
|
|
23
22
|
import { localeOf } from "./state"
|
|
24
23
|
import { useUpdate } from "./update"
|
|
25
24
|
|
|
25
|
+
export function buildKeys(attributes: Attributes): string[] {
|
|
26
|
+
if (!attributes) {
|
|
27
|
+
return []
|
|
28
|
+
}
|
|
29
|
+
const ks = Object.keys(attributes)
|
|
30
|
+
const ps = []
|
|
31
|
+
for (const k of ks) {
|
|
32
|
+
const attr: Attribute = attributes[k]
|
|
33
|
+
if (attr.key === true) {
|
|
34
|
+
ps.push(k)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return ps
|
|
38
|
+
}
|
|
39
|
+
type Readonly<T> = {
|
|
40
|
+
readonly [P in keyof T]: T[P]
|
|
41
|
+
}
|
|
42
|
+
export function buildId<ID>(p: Readonly<Params<string>>, keys?: string[]): ID | null {
|
|
43
|
+
if (!keys || keys.length === 0 || keys.length === 1) {
|
|
44
|
+
if (keys && keys.length === 1) {
|
|
45
|
+
if (p[keys[0]]) {
|
|
46
|
+
return p[keys[0]] as any
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return p["id"] as any
|
|
50
|
+
}
|
|
51
|
+
const id: any = {}
|
|
52
|
+
for (const key of keys) {
|
|
53
|
+
let v = p[key]
|
|
54
|
+
if (!v) {
|
|
55
|
+
v = p[key]
|
|
56
|
+
if (!v) {
|
|
57
|
+
return null
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
id[key] = v
|
|
61
|
+
}
|
|
62
|
+
return id
|
|
63
|
+
}
|
|
64
|
+
|
|
26
65
|
export interface EditParameter {
|
|
27
66
|
resource: ResourceService
|
|
28
67
|
showMessage: (msg: string, option?: string) => void
|
package/lib/useView.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
"use strict"
|
|
2
|
-
var __assign =
|
|
3
|
-
(this && this.__assign) ||
|
|
4
|
-
function () {
|
|
5
|
-
__assign =
|
|
6
|
-
Object.assign ||
|
|
7
|
-
function (t) {
|
|
8
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
-
s = arguments[i]
|
|
10
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]
|
|
11
|
-
}
|
|
12
|
-
return t
|
|
13
|
-
}
|
|
14
|
-
return __assign.apply(this, arguments)
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true })
|
|
17
|
-
var react_1 = require("react")
|
|
18
|
-
var react_router_1 = require("react-router")
|
|
19
|
-
var core_1 = require("./core")
|
|
20
|
-
var error_1 = require("./error")
|
|
21
|
-
var formutil_1 = require("./formutil")
|
|
22
|
-
var merge_1 = require("./merge")
|
|
23
|
-
exports.useViewOne = function (p) {
|
|
24
|
-
return exports.useCoreView(p.refForm, p.initialState, p.service, p, p)
|
|
25
|
-
}
|
|
26
|
-
exports.useView = function (refForm, initialState, service, p1, p) {
|
|
27
|
-
var baseProps = exports.useCoreView(refForm, initialState, service, p1, p)
|
|
28
|
-
var _a = merge_1.useMergeState(initialState),
|
|
29
|
-
setState = _a[1]
|
|
30
|
-
var params = react_router_1.useParams()
|
|
31
|
-
react_1.useEffect(function () {
|
|
32
|
-
if (baseProps.refForm) {
|
|
33
|
-
core_1.initForm(baseProps.refForm.current)
|
|
34
|
-
}
|
|
35
|
-
var id = core_1.buildId(params, p ? p.keys : undefined)
|
|
36
|
-
if (id) {
|
|
37
|
-
if (p && p.initialize) {
|
|
38
|
-
p.initialize(id, baseProps.load, setState, p.callback)
|
|
39
|
-
} else {
|
|
40
|
-
baseProps.load(id, p ? p.callback : undefined)
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}, [])
|
|
44
|
-
return __assign({}, baseProps)
|
|
45
|
-
}
|
|
46
|
-
exports.useCoreView = function (refForm, initialState, service, p1, p) {
|
|
47
|
-
var _a = merge_1.useMergeState(initialState),
|
|
48
|
-
state = _a[0],
|
|
49
|
-
setState = _a[1]
|
|
50
|
-
var _b = react_1.useState(),
|
|
51
|
-
running = _b[0],
|
|
52
|
-
setRunning = _b[1]
|
|
53
|
-
var navigate = react_router_1.useNavigate()
|
|
54
|
-
var back = function (event) {
|
|
55
|
-
if (event) {
|
|
56
|
-
event.preventDefault()
|
|
57
|
-
}
|
|
58
|
-
navigate(-1)
|
|
59
|
-
}
|
|
60
|
-
var getModelName = function (f) {
|
|
61
|
-
if (p && p.name) {
|
|
62
|
-
return p.name
|
|
63
|
-
}
|
|
64
|
-
return core_1.getModelName(f, "model")
|
|
65
|
-
}
|
|
66
|
-
var showModel = function (model) {
|
|
67
|
-
var n = getModelName(refForm.current)
|
|
68
|
-
var objSet = {}
|
|
69
|
-
objSet[n] = model
|
|
70
|
-
setState(objSet)
|
|
71
|
-
}
|
|
72
|
-
var _handleNotFound = function (form) {
|
|
73
|
-
var msg = error_1.message(p1.resource.value, "error_not_found", "error")
|
|
74
|
-
if (form) {
|
|
75
|
-
formutil_1.setReadOnly(form)
|
|
76
|
-
}
|
|
77
|
-
p1.showError(msg.message, msg.title)
|
|
78
|
-
}
|
|
79
|
-
var handleNotFound = p && p.handleNotFound ? p.handleNotFound : _handleNotFound
|
|
80
|
-
var _load = function (_id, callback) {
|
|
81
|
-
var id = _id
|
|
82
|
-
if (id != null && id !== "") {
|
|
83
|
-
setRunning(true)
|
|
84
|
-
core_1.showLoading(p1.loading)
|
|
85
|
-
var fn = typeof service === "function" ? service : service.load
|
|
86
|
-
fn(id)
|
|
87
|
-
.then(function (obj) {
|
|
88
|
-
if (!obj) {
|
|
89
|
-
handleNotFound(refForm.current)
|
|
90
|
-
} else {
|
|
91
|
-
if (callback) {
|
|
92
|
-
callback(obj, showModel)
|
|
93
|
-
} else {
|
|
94
|
-
showModel(obj)
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
setRunning(false)
|
|
98
|
-
core_1.hideLoading(p1.loading)
|
|
99
|
-
})
|
|
100
|
-
.catch(function (err) {
|
|
101
|
-
var data = err && err.response ? err.response : err
|
|
102
|
-
var r = p1.resource
|
|
103
|
-
var title = r.value("error")
|
|
104
|
-
var msg = r.value("error_internal")
|
|
105
|
-
if (data && data.status === 404) {
|
|
106
|
-
handleNotFound(refForm.current)
|
|
107
|
-
} else {
|
|
108
|
-
if (data && data.status) {
|
|
109
|
-
msg = error_1.messageByHttpStatus(data.status, r.value)
|
|
110
|
-
}
|
|
111
|
-
formutil_1.setReadOnly(refForm.current)
|
|
112
|
-
p1.showError(msg, title)
|
|
113
|
-
}
|
|
114
|
-
setRunning(false)
|
|
115
|
-
core_1.hideLoading(p1.loading)
|
|
116
|
-
})
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
var load = p && p.load ? p.load : _load
|
|
120
|
-
return {
|
|
121
|
-
state: state,
|
|
122
|
-
setState: setState,
|
|
123
|
-
refForm: refForm,
|
|
124
|
-
resource: p1.resource.resource(),
|
|
125
|
-
running: running,
|
|
126
|
-
setRunning: setRunning,
|
|
127
|
-
showModel: showModel,
|
|
128
|
-
getModelName: getModelName,
|
|
129
|
-
handleNotFound: handleNotFound,
|
|
130
|
-
load: load,
|
|
131
|
-
back: back,
|
|
132
|
-
}
|
|
133
|
-
}
|
package/src/useView.ts
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react"
|
|
2
|
-
import { useNavigate, useParams } from "react-router"
|
|
3
|
-
import { Attributes, buildId, getModelName as getModelName2, hideLoading, initForm, LoadingService, Locale, ResourceService, showLoading } from "./core"
|
|
4
|
-
import { message, messageByHttpStatus } from "./error"
|
|
5
|
-
import { setReadOnly } from "./formutil"
|
|
6
|
-
import { DispatchWithCallback, useMergeState } from "./merge"
|
|
7
|
-
|
|
8
|
-
export interface ViewParameter {
|
|
9
|
-
resource: ResourceService
|
|
10
|
-
showError: (m: string, header?: string, detail?: string, callback?: () => void) => void
|
|
11
|
-
getLocale?: (profile?: string) => Locale
|
|
12
|
-
loading?: LoadingService
|
|
13
|
-
}
|
|
14
|
-
export interface ViewService<T, ID> {
|
|
15
|
-
metadata?(): Attributes | undefined
|
|
16
|
-
keys?(): string[]
|
|
17
|
-
load(id: ID, ctx?: any): Promise<T | null>
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface BaseViewComponentParam<T, ID> {
|
|
21
|
-
name?: string
|
|
22
|
-
handleNotFound?: (form?: HTMLFormElement) => void
|
|
23
|
-
getModelName?: (f?: HTMLFormElement) => string
|
|
24
|
-
showModel?: (m: T) => void
|
|
25
|
-
load?: (i: ID, callback?: (m: T, showM: (m2: T) => void) => void) => void
|
|
26
|
-
}
|
|
27
|
-
export interface HookBaseViewParameter<T, ID, S> extends BaseViewComponentParam<T, ID> {
|
|
28
|
-
refForm: any
|
|
29
|
-
initialState: S
|
|
30
|
-
service: ((id: ID, ctx?: any) => Promise<T>) | ViewService<T, ID>
|
|
31
|
-
resource: ResourceService
|
|
32
|
-
showError: (m: string, header?: string, detail?: string, callback?: () => void) => void
|
|
33
|
-
getLocale?: () => Locale
|
|
34
|
-
loading?: LoadingService
|
|
35
|
-
}
|
|
36
|
-
export interface ViewComponentParam<T, ID, S> extends BaseViewComponentParam<T, ID> {
|
|
37
|
-
keys?: string[]
|
|
38
|
-
initialize?: (
|
|
39
|
-
id: ID,
|
|
40
|
-
ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void,
|
|
41
|
-
setState2: DispatchWithCallback<Partial<S>>,
|
|
42
|
-
callback?: (m: T, showF: (model: T) => void) => void,
|
|
43
|
-
) => void
|
|
44
|
-
callback?: (m: T, showF: (model: T) => void) => void
|
|
45
|
-
}
|
|
46
|
-
export interface HookPropsViewParameter<T, ID, S, P> extends HookPropsBaseViewParameter<T, ID, S, P> {
|
|
47
|
-
keys?: string[]
|
|
48
|
-
initialize?: (
|
|
49
|
-
id: ID,
|
|
50
|
-
ld: (i: ID, cb?: (m: T, showF: (model: T) => void) => void) => void,
|
|
51
|
-
setState2: DispatchWithCallback<Partial<S>>,
|
|
52
|
-
callback?: (m: T, showF: (model: T) => void) => void,
|
|
53
|
-
) => void
|
|
54
|
-
callback?: (m: T, showF: (model: T) => void) => void
|
|
55
|
-
}
|
|
56
|
-
export interface HookPropsBaseViewParameter<T, ID, S, P> extends HookBaseViewParameter<T, ID, S> {
|
|
57
|
-
props: P
|
|
58
|
-
}
|
|
59
|
-
export const useViewOne = <T, ID, S>(p: HookBaseViewParameter<T, ID, S>) => {
|
|
60
|
-
return useCoreView(p.refForm, p.initialState, p.service, p, p)
|
|
61
|
-
}
|
|
62
|
-
export const useView = <T, ID, S>(
|
|
63
|
-
refForm: any,
|
|
64
|
-
initialState: S,
|
|
65
|
-
service: ((id: ID, ctx?: any) => Promise<T>) | ViewService<T, ID>,
|
|
66
|
-
p1: ViewParameter,
|
|
67
|
-
p?: ViewComponentParam<T, ID, S>,
|
|
68
|
-
) => {
|
|
69
|
-
const baseProps = useCoreView(refForm, initialState, service, p1, p)
|
|
70
|
-
const [, setState] = useMergeState<S>(initialState)
|
|
71
|
-
const params = useParams()
|
|
72
|
-
useEffect(() => {
|
|
73
|
-
if (baseProps.refForm) {
|
|
74
|
-
initForm(baseProps.refForm.current)
|
|
75
|
-
}
|
|
76
|
-
const id = buildId<ID>(params, p ? p.keys : undefined)
|
|
77
|
-
if (id) {
|
|
78
|
-
if (p && p.initialize) {
|
|
79
|
-
p.initialize(id, baseProps.load, setState, p.callback)
|
|
80
|
-
} else {
|
|
81
|
-
baseProps.load(id, p ? p.callback : undefined)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}, [])
|
|
85
|
-
return { ...baseProps }
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export const useCoreView = <T, ID, S>(
|
|
89
|
-
refForm: any,
|
|
90
|
-
initialState: S,
|
|
91
|
-
service: ((id: ID, ctx?: any) => Promise<T>) | ViewService<T, ID>,
|
|
92
|
-
p1: ViewParameter,
|
|
93
|
-
p?: ViewComponentParam<T, ID, S>,
|
|
94
|
-
) => {
|
|
95
|
-
const [state, setState] = useMergeState<S>(initialState)
|
|
96
|
-
const [running, setRunning] = useState<boolean>()
|
|
97
|
-
const navigate = useNavigate()
|
|
98
|
-
|
|
99
|
-
const back = (event: any) => {
|
|
100
|
-
if (event) {
|
|
101
|
-
event.preventDefault()
|
|
102
|
-
}
|
|
103
|
-
navigate(-1)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const getModelName = (f?: HTMLFormElement) => {
|
|
107
|
-
if (p && p.name) {
|
|
108
|
-
return p.name
|
|
109
|
-
}
|
|
110
|
-
return getModelName2(f, "model")
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const showModel = (model: T) => {
|
|
114
|
-
const n: string = getModelName(refForm.current)
|
|
115
|
-
const objSet: any = {}
|
|
116
|
-
objSet[n] = model
|
|
117
|
-
setState(objSet)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const _handleNotFound = (form?: any): void => {
|
|
121
|
-
const msg = message(p1.resource.value, "error_not_found", "error")
|
|
122
|
-
if (form) {
|
|
123
|
-
setReadOnly(form)
|
|
124
|
-
}
|
|
125
|
-
p1.showError(msg.message, msg.title)
|
|
126
|
-
}
|
|
127
|
-
const handleNotFound = p && p.handleNotFound ? p.handleNotFound : _handleNotFound
|
|
128
|
-
|
|
129
|
-
const _load = (_id: ID, callback?: (m: T, showM: (m2: T) => void) => void) => {
|
|
130
|
-
const id: any = _id
|
|
131
|
-
if (id != null && id !== "") {
|
|
132
|
-
setRunning(true)
|
|
133
|
-
showLoading(p1.loading)
|
|
134
|
-
const fn = typeof service === "function" ? service : service.load
|
|
135
|
-
fn(id)
|
|
136
|
-
.then((obj) => {
|
|
137
|
-
if (!obj) {
|
|
138
|
-
handleNotFound(refForm.current)
|
|
139
|
-
} else {
|
|
140
|
-
if (callback) {
|
|
141
|
-
callback(obj, showModel)
|
|
142
|
-
} else {
|
|
143
|
-
showModel(obj)
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
setRunning(false)
|
|
147
|
-
hideLoading(p1.loading)
|
|
148
|
-
})
|
|
149
|
-
.catch((err) => {
|
|
150
|
-
const data = err && err.response ? err.response : err
|
|
151
|
-
const r = p1.resource
|
|
152
|
-
const title = r.value("error")
|
|
153
|
-
let msg = r.value("error_internal")
|
|
154
|
-
if (data && data.status === 404) {
|
|
155
|
-
handleNotFound(refForm.current)
|
|
156
|
-
} else {
|
|
157
|
-
if (data && data.status) {
|
|
158
|
-
msg = messageByHttpStatus(data.status, r.value)
|
|
159
|
-
}
|
|
160
|
-
setReadOnly(refForm.current)
|
|
161
|
-
p1.showError(msg, title)
|
|
162
|
-
}
|
|
163
|
-
setRunning(false)
|
|
164
|
-
hideLoading(p1.loading)
|
|
165
|
-
})
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
const load = p && p.load ? p.load : _load
|
|
169
|
-
|
|
170
|
-
return {
|
|
171
|
-
state,
|
|
172
|
-
setState,
|
|
173
|
-
refForm,
|
|
174
|
-
resource: p1.resource.resource(),
|
|
175
|
-
running,
|
|
176
|
-
setRunning,
|
|
177
|
-
showModel,
|
|
178
|
-
getModelName,
|
|
179
|
-
handleNotFound,
|
|
180
|
-
load,
|
|
181
|
-
back,
|
|
182
|
-
}
|
|
183
|
-
}
|