alchemymvc 1.3.22 → 1.4.0-alpha.2
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/LICENSE +1 -1
- package/README.md +3 -3
- package/lib/app/behaviour/publishable_behaviour.js +5 -5
- package/lib/app/behaviour/revision_behaviour.js +96 -59
- package/lib/app/behaviour/sluggable_behaviour.js +14 -14
- package/lib/app/conduit/electron_conduit.js +9 -9
- package/lib/app/conduit/http_conduit.js +13 -13
- package/lib/app/conduit/loopback_conduit.js +15 -15
- package/lib/app/conduit/socket_conduit.js +43 -43
- package/lib/app/config/routes.js +26 -0
- package/lib/app/controller/00-default_app_controller.js +21 -0
- package/lib/app/controller/alchemy_info_controller.js +12 -12
- package/lib/app/datasource/mongo_datasource.js +27 -18
- package/lib/app/element/00-default_app_element.js +19 -0
- package/lib/app/element/time_ago.js +5 -5
- package/lib/app/helper/00-default_app_helper.js +11 -0
- package/lib/app/helper/alchemy_helper.js +22 -22
- package/lib/app/helper/backed_map.js +1 -1
- package/lib/app/helper/breadcrumb.js +10 -10
- package/lib/app/helper/client_collection.js +3 -3
- package/lib/app/helper/cron.js +29 -29
- package/lib/app/helper/enum_values.js +6 -6
- package/lib/app/helper/pagination_helper.js +36 -36
- package/lib/app/helper/router_helper.js +35 -35
- package/lib/app/helper/socket_helper.js +57 -57
- package/lib/app/helper/syncable.js +62 -62
- package/lib/app/helper_component/paginate_component.js +9 -9
- package/lib/app/helper_controller/component.js +1 -1
- package/lib/app/helper_controller/conduit.js +31 -31
- package/lib/app/helper_controller/controller.js +54 -39
- package/lib/app/helper_datasource/00-nosql_datasource.js +624 -70
- package/lib/app/helper_datasource/05-fallback_datasource.js +10 -10
- package/lib/app/helper_datasource/idb_datasource.js +6 -6
- package/lib/app/helper_datasource/indexed_db.js +22 -22
- package/lib/app/helper_datasource/remote_datasource.js +5 -5
- package/lib/app/helper_error/http_error.js +4 -4
- package/lib/app/helper_error/model_error.js +2 -2
- package/lib/app/helper_error/validation_error.js +12 -12
- package/lib/app/helper_field/00-objectid_field.js +7 -7
- package/lib/app/helper_field/05-string_field.js +16 -12
- package/lib/app/helper_field/06-text_field.js +2 -4
- package/lib/app/helper_field/10-number_field.js +9 -12
- package/lib/app/helper_field/11-date_field.js +15 -15
- package/lib/app/helper_field/15-local_temporal_field.js +10 -10
- package/lib/app/helper_field/20-decimal_field.js +8 -9
- package/lib/app/helper_field/belongsto_field.js +1 -1
- package/lib/app/helper_field/big_int_field.js +8 -8
- package/lib/app/helper_field/boolean_field.js +9 -11
- package/lib/app/helper_field/datetime_field.js +3 -3
- package/lib/app/helper_field/enum_field.js +13 -8
- package/lib/app/helper_field/fixed_decimal_field.js +6 -7
- package/lib/app/helper_field/geopoint_field.js +9 -10
- package/lib/app/helper_field/habtm_field.js +3 -3
- package/lib/app/helper_field/hasoneparent_field.js +1 -1
- package/lib/app/helper_field/html_field.js +2 -4
- package/lib/app/helper_field/integer_field.js +8 -11
- package/lib/app/helper_field/local_date_field.js +5 -5
- package/lib/app/helper_field/local_date_time_field.js +5 -5
- package/lib/app/helper_field/local_time_field.js +5 -5
- package/lib/app/helper_field/mixed_field.js +5 -5
- package/lib/app/helper_field/object_field.js +6 -6
- package/lib/app/helper_field/password_field.js +3 -3
- package/lib/app/helper_field/regexp_field.js +7 -9
- package/lib/app/helper_field/schema_field.js +91 -88
- package/lib/app/helper_field/settings_field.js +92 -0
- package/lib/app/helper_field/time_field.js +6 -6
- package/lib/app/helper_field/url_field.js +2 -4
- package/lib/app/helper_model/00-base_criteria.js +662 -0
- package/lib/app/helper_model/05-criteria_expressions.js +605 -0
- package/lib/app/helper_model/10-model_criteria.js +1182 -0
- package/lib/app/helper_model/data_provider.js +2 -2
- package/lib/app/helper_model/document.js +103 -92
- package/lib/app/helper_model/document_list.js +14 -14
- package/lib/app/helper_model/field_config.js +11 -11
- package/lib/app/helper_model/field_set.js +17 -17
- package/lib/app/helper_model/model.js +201 -123
- package/lib/app/helper_model/remote_data_provider.js +2 -2
- package/lib/app/helper_validator/00_validator.js +16 -16
- package/lib/app/helper_validator/not_empty_validator.js +9 -9
- package/lib/app/model/00-default_app_model.js +18 -0
- package/lib/app/model/05-system_model.js +27 -0
- package/lib/app/model/{alchemy_migration_model.js → system_migration_model.js} +4 -4
- package/lib/app/model/system_setting_model.js +154 -0
- package/lib/app/model/{alchemy_task_history_model.js → system_task_history_model.js} +7 -7
- package/lib/app/model/{alchemy_task_model.js → system_task_model.js} +11 -11
- package/lib/bootstrap.js +22 -312
- package/lib/class/accumulator.js +5 -5
- package/lib/class/behaviour.js +5 -5
- package/lib/class/component.js +3 -3
- package/lib/class/conduit.js +152 -150
- package/lib/class/controller.js +42 -42
- package/lib/class/datasource.js +74 -79
- package/lib/class/document.js +74 -95
- package/lib/class/document_list.js +5 -5
- package/lib/class/element.js +17 -17
- package/lib/class/error.js +3 -3
- package/lib/class/field.js +169 -91
- package/lib/class/field_value.js +6 -6
- package/lib/class/helper.js +3 -3
- package/lib/class/inode.js +17 -17
- package/lib/class/inode_dir.js +12 -12
- package/lib/class/inode_file.js +26 -26
- package/lib/class/inode_list.js +4 -4
- package/lib/class/migration.js +4 -4
- package/lib/class/model.js +146 -165
- package/lib/class/path_definition.js +22 -22
- package/lib/class/path_evaluator.js +5 -5
- package/lib/class/path_param_definition.js +7 -7
- package/lib/class/plugin.js +312 -0
- package/lib/class/postponement.js +29 -29
- package/lib/class/reciprocal.js +8 -8
- package/lib/class/route.js +33 -33
- package/lib/class/router.js +73 -73
- package/lib/class/schema.js +21 -21
- package/lib/class/schema_client.js +105 -82
- package/lib/class/session.js +63 -29
- package/lib/class/session_scene.js +4 -4
- package/lib/class/sitemap.js +16 -16
- package/lib/class/task.js +39 -39
- package/lib/class/task_service.js +43 -47
- package/lib/{init → core}/alchemy.js +411 -373
- package/lib/{init/functions.js → core/alchemy_functions.js} +113 -91
- package/lib/core/alchemy_load_functions.js +715 -0
- package/lib/core/base.js +50 -62
- package/lib/core/client_alchemy.js +144 -152
- package/lib/core/client_base.js +27 -50
- package/lib/core/discovery.js +16 -18
- package/lib/core/middleware.js +54 -43
- package/lib/core/{routing.js → prefix.js} +14 -16
- package/lib/core/setting.js +1684 -0
- package/lib/core/stage.js +758 -0
- package/lib/scripts/create_constants.js +119 -0
- package/lib/{init/languages.js → scripts/create_languages.js} +5 -5
- package/lib/scripts/create_settings.js +449 -0
- package/lib/scripts/create_shared_constants.js +95 -0
- package/lib/scripts/create_stages.js +55 -0
- package/lib/scripts/init_alchemy.js +51 -0
- package/lib/{init/requirements.js → scripts/preload_modules.js} +15 -2
- package/lib/scripts/setup_devwatch.js +238 -0
- package/lib/stages/00-load_core.js +342 -0
- package/lib/stages/05-load_app.js +57 -0
- package/lib/stages/10-datasource.js +61 -0
- package/lib/stages/15-tasks.js +27 -0
- package/lib/stages/20-settings.js +68 -0
- package/lib/stages/50-routes.js +218 -0
- package/lib/stages/90-server.js +347 -0
- package/package.json +5 -7
- package/lib/app/helper_model/criteria.js +0 -2294
- package/lib/app/helper_model/db_query.js +0 -1488
- package/lib/app/routes.js +0 -11
- package/lib/core/socket.js +0 -171
- package/lib/init/constants.js +0 -158
- package/lib/init/devwatch.js +0 -238
- package/lib/init/load_functions.js +0 -979
- package/lib/stages.js +0 -515
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 0.2.0
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
@@ -12,7 +12,7 @@ const DateField = Function.inherits('Alchemy.Field', 'Date');
|
|
|
12
12
|
/**
|
|
13
13
|
* Set the datatype name
|
|
14
14
|
*
|
|
15
|
-
* @author Jelle De Loecker
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
16
16
|
* @since 0.2.0
|
|
17
17
|
* @version 1.1.0
|
|
18
18
|
*/
|
|
@@ -21,7 +21,7 @@ DateField.setDatatype('date');
|
|
|
21
21
|
/**
|
|
22
22
|
* Dates are self-contained objects
|
|
23
23
|
*
|
|
24
|
-
* @author Jelle De Loecker
|
|
24
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
25
25
|
* @since 1.1.0
|
|
26
26
|
* @version 1.1.0
|
|
27
27
|
*/
|
|
@@ -30,15 +30,15 @@ DateField.setSelfContained(true);
|
|
|
30
30
|
/**
|
|
31
31
|
* Cast the given value to this field's type
|
|
32
32
|
*
|
|
33
|
-
* @author Jelle De Loecker
|
|
33
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
34
34
|
* @since 0.2.0
|
|
35
|
-
* @version
|
|
35
|
+
* @version 1.4.0
|
|
36
36
|
*
|
|
37
|
-
* @param {
|
|
37
|
+
* @param {*} value
|
|
38
38
|
*
|
|
39
39
|
* @return {Date}
|
|
40
40
|
*/
|
|
41
|
-
DateField.
|
|
41
|
+
DateField.setCastFunction(function cast(value) {
|
|
42
42
|
|
|
43
43
|
// Don't cast falsy values,
|
|
44
44
|
// that'll result in a date around 1970
|
|
@@ -57,15 +57,15 @@ DateField.setMethod(function cast(value) {
|
|
|
57
57
|
/**
|
|
58
58
|
* Split date into multiple fields
|
|
59
59
|
*
|
|
60
|
-
* @author Jelle De Loecker
|
|
60
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
61
61
|
* @since 0.5.0
|
|
62
62
|
* @version 0.5.0
|
|
63
63
|
*
|
|
64
|
-
* @param {
|
|
64
|
+
* @param {*} value The field's own value
|
|
65
65
|
* @param {Object} data The main record
|
|
66
66
|
* @param {Datasource} datasource The datasource instance
|
|
67
67
|
*
|
|
68
|
-
* @return {
|
|
68
|
+
* @return {*}
|
|
69
69
|
*/
|
|
70
70
|
DateField.setMethod(function _toDatasource(value, data, datasource, callback) {
|
|
71
71
|
|
|
@@ -101,13 +101,13 @@ DateField.setMethod(function _toDatasource(value, data, datasource, callback) {
|
|
|
101
101
|
/**
|
|
102
102
|
* Convert from database to app
|
|
103
103
|
*
|
|
104
|
-
* @author Jelle De Loecker
|
|
104
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
105
105
|
* @since 1.1.0
|
|
106
106
|
* @version 1.1.0
|
|
107
107
|
*
|
|
108
108
|
* @param {Object} query The original query
|
|
109
109
|
* @param {Object} options The original query options
|
|
110
|
-
* @param {
|
|
110
|
+
* @param {*} value The field value, as stored in the DB
|
|
111
111
|
* @param {Function} callback
|
|
112
112
|
*/
|
|
113
113
|
DateField.setMethod(function _toApp(query, options, value, callback) {
|
|
@@ -122,14 +122,14 @@ DateField.setMethod(function _toApp(query, options, value, callback) {
|
|
|
122
122
|
/**
|
|
123
123
|
* Cast the given value to this field's type for search in a db
|
|
124
124
|
*
|
|
125
|
-
* @author Jelle De Loecker
|
|
125
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
126
126
|
* @since 0.5.0
|
|
127
127
|
* @version 1.1.0
|
|
128
128
|
*
|
|
129
|
-
* @param {
|
|
129
|
+
* @param {*} value
|
|
130
130
|
* @param {FieldExpression} expression
|
|
131
131
|
*
|
|
132
|
-
* @return {
|
|
132
|
+
* @return {*}
|
|
133
133
|
*/
|
|
134
134
|
DateField.setMethod(function castCondition(value, expression) {
|
|
135
135
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 1.3.20
|
|
8
8
|
* @version 1.3.20
|
|
9
9
|
*/
|
|
@@ -12,7 +12,7 @@ const LocalTemporal = Function.inherits('Alchemy.Field.Date', 'LocalTemporal');
|
|
|
12
12
|
/**
|
|
13
13
|
* Mark this class as being abstract
|
|
14
14
|
*
|
|
15
|
-
* @author Jelle De Loecker
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
16
16
|
* @since 1.3.20
|
|
17
17
|
* @version 1.3.20
|
|
18
18
|
*/
|
|
@@ -21,14 +21,14 @@ LocalTemporal.makeAbstractClass();
|
|
|
21
21
|
/**
|
|
22
22
|
* Cast the given value to this field's type for search in a db
|
|
23
23
|
*
|
|
24
|
-
* @author Jelle De Loecker
|
|
24
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
25
25
|
* @since 1.3.20
|
|
26
26
|
* @version 1.3.20
|
|
27
27
|
*
|
|
28
|
-
* @param {
|
|
28
|
+
* @param {*} value
|
|
29
29
|
* @param {Array} field_paths The path to the field
|
|
30
30
|
*
|
|
31
|
-
* @return {
|
|
31
|
+
* @return {*}
|
|
32
32
|
*/
|
|
33
33
|
LocalTemporal.setMethod(function _castCondition(value, field_paths) {
|
|
34
34
|
|
|
@@ -49,15 +49,15 @@ LocalTemporal.setMethod(function _castCondition(value, field_paths) {
|
|
|
49
49
|
/**
|
|
50
50
|
* Prepare the value to be stored in the database
|
|
51
51
|
*
|
|
52
|
-
* @author Jelle De Loecker
|
|
52
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
53
53
|
* @since 1.3.20
|
|
54
54
|
* @version 1.3.20
|
|
55
55
|
*
|
|
56
|
-
* @param {
|
|
56
|
+
* @param {*} value The field's own value
|
|
57
57
|
* @param {Object} data The main record
|
|
58
58
|
* @param {Datasource} datasource The datasource instance
|
|
59
59
|
*
|
|
60
|
-
* @return {
|
|
60
|
+
* @return {*}
|
|
61
61
|
*/
|
|
62
62
|
LocalTemporal.setMethod(function _toDatasource(value, data, datasource, callback) {
|
|
63
63
|
|
|
@@ -77,13 +77,13 @@ LocalTemporal.setMethod(function _toDatasource(value, data, datasource, callback
|
|
|
77
77
|
/**
|
|
78
78
|
* Convert from database to app
|
|
79
79
|
*
|
|
80
|
-
* @author Jelle De Loecker
|
|
80
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
81
81
|
* @since 1.3.20
|
|
82
82
|
* @version 1.3.20
|
|
83
83
|
*
|
|
84
84
|
* @param {Object} query The original query
|
|
85
85
|
* @param {Object} options The original query options
|
|
86
|
-
* @param {
|
|
86
|
+
* @param {*} value The field value, as stored in the DB
|
|
87
87
|
* @param {Function} callback
|
|
88
88
|
*/
|
|
89
89
|
LocalTemporal.setMethod(function _toApp(query, options, value, callback) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 1.3.20
|
|
8
8
|
* @version 1.3.20
|
|
9
9
|
*/
|
|
@@ -12,19 +12,18 @@ const DecimalField = Function.inherits('Alchemy.Field.Number', 'Decimal');
|
|
|
12
12
|
/**
|
|
13
13
|
* Cast the given value to this field's type
|
|
14
14
|
*
|
|
15
|
-
* @author Jelle De Loecker
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
16
16
|
* @since 1.3.20
|
|
17
|
-
* @version 1.
|
|
17
|
+
* @version 1.4.0
|
|
18
18
|
*
|
|
19
19
|
* @param {Mixed} value
|
|
20
20
|
*
|
|
21
21
|
* @return {Decimal}
|
|
22
22
|
*/
|
|
23
|
-
DecimalField.
|
|
23
|
+
DecimalField.setCastFunction(function cast(value) {
|
|
24
24
|
|
|
25
|
-
// Allow null
|
|
26
25
|
if (value == null) {
|
|
27
|
-
return
|
|
26
|
+
return Decimal.ZERO;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
if (value instanceof Classes.Develry.Decimal) {
|
|
@@ -39,7 +38,7 @@ DecimalField.setMethod(function cast(value) {
|
|
|
39
38
|
/**
|
|
40
39
|
* Cast the given value to this field's type for search in a db
|
|
41
40
|
*
|
|
42
|
-
* @author Jelle De Loecker
|
|
41
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
43
42
|
* @since 1.3.20
|
|
44
43
|
* @version 1.3.20
|
|
45
44
|
*
|
|
@@ -63,7 +62,7 @@ DecimalField.setMethod(function _castCondition(value, field_paths) {
|
|
|
63
62
|
/**
|
|
64
63
|
* Prepare the value to be stored in the database
|
|
65
64
|
*
|
|
66
|
-
* @author Jelle De Loecker
|
|
65
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
67
66
|
* @since 1.3.20
|
|
68
67
|
* @version 1.3.20
|
|
69
68
|
*
|
|
@@ -84,7 +83,7 @@ DecimalField.setMethod(function _toDatasource(value, data, datasource, callback)
|
|
|
84
83
|
/**
|
|
85
84
|
* Convert from database to app
|
|
86
85
|
*
|
|
87
|
-
* @author Jelle De Loecker
|
|
86
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
88
87
|
* @since 1.3.20
|
|
89
88
|
* @version 1.3.20
|
|
90
89
|
*
|
|
@@ -9,7 +9,7 @@ if (Blast.isNode) {
|
|
|
9
9
|
*
|
|
10
10
|
* @constructor
|
|
11
11
|
*
|
|
12
|
-
* @author Jelle De Loecker
|
|
12
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
13
13
|
* @since 1.3.6
|
|
14
14
|
* @version 1.3.6
|
|
15
15
|
*/
|
|
@@ -18,7 +18,7 @@ const BigIntField = Function.inherits('Alchemy.Field.Number', 'BigInt');
|
|
|
18
18
|
/**
|
|
19
19
|
* Set the datatype name
|
|
20
20
|
*
|
|
21
|
-
* @author Jelle De Loecker
|
|
21
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
22
22
|
* @since 1.3.6
|
|
23
23
|
* @version 1.3.6
|
|
24
24
|
*/
|
|
@@ -27,15 +27,15 @@ BigIntField.setDatatype('bigint');
|
|
|
27
27
|
/**
|
|
28
28
|
* Cast the given value to this field's type
|
|
29
29
|
*
|
|
30
|
-
* @author Jelle De Loecker
|
|
30
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
31
31
|
* @since 1.3.6
|
|
32
|
-
* @version 1.
|
|
32
|
+
* @version 1.4.0
|
|
33
33
|
*
|
|
34
34
|
* @param {Mixed} value
|
|
35
35
|
*
|
|
36
36
|
* @return {BigInt}
|
|
37
37
|
*/
|
|
38
|
-
BigIntField.
|
|
38
|
+
BigIntField.setCastFunction(function cast(value) {
|
|
39
39
|
|
|
40
40
|
// Allow null
|
|
41
41
|
if (value == null) {
|
|
@@ -48,7 +48,7 @@ BigIntField.setMethod(function cast(value) {
|
|
|
48
48
|
/**
|
|
49
49
|
* Cast the given value to this field's type for search in a db
|
|
50
50
|
*
|
|
51
|
-
* @author Jelle De Loecker
|
|
51
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
52
52
|
* @since 1.3.6
|
|
53
53
|
* @version 1.3.21
|
|
54
54
|
*
|
|
@@ -68,7 +68,7 @@ BigIntField.setMethod(function _castCondition(value, field_paths) {
|
|
|
68
68
|
/**
|
|
69
69
|
* Convert the value for the given datasource
|
|
70
70
|
*
|
|
71
|
-
* @author Jelle De Loecker
|
|
71
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
72
72
|
* @since 1.3.6
|
|
73
73
|
* @version 1.3.20
|
|
74
74
|
*
|
|
@@ -89,7 +89,7 @@ BigIntField.setMethod(function _toDatasource(value, data, datasource, callback)
|
|
|
89
89
|
/**
|
|
90
90
|
* Convert from database to app
|
|
91
91
|
*
|
|
92
|
-
* @author Jelle De Loecker
|
|
92
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
93
93
|
* @since 1.3.6
|
|
94
94
|
* @version 1.3.20
|
|
95
95
|
*
|
|
@@ -3,18 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 0.2.0
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
Boolean.super.call(this, schema, name, options);
|
|
12
|
-
});
|
|
10
|
+
const BooleanField = Function.inherits('Alchemy.Field', 'Boolean');
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* Set the datatype name
|
|
16
14
|
*
|
|
17
|
-
* @author Jelle De Loecker
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
18
16
|
* @since 0.2.0
|
|
19
17
|
* @version 1.1.0
|
|
20
18
|
*/
|
|
@@ -23,28 +21,28 @@ BooleanField.setDatatype('boolean');
|
|
|
23
21
|
/**
|
|
24
22
|
* Cast the given value to this field's type
|
|
25
23
|
*
|
|
26
|
-
* @author Jelle De Loecker
|
|
24
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
27
25
|
* @since 0.2.0
|
|
28
26
|
* @version 0.2.0
|
|
29
27
|
*
|
|
30
|
-
* @param {
|
|
28
|
+
* @param {*} value
|
|
31
29
|
*
|
|
32
|
-
* @return {
|
|
30
|
+
* @return {boolean}
|
|
33
31
|
*/
|
|
34
|
-
BooleanField.
|
|
32
|
+
BooleanField.setCastFunction(function cast(value) {
|
|
35
33
|
return Boolean(value);
|
|
36
34
|
});
|
|
37
35
|
|
|
38
36
|
/**
|
|
39
37
|
* See if the given vlaue is considered not-empty for this field
|
|
40
38
|
*
|
|
41
|
-
* @author Jelle De Loecker
|
|
39
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
42
40
|
* @since 1.3.7
|
|
43
41
|
* @version 1.3.7
|
|
44
42
|
*
|
|
45
43
|
* @param {Mixed} value
|
|
46
44
|
*
|
|
47
|
-
* @return {
|
|
45
|
+
* @return {boolean}
|
|
48
46
|
*/
|
|
49
47
|
BooleanField.setMethod(function valueHasContent(value) {
|
|
50
48
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 0.2.0
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
@@ -14,7 +14,7 @@ var Datetime = Function.inherits('Alchemy.Field.Date', function Datetime(schema,
|
|
|
14
14
|
/**
|
|
15
15
|
* Set the datatype name
|
|
16
16
|
*
|
|
17
|
-
* @author Jelle De Loecker
|
|
17
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
18
18
|
* @since 1.1.0
|
|
19
19
|
* @version 1.1.0
|
|
20
20
|
*/
|
|
@@ -23,7 +23,7 @@ Datetime.setDatatype('datetime');
|
|
|
23
23
|
/**
|
|
24
24
|
* Split date into multiple fields
|
|
25
25
|
*
|
|
26
|
-
* @author Jelle De Loecker
|
|
26
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
27
27
|
* @since 0.5.0
|
|
28
28
|
* @version 1.1.0
|
|
29
29
|
*
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 0.2.0
|
|
8
8
|
* @version 1.2.1
|
|
9
9
|
*/
|
|
@@ -19,7 +19,7 @@ var Enum = Function.inherits('Alchemy.Field', function Enum(schema, name, option
|
|
|
19
19
|
/**
|
|
20
20
|
* Set the datatype name
|
|
21
21
|
*
|
|
22
|
-
* @author Jelle De Loecker
|
|
22
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
23
23
|
* @since 0.2.0
|
|
24
24
|
* @version 1.1.0
|
|
25
25
|
*/
|
|
@@ -28,22 +28,27 @@ Enum.setDatatype('string');
|
|
|
28
28
|
/**
|
|
29
29
|
* Cast the given value to this field's type
|
|
30
30
|
*
|
|
31
|
-
* @author Jelle De Loecker
|
|
31
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
32
32
|
* @since 0.2.0
|
|
33
|
-
* @version
|
|
33
|
+
* @version 1.4.0
|
|
34
34
|
*
|
|
35
|
-
* @param {
|
|
35
|
+
* @param {*} value
|
|
36
36
|
*
|
|
37
37
|
* @return {ObjectId}
|
|
38
38
|
*/
|
|
39
|
-
Enum.
|
|
39
|
+
Enum.setCastFunction(function cast(value) {
|
|
40
|
+
|
|
41
|
+
if (value == null) {
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
|
|
40
45
|
return String(value);
|
|
41
46
|
});
|
|
42
47
|
|
|
43
48
|
/**
|
|
44
49
|
* Get the enum values of this field
|
|
45
50
|
*
|
|
46
|
-
* @author Jelle De Loecker
|
|
51
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
47
52
|
* @since 0.2.0
|
|
48
53
|
* @version 1.3.0
|
|
49
54
|
*
|
|
@@ -65,7 +70,7 @@ Enum.setMethod(function getValues() {
|
|
|
65
70
|
/**
|
|
66
71
|
* Get the client-side options
|
|
67
72
|
*
|
|
68
|
-
* @author Jelle De Loecker
|
|
73
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
69
74
|
* @since 1.1.0
|
|
70
75
|
* @version 1.2.1
|
|
71
76
|
*
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 1.3.20
|
|
8
8
|
* @version 1.3.20
|
|
9
9
|
*/
|
|
@@ -19,19 +19,18 @@ const FixedDecimalField = Function.inherits('Alchemy.Field.Decimal', function Fi
|
|
|
19
19
|
/**
|
|
20
20
|
* Cast the given value to this field's type
|
|
21
21
|
*
|
|
22
|
-
* @author Jelle De Loecker
|
|
22
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
23
23
|
* @since 1.3.20
|
|
24
|
-
* @version 1.
|
|
24
|
+
* @version 1.4.0
|
|
25
25
|
*
|
|
26
|
-
* @param {
|
|
26
|
+
* @param {*} value
|
|
27
27
|
*
|
|
28
28
|
* @return {Decimal}
|
|
29
29
|
*/
|
|
30
|
-
FixedDecimalField.
|
|
30
|
+
FixedDecimalField.setCastFunction(function cast(value) {
|
|
31
31
|
|
|
32
|
-
// Allow null
|
|
33
32
|
if (value == null) {
|
|
34
|
-
|
|
33
|
+
value = 0;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
if (value instanceof Classes.Develry.Decimal) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 0.2.0
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
@@ -27,7 +27,7 @@ var Geopoint = Function.inherits('Alchemy.Field', function Geopoint(schema, name
|
|
|
27
27
|
/**
|
|
28
28
|
* Set the datatype name
|
|
29
29
|
*
|
|
30
|
-
* @author Jelle De Loecker
|
|
30
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
31
31
|
* @since 0.2.0
|
|
32
32
|
* @version 1.1.0
|
|
33
33
|
*/
|
|
@@ -36,7 +36,7 @@ Geopoint.setDatatype('object');
|
|
|
36
36
|
/**
|
|
37
37
|
* This field value is self-contained
|
|
38
38
|
*
|
|
39
|
-
* @author Jelle De Loecker
|
|
39
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
40
40
|
* @since 1.1.0
|
|
41
41
|
* @version 1.1.0
|
|
42
42
|
*/
|
|
@@ -45,18 +45,15 @@ Geopoint.setSelfContained(true);
|
|
|
45
45
|
/**
|
|
46
46
|
* Cast the given value to this field's type
|
|
47
47
|
*
|
|
48
|
-
* @author Jelle De Loecker
|
|
48
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
49
49
|
* @since 0.2.0
|
|
50
50
|
* @version 1.1.0
|
|
51
51
|
*
|
|
52
|
-
* @param {
|
|
52
|
+
* @param {*} value
|
|
53
53
|
*
|
|
54
54
|
* @return {Date}
|
|
55
55
|
*/
|
|
56
|
-
Geopoint.
|
|
57
|
-
|
|
58
|
-
var coordinates,
|
|
59
|
-
result;
|
|
56
|
+
Geopoint.setCastFunction(function cast(value, to_datasource) {
|
|
60
57
|
|
|
61
58
|
if (!value) {
|
|
62
59
|
return null;
|
|
@@ -67,6 +64,8 @@ Geopoint.setMethod(function cast(value, to_datasource) {
|
|
|
67
64
|
value = value.point;
|
|
68
65
|
}
|
|
69
66
|
|
|
67
|
+
let coordinates;
|
|
68
|
+
|
|
70
69
|
if (Array.isArray(value)) {
|
|
71
70
|
coordinates = value;
|
|
72
71
|
} else if (Array.isArray(value.coordinates)) {
|
|
@@ -74,7 +73,7 @@ Geopoint.setMethod(function cast(value, to_datasource) {
|
|
|
74
73
|
}
|
|
75
74
|
|
|
76
75
|
// Should be like {type: 'Point', coordinates: [51,3]}
|
|
77
|
-
result = {
|
|
76
|
+
let result = {
|
|
78
77
|
type: 'Point',
|
|
79
78
|
coordinates: coordinates
|
|
80
79
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 0.2.0
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
@@ -16,7 +16,7 @@ var HABTM = Function.inherits('Alchemy.Field', function HasAndBelongsToMany(sche
|
|
|
16
16
|
/**
|
|
17
17
|
* Cast the given value to this field's type
|
|
18
18
|
*
|
|
19
|
-
* @author Jelle De Loecker
|
|
19
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
20
20
|
* @since 0.2.0
|
|
21
21
|
* @version 1.1.0
|
|
22
22
|
*
|
|
@@ -24,7 +24,7 @@ var HABTM = Function.inherits('Alchemy.Field', function HasAndBelongsToMany(sche
|
|
|
24
24
|
*
|
|
25
25
|
* @return {ObjectId}
|
|
26
26
|
*/
|
|
27
|
-
HABTM.
|
|
27
|
+
HABTM.setCastFunction(function cast(value, to_datasource) {
|
|
28
28
|
|
|
29
29
|
var result,
|
|
30
30
|
temp,
|
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 1.0.6
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
Html.super.call(this, schema, name, options);
|
|
12
|
-
});
|
|
10
|
+
const Html = Function.inherits('Alchemy.Field.Text', 'Html');
|
|
@@ -3,30 +3,27 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 1.1.0
|
|
8
8
|
* @version 1.1.0
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
Integer.super.call(this, schema, name, options);
|
|
12
|
-
});
|
|
10
|
+
const IntegerField = Function.inherits('Alchemy.Field.Number', 'Integer');
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* Cast the given value to this field's type
|
|
16
14
|
*
|
|
17
|
-
* @author Jelle De Loecker
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
18
16
|
* @since 1.1.0
|
|
19
|
-
* @version 1.
|
|
17
|
+
* @version 1.4.0
|
|
20
18
|
*
|
|
21
|
-
* @param {
|
|
19
|
+
* @param {*} value
|
|
22
20
|
*
|
|
23
|
-
* @return {
|
|
21
|
+
* @return {number}
|
|
24
22
|
*/
|
|
25
|
-
IntegerField.
|
|
23
|
+
IntegerField.setCastFunction(function cast(value) {
|
|
26
24
|
|
|
27
|
-
// Allow null
|
|
28
25
|
if (value == null) {
|
|
29
|
-
return
|
|
26
|
+
return 0;
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
return Math.round(value);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @constructor
|
|
5
5
|
*
|
|
6
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
7
7
|
* @since 1.3.20
|
|
8
8
|
* @version 1.3.20
|
|
9
9
|
*/
|
|
@@ -12,7 +12,7 @@ const LocalDate = Function.inherits('Alchemy.Field.LocalTemporal', 'LocalDate');
|
|
|
12
12
|
/**
|
|
13
13
|
* Set the datatype name
|
|
14
14
|
*
|
|
15
|
-
* @author Jelle De Loecker
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
16
16
|
* @since 1.3.20
|
|
17
17
|
* @version 1.3.20
|
|
18
18
|
*/
|
|
@@ -21,15 +21,15 @@ LocalDate.setDatatype('date');
|
|
|
21
21
|
/**
|
|
22
22
|
* Cast the given value to this field's type
|
|
23
23
|
*
|
|
24
|
-
* @author Jelle De Loecker
|
|
24
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
25
25
|
* @since 1.3.20
|
|
26
26
|
* @version 1.3.20
|
|
27
27
|
*
|
|
28
|
-
* @param {
|
|
28
|
+
* @param {*} value
|
|
29
29
|
*
|
|
30
30
|
* @return {Develry.LocalDate}
|
|
31
31
|
*/
|
|
32
|
-
LocalDate.
|
|
32
|
+
LocalDate.setCastFunction(function cast(value) {
|
|
33
33
|
|
|
34
34
|
if (value == null || value === '') {
|
|
35
35
|
return null;
|