@rglabs/butterfly 2.0.1
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/CLAUDE.md +201 -0
- package/README.md +371 -0
- package/dist/commands/add.d.ts +23 -0
- package/dist/commands/add.js +303 -0
- package/dist/commands/code.d.ts +11 -0
- package/dist/commands/code.js +72 -0
- package/dist/commands/create-object.d.ts +6 -0
- package/dist/commands/create-object.js +293 -0
- package/dist/commands/create-report.d.ts +6 -0
- package/dist/commands/create-report.js +154 -0
- package/dist/commands/diff.d.ts +4 -0
- package/dist/commands/diff.js +238 -0
- package/dist/commands/download.d.ts +4 -0
- package/dist/commands/download.js +374 -0
- package/dist/commands/layout.d.ts +12 -0
- package/dist/commands/layout.js +83 -0
- package/dist/commands/record.d.ts +21 -0
- package/dist/commands/record.js +483 -0
- package/dist/commands/run-poc.d.ts +3 -0
- package/dist/commands/run-poc.js +18 -0
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.js +66 -0
- package/dist/commands/start-poc.d.ts +3 -0
- package/dist/commands/start-poc.js +55 -0
- package/dist/commands/sync-docs.d.ts +3 -0
- package/dist/commands/sync-docs.js +27 -0
- package/dist/commands/translate.d.ts +13 -0
- package/dist/commands/translate.js +401 -0
- package/dist/commands/upload.d.ts +3 -0
- package/dist/commands/upload.js +150 -0
- package/dist/commands/workflow-info.d.ts +13 -0
- package/dist/commands/workflow-info.js +161 -0
- package/dist/components/ConflictResolver.d.ts +12 -0
- package/dist/components/ConflictResolver.js +77 -0
- package/dist/components/DiffView.d.ts +11 -0
- package/dist/components/DiffView.js +101 -0
- package/dist/components/DownloadProgress.d.ts +11 -0
- package/dist/components/DownloadProgress.js +29 -0
- package/dist/components/RecordPreview.d.ts +11 -0
- package/dist/components/RecordPreview.js +91 -0
- package/dist/components/SetupForm.d.ts +8 -0
- package/dist/components/SetupForm.js +56 -0
- package/dist/components/UploadProgress.d.ts +13 -0
- package/dist/components/UploadProgress.js +42 -0
- package/dist/diff/adapters/index.d.ts +8 -0
- package/dist/diff/adapters/index.js +18 -0
- package/dist/diff/adapters/objectsAdapter.d.ts +13 -0
- package/dist/diff/adapters/objectsAdapter.js +177 -0
- package/dist/diff/adapters/reportsAdapter.d.ts +14 -0
- package/dist/diff/adapters/reportsAdapter.js +212 -0
- package/dist/diff/adapters/types.d.ts +19 -0
- package/dist/diff/adapters/types.js +2 -0
- package/dist/diff/engine.d.ts +19 -0
- package/dist/diff/engine.js +57 -0
- package/dist/diff/types.d.ts +34 -0
- package/dist/diff/types.js +110 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +117 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.js +2 -0
- package/dist/utils/api.d.ts +85 -0
- package/dist/utils/api.js +1031 -0
- package/dist/utils/auth.d.ts +4 -0
- package/dist/utils/auth.js +22 -0
- package/dist/utils/bfySplitter.d.ts +12 -0
- package/dist/utils/bfySplitter.js +151 -0
- package/dist/utils/docs.d.ts +16 -0
- package/dist/utils/docs.js +186 -0
- package/dist/utils/errorLogger.d.ts +6 -0
- package/dist/utils/errorLogger.js +29 -0
- package/dist/utils/files.d.ts +14 -0
- package/dist/utils/files.js +772 -0
- package/dist/utils/lockManager.d.ts +15 -0
- package/dist/utils/lockManager.js +126 -0
- package/dist/utils/resourceHandlers.d.ts +50 -0
- package/dist/utils/resourceHandlers.js +684 -0
- package/dist/utils/resourceMapping.d.ts +32 -0
- package/dist/utils/resourceMapping.js +210 -0
- package/dist/utils/singleResourceDownload.d.ts +14 -0
- package/dist/utils/singleResourceDownload.js +261 -0
- package/dist/utils/summaryGenerator.d.ts +2 -0
- package/dist/utils/summaryGenerator.js +183 -0
- package/dist/utils/uploadHandler.d.ts +31 -0
- package/dist/utils/uploadHandler.js +263 -0
- package/docs/AI_API.md +93 -0
- package/docs/CLAUDE.md +216 -0
- package/docs/PROJECT_SPECIFIC.md +1 -0
- package/docs/RECORD_COMMAND.md +262 -0
- package/docs/WORKFLOW_API.md +480 -0
- package/docs/bfy-splitting.md +126 -0
- package/docs/cli-commands.md +333 -0
- package/docs/examples/README.md +95 -0
- package/docs/examples/order-system.md +147 -0
- package/docs/examples/product-catalog.md +195 -0
- package/docs/examples/reports.md +187 -0
- package/docs/excel-export.md +216 -0
- package/docs/field-types/README.md +29 -0
- package/docs/field-types/calculated.md +147 -0
- package/docs/field-types/code-mappings.md +84 -0
- package/docs/field-types/custom.md +340 -0
- package/docs/object-specs/README.md +136 -0
- package/docs/object-specs/code-parameters.md +151 -0
- package/docs/object-specs/creating.md +203 -0
- package/docs/object-specs/js-code-examples.md +208 -0
- package/docs/object-specs/js-field-updates.md +168 -0
- package/docs/objects/README.md +89 -0
- package/docs/objects/creating.md +127 -0
- package/docs/page-layout.md +361 -0
- package/docs/permissions.md +260 -0
- package/docs/reports.md +197 -0
- package/docs/state-machines.md +544 -0
- package/docs/tasks/create-object.md +81 -0
- package/docs/translations.md +346 -0
- package/docs/twig-helpers.md +283 -0
- package/docs/webservices.md +159 -0
- package/docs/workspaces.md +176 -0
- package/package.json +59 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Updating Form Field Values via JavaScript
|
|
2
|
+
|
|
3
|
+
When programmatically updating field values in the admin form (e.g., after fetching data via AJAX), use the appropriate method based on the field type.
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
| Field Type | Update Method | Example |
|
|
8
|
+
|------------|---------------|---------|
|
|
9
|
+
| `calculated` | `bfyRefresh_` | `bfyRefresh_total(150.00)` |
|
|
10
|
+
| `custom` | `bfyRefresh_` | `bfyRefresh_custom_field(data)` |
|
|
11
|
+
| `date` | `bfyRefresh_` | `bfyRefresh_due_date('2024-01-15')` |
|
|
12
|
+
| `string` | `.val().trigger('change')` | `$('[name="title"]').val('New Title').trigger('change')` |
|
|
13
|
+
| `integer` | `.val().trigger('change')` | `$('[name="quantity"]').val(10).trigger('change')` |
|
|
14
|
+
| `decimal` | `.val().trigger('change')` | `$('[name="price"]').val(99.99).trigger('change')` |
|
|
15
|
+
| `textarea` | `.val().trigger('change')` | `$('[name="description"]').val('Text').trigger('change')` |
|
|
16
|
+
| `from_list` | `.val().trigger('change')` | `$('[name="status"]').val('active').trigger('change')` |
|
|
17
|
+
| `datetime` | `.val().trigger('change')` | `$('[name="created_at"]').val('2024-01-15 10:30:00').trigger('change')` |
|
|
18
|
+
| `hidden` | `.val().trigger('change')` | `$('[name="hidden_field"]').val('value').trigger('change')` |
|
|
19
|
+
|
|
20
|
+
## Fields with bfyRefresh_
|
|
21
|
+
|
|
22
|
+
For `calculated`, `custom`, and `date` field types, use the `bfyRefresh_` function:
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
bfyRefresh_COLUMN_NAME(value);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Example
|
|
29
|
+
|
|
30
|
+
```javascript
|
|
31
|
+
// Calculated field
|
|
32
|
+
bfyRefresh_total(150.00);
|
|
33
|
+
|
|
34
|
+
// Custom field
|
|
35
|
+
bfyRefresh_custom_display(data);
|
|
36
|
+
|
|
37
|
+
// Date field
|
|
38
|
+
bfyRefresh_due_date('2024-01-15');
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## All Other Fields
|
|
42
|
+
|
|
43
|
+
For all other field types, use standard jQuery:
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
$('[name="COLUMN_NAME"]').val(value).trigger('change');
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Example
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// String field
|
|
53
|
+
$('[name="title"]').val('New Title').trigger('change');
|
|
54
|
+
|
|
55
|
+
// Integer field
|
|
56
|
+
$('[name="quantity"]').val(10).trigger('change');
|
|
57
|
+
|
|
58
|
+
// Dropdown (from_list)
|
|
59
|
+
$('[name="status"]').val('active').trigger('change');
|
|
60
|
+
|
|
61
|
+
// Datetime field
|
|
62
|
+
$('[name="created_at"]').val('2024-01-15 10:30:00').trigger('change');
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Fetching Data and Updating Fields
|
|
66
|
+
|
|
67
|
+
Common pattern for fetching data from another table and updating form fields:
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
%element%.on('change', function() {
|
|
71
|
+
var id = $(this).val();
|
|
72
|
+
|
|
73
|
+
$.post('/admin/ajax/cms_object/get', {
|
|
74
|
+
"table_name": 'source_table',
|
|
75
|
+
"column": "id",
|
|
76
|
+
"value": id
|
|
77
|
+
}, function(data) {
|
|
78
|
+
if (data.data && data.data[0]) {
|
|
79
|
+
var record = data.data[0];
|
|
80
|
+
|
|
81
|
+
// For calculated, custom, date fields - use bfyRefresh_
|
|
82
|
+
bfyRefresh_calculated_total(record.total);
|
|
83
|
+
bfyRefresh_due_date(record.due_date);
|
|
84
|
+
|
|
85
|
+
// For all other fields - use jQuery
|
|
86
|
+
$('[name="title"]').val(record.title).trigger('change');
|
|
87
|
+
$('[name="status"]').val(record.status).trigger('change');
|
|
88
|
+
$('[name="quantity"]').val(record.quantity).trigger('change');
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
> **Important:** When fetching data, the `column` parameter should be the `column_name` in `val_3` of the source field (for dropdowns, this is the value column).
|
|
95
|
+
|
|
96
|
+
## Alert Dialog
|
|
97
|
+
|
|
98
|
+
Display an alert with a callback:
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
rg_alert('Your message here', function() {
|
|
102
|
+
// Executed after user clicks OK
|
|
103
|
+
console.log('User acknowledged');
|
|
104
|
+
});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Input Masking
|
|
108
|
+
|
|
109
|
+
Apply input masks to format user input:
|
|
110
|
+
|
|
111
|
+
### Pattern Characters
|
|
112
|
+
|
|
113
|
+
| Character | Matches |
|
|
114
|
+
|-----------|---------|
|
|
115
|
+
| `9` | Digit (0-9) |
|
|
116
|
+
| `a` | Letter (A-Za-z) |
|
|
117
|
+
| `*` | Alphanumeric |
|
|
118
|
+
| `#` | Hex digit (0-9, A-F) |
|
|
119
|
+
|
|
120
|
+
### Pattern Modifiers
|
|
121
|
+
|
|
122
|
+
| Modifier | Description |
|
|
123
|
+
|----------|-------------|
|
|
124
|
+
| `[x]` | Optional character |
|
|
125
|
+
| `{n}` | Repeat n times |
|
|
126
|
+
| `{n,m}` | Repeat n to m times |
|
|
127
|
+
|
|
128
|
+
### Examples
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
// Phone number
|
|
132
|
+
%element%.maskInput('(999) 999-9999');
|
|
133
|
+
|
|
134
|
+
// Date (DD/MM/YYYY)
|
|
135
|
+
%element%.maskInput('99/99/9999');
|
|
136
|
+
|
|
137
|
+
// SSN
|
|
138
|
+
%element%.maskInput('999-99-9999');
|
|
139
|
+
|
|
140
|
+
// MAC address
|
|
141
|
+
%element%.maskInput('##:##:##:##:##:##');
|
|
142
|
+
|
|
143
|
+
// Fixed 4 digits
|
|
144
|
+
%element%.maskInput('9{4}');
|
|
145
|
+
|
|
146
|
+
// 1-5 letters
|
|
147
|
+
%element%.maskInput('a{1,5}');
|
|
148
|
+
|
|
149
|
+
// Optional first digit
|
|
150
|
+
%element%.maskInput('[9]99');
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Conditional Show/Hide Fields
|
|
154
|
+
|
|
155
|
+
For `from_list` fields, conditionally show/hide other fields:
|
|
156
|
+
|
|
157
|
+
```javascript
|
|
158
|
+
%element%.condition({
|
|
159
|
+
"1": ["field_a", "field_b"], // Show these when value is "1"
|
|
160
|
+
"2": ["field_c"] // Show this when value is "2"
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Notes
|
|
165
|
+
|
|
166
|
+
- `%element%` is automatically replaced with the jQuery selector for the current field
|
|
167
|
+
- Always trigger 'change' event after setting values to ensure form state updates
|
|
168
|
+
- Use `bfyRefresh_` functions for calculated/custom/date fields to properly re-render them
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Objects
|
|
2
|
+
|
|
3
|
+
Objects in Butterfly represent database tables with their configurations, menus, and behaviors.
|
|
4
|
+
|
|
5
|
+
## Table: `objects`
|
|
6
|
+
|
|
7
|
+
## Required Fields
|
|
8
|
+
|
|
9
|
+
| Field | Type | Description |
|
|
10
|
+
|-------|------|-------------|
|
|
11
|
+
| `name` | string | Display name |
|
|
12
|
+
| `table_name` | string | Database table name (lowercase, underscores) |
|
|
13
|
+
|
|
14
|
+
## Optional Fields
|
|
15
|
+
|
|
16
|
+
| Field | Type | Default | Description |
|
|
17
|
+
|-------|------|---------|-------------|
|
|
18
|
+
| `database_alias` | string | `"default"` | Database connection |
|
|
19
|
+
| `auto_increment_column_name` | string | `"id"` | Primary key column |
|
|
20
|
+
| `is_cms_object` | int | `0` | `1` = CMS/system object, `0` = App object |
|
|
21
|
+
| `has_trash` | int | `0` | Enable soft delete |
|
|
22
|
+
| `has_order` | int | `0` | Enable ordering |
|
|
23
|
+
| `has_draft` | int | `0` | Enable draft mode |
|
|
24
|
+
| `description` | string | null | Object description |
|
|
25
|
+
| `section_title` | string | null | Section title in forms |
|
|
26
|
+
| `protect_schema` | int | `0` | Prevent schema modifications |
|
|
27
|
+
|
|
28
|
+
## Menu Fields
|
|
29
|
+
|
|
30
|
+
| Field | Type | Description |
|
|
31
|
+
|-------|------|-------------|
|
|
32
|
+
| `main_menu_id` | int | Top-level menu ID |
|
|
33
|
+
| `sub_menu_id` | int | Sub-menu ID |
|
|
34
|
+
| `menu_id` | int | Direct menu ID |
|
|
35
|
+
|
|
36
|
+
## Creating an Object
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
butterfly-cli record add objects --data '{
|
|
40
|
+
"name": "Products",
|
|
41
|
+
"table_name": "products",
|
|
42
|
+
"description": "Product catalog",
|
|
43
|
+
"is_cms_object": 0,
|
|
44
|
+
"has_trash": 1
|
|
45
|
+
}'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Get Object by ID
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
butterfly-cli record get objects --id 128
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Get Object by Table Name
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
butterfly-cli record get objects --column table_name --value "products"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Update Object
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
butterfly-cli record edit objects --id 128 --data '{
|
|
64
|
+
"description": "Updated description"
|
|
65
|
+
}'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Full Example
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Create a Products object
|
|
72
|
+
butterfly-cli record add objects --data '{
|
|
73
|
+
"name": "Products",
|
|
74
|
+
"table_name": "products",
|
|
75
|
+
"database_alias": "default",
|
|
76
|
+
"auto_increment_column_name": "id",
|
|
77
|
+
"is_cms_object": 0,
|
|
78
|
+
"has_trash": 1,
|
|
79
|
+
"has_order": 0,
|
|
80
|
+
"description": "Product management"
|
|
81
|
+
}'
|
|
82
|
+
|
|
83
|
+
# Response: SUCCESS: add operation completed (ID: 150)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Related
|
|
87
|
+
|
|
88
|
+
- [Creating Objects Step-by-Step](./creating.md)
|
|
89
|
+
- [Object Specs](../object-specs/README.md) - Add fields to objects
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Creating Objects
|
|
2
|
+
|
|
3
|
+
Step-by-step guide to creating a new object (table) in Butterfly.
|
|
4
|
+
|
|
5
|
+
## Step 1: Plan Your Object
|
|
6
|
+
|
|
7
|
+
Before creating, determine:
|
|
8
|
+
- **Table name**: lowercase, underscores (e.g., `order_items`)
|
|
9
|
+
- **Display name**: Human readable (e.g., "Order Items")
|
|
10
|
+
- **Type**: App object (`is_cms_object: 0`) or CMS object (`is_cms_object: 1`)
|
|
11
|
+
|
|
12
|
+
## Step 2: Create the Object
|
|
13
|
+
|
|
14
|
+
### Minimal Object
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
butterfly-cli record add objects --data '{
|
|
18
|
+
"name": "Order Items",
|
|
19
|
+
"table_name": "order_items"
|
|
20
|
+
}'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Full Object with Options
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
butterfly-cli record add objects --data '{
|
|
27
|
+
"name": "Order Items",
|
|
28
|
+
"table_name": "order_items",
|
|
29
|
+
"database_alias": "default",
|
|
30
|
+
"auto_increment_column_name": "id",
|
|
31
|
+
"is_cms_object": 0,
|
|
32
|
+
"has_trash": 1,
|
|
33
|
+
"has_order": 0,
|
|
34
|
+
"has_draft": 0,
|
|
35
|
+
"description": "Items in customer orders",
|
|
36
|
+
"section_title": "Order Item"
|
|
37
|
+
}'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Step 3: Add Fields (Object Specs)
|
|
41
|
+
|
|
42
|
+
After creating the object, add fields using the returned ID:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Get the object ID from the response
|
|
46
|
+
# SUCCESS: add operation completed (ID: 150)
|
|
47
|
+
|
|
48
|
+
# Add a Name field
|
|
49
|
+
butterfly-cli record add object_specs --data '{
|
|
50
|
+
"object_id": 150,
|
|
51
|
+
"name": "Name",
|
|
52
|
+
"column_name": "name",
|
|
53
|
+
"type": "string",
|
|
54
|
+
"required": 1,
|
|
55
|
+
"list_column": 1,
|
|
56
|
+
"edit_order_no": 1
|
|
57
|
+
}'
|
|
58
|
+
|
|
59
|
+
# Add a Price field
|
|
60
|
+
butterfly-cli record add object_specs --data '{
|
|
61
|
+
"object_id": 150,
|
|
62
|
+
"name": "Price",
|
|
63
|
+
"column_name": "price",
|
|
64
|
+
"type": "decimal",
|
|
65
|
+
"edit_order_no": 2
|
|
66
|
+
}'
|
|
67
|
+
|
|
68
|
+
# Add a Status dropdown
|
|
69
|
+
butterfly-cli record add object_specs --data '{
|
|
70
|
+
"object_id": 150,
|
|
71
|
+
"name": "Status",
|
|
72
|
+
"column_name": "status",
|
|
73
|
+
"type": "from_list",
|
|
74
|
+
"val_1": "active:Active,inactive:Inactive",
|
|
75
|
+
"edit_order_no": 3
|
|
76
|
+
}'
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Step 4: Verify
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Get the object
|
|
83
|
+
butterfly-cli record get objects --id 150
|
|
84
|
+
|
|
85
|
+
# Get all specs for the object
|
|
86
|
+
butterfly-cli record get object_specs --column object_id --value 150
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Common Patterns
|
|
90
|
+
|
|
91
|
+
### E-commerce Product
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Create object
|
|
95
|
+
butterfly-cli record add objects --data '{
|
|
96
|
+
"name": "Products",
|
|
97
|
+
"table_name": "products",
|
|
98
|
+
"has_trash": 1
|
|
99
|
+
}'
|
|
100
|
+
|
|
101
|
+
# Add fields (assuming object_id is 150)
|
|
102
|
+
butterfly-cli record add object_specs --data '{"object_id":150,"name":"Title","column_name":"title","type":"string","required":1,"list_column":1,"edit_order_no":1}'
|
|
103
|
+
butterfly-cli record add object_specs --data '{"object_id":150,"name":"SKU","column_name":"sku","type":"string","edit_order_no":2}'
|
|
104
|
+
butterfly-cli record add object_specs --data '{"object_id":150,"name":"Price","column_name":"price","type":"decimal","edit_order_no":3}'
|
|
105
|
+
butterfly-cli record add object_specs --data '{"object_id":150,"name":"Description","column_name":"description","type":"textarea","edit_order_no":4}'
|
|
106
|
+
butterfly-cli record add object_specs --data '{"object_id":150,"name":"Status","column_name":"status","type":"from_list","val_1":"draft:Draft,active:Active,archived:Archived","edit_order_no":5}'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### User Profile
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Create object
|
|
113
|
+
butterfly-cli record add objects --data '{
|
|
114
|
+
"name": "User Profiles",
|
|
115
|
+
"table_name": "user_profiles"
|
|
116
|
+
}'
|
|
117
|
+
|
|
118
|
+
# Add fields
|
|
119
|
+
butterfly-cli record add object_specs --data '{"object_id":151,"name":"User","column_name":"user_id","type":"dropdown","val_1":"users","val_2":"id","val_3":"name","required":1,"edit_order_no":1}'
|
|
120
|
+
butterfly-cli record add object_specs --data '{"object_id":151,"name":"Bio","column_name":"bio","type":"textarea","edit_order_no":2}'
|
|
121
|
+
butterfly-cli record add object_specs --data '{"object_id":151,"name":"Avatar","column_name":"avatar","type":"image","edit_order_no":3}'
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Next Steps
|
|
125
|
+
|
|
126
|
+
- [Object Specs Reference](../object-specs/README.md)
|
|
127
|
+
- [Field Types](../field-types/README.md)
|