-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathABViewManagerMobileCore.js
More file actions
102 lines (95 loc) · 2.99 KB
/
ABViewManagerMobileCore.js
File metadata and controls
102 lines (95 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* ABViewManagerMobile
*
* An interface for managing the different ABViews available in our AppBuilder.
*
*/
/*
* Views
* A name => ABView hash of the different ABViews available.
*/
var Views = {};
[
require("../platform/mobile/ABMobilePage"),
require("../platform/mobile/ABMobileView"),
require("../platform/mobile/ABMobileViewCustom"),
require("../platform/mobile/ABMobileViewForm"),
require("../platform/mobile/ABMobileViewFormButton"),
require("../platform/mobile/ABMobileViewFormCheckbox"),
require("../platform/mobile/ABMobileViewFormConnect"),
require("../platform/mobile/ABMobileViewFormDate"),
require("../platform/mobile/ABMobileViewFormDatetime"),
require("../platform/mobile/ABMobileViewFormEmail"),
require("../platform/mobile/ABMobileViewFormFile"),
require("../platform/mobile/ABMobileViewFormFormula"),
require("../platform/mobile/ABMobileViewFormImage"),
require("../platform/mobile/ABMobileViewFormNumber"),
require("../platform/mobile/ABMobileViewFormReadonly"),
require("../platform/mobile/ABMobileViewFormSelectMultiple"),
require("../platform/mobile/ABMobileViewFormSelectSingle"),
require("../platform/mobile/ABMobileViewFormTextbox"),
require("../platform/mobile/ABMobileViewLabel"),
require("../platform/mobile/ABMobileViewList"),
require("../platform/mobile/ABMobileViewTimeline"),
].forEach((v) => {
if (v.default?.common) {
v = v.default;
}
Views[v.common().key] = v;
});
module.exports = class ABViewManagerCore {
/**
* @function allViews
* return all the currently defined ABViews in an array.
* @return [{ABView},...]
*/
static allViews(fn = () => true) {
var views = [];
for (var v in Views) {
var V = Views[v];
if (fn(V)) {
views.push(V);
}
}
return views;
}
/**
* @function newView
* return an instance of an ABView based upon the values.key value.
* @return {ABView}
*/
static newView(values, application, parent) {
parent = parent || null;
if (values.key == "detailselectivity") {
values.key = "detailconnect";
}
// if ((values.key) && (Views[values.key])) {
if (values.key) {
if (!Views[values.key]) {
console.error(
"!! View[" +
values.key +
"] not yet defined. Have an ABView instead:"
);
return new Views["mobile-view"](values, application, parent);
}
return new Views[values.key](values, application, parent);
} else {
var err = new Error(`Unknown view key [${values.key}]`);
console.error(err); // show the stack.
console.error({
error: err,
values: values,
application: application,
});
return null;
}
}
static viewClass(key) {
if (Views[key]) {
return Views[key];
}
console.error(`Unknown View Key[${key}]`);
return;
}
};