Skip to content

Commit beab42e

Browse files
committed
basic formly conversion working
1 parent fe48d67 commit beab42e

File tree

3 files changed

+64
-9
lines changed

3 files changed

+64
-9
lines changed

edit/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
'use strict';
22
var ScriptBase = require('../sub-generator-base.js');
33
var helper = require('../helper.js');
4+
var formlyConverter = require('../formly-converter');
45
var path = require('path');
56
var fs = require('fs');
67
var chalk = require('chalk');
78

89
module.exports = ScriptBase.extend({
910
initializing: function() {
1011
this.templateName = 'edit';
12+
var formlyObj = formlyConverter(this.options.model);
13+
var formlyObjStr = helper.simpleObjectToString(formlyObj, ' ');
14+
15+
this.formlyFields = formlyObjStr;
1116

1217
// needs to be called manually
1318
this.init();

formly-converter.js

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
var helper = require('./helper');
2+
var crudGen = require('./crud-gen');
3+
var fs = require('fs');
4+
5+
function getModelData(modelDir) {
6+
// read model definitions
7+
var modelDefinitions = [];
8+
var files = fs.readdirSync(modelDir);
9+
for (var i in files) {
10+
var filename = files[i];
11+
// check if json
12+
if (filename.substr(filename.lastIndexOf('.') + 1) === 'json') {
13+
var modelDefinition = require(modelDir + '/' + filename);
14+
modelDefinitions.push(modelDefinition);
15+
}
16+
}
17+
return modelDefinitions;
18+
}
19+
20+
function convertModelToFormly(model) {
21+
var formlyFields = [];
22+
23+
for (var key in model.properties) {
24+
var field = model.properties[key];
25+
var tplOpts = {};
26+
var formlyField = {
27+
templateOptions: tplOpts
28+
};
29+
30+
formlyField.key = key;
31+
tplOpts.label = key;
32+
33+
if (field.type === 'string' || field.type === 'number') {
34+
formlyField.type = 'input';
35+
}
36+
if (field.type === 'date') {
37+
formlyField.type = 'datepicker';
38+
tplOpts.datepickerPopup = 'dd-MMMM-yyyy';
39+
}
40+
if (field.required) {
41+
tplOpts.required = true;
42+
}
43+
44+
45+
formlyFields.push(formlyField);
46+
}
47+
48+
return formlyFields;
49+
}
50+
51+
var modelData = getModelData('/home/johannes/www/angular-auto-admin-loopback/common/models');
52+
var formlyData = convertModelToFormly(modelData[0]);
53+
54+
55+
//console.log(modelData);
56+
console.log(formlyData);
57+
58+
module.exports = convertModelToFormly;

templates/app/edit.js

+1-9
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,7 @@ angular.module('<%= moduleName %>')
2121
$scope.vm.model = ModelService.findById({id: $state.params.id});
2222
}
2323

24-
$scope.vm.fields = [
25-
{
26-
key: 'name',
27-
type: 'input',
28-
templateOptions: {
29-
label: 'First Name'
30-
}
31-
}
32-
];
24+
$scope.vm.fields = <%= formlyFields %>;
3325

3426
$scope.vm.onSubmit = function() {
3527
alert(JSON.stringify($scope.vm.model), null, 2);

0 commit comments

Comments
 (0)