diff --git a/example/pom.xml b/example/pom.xml
index a4cdb395ea597cd6a167dd03f5cd24ef8f919fc3..8962c4bdbdbc5c881b50a0526f0e359e7ab3ffe7 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -72,10 +72,10 @@
2.6
- ttf
- woff
- woff2
-
+ ttf
+ woff
+ woff2
+
diff --git a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/MetaResource.java b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/MetaResource.java
index a78b6ea86acd0ea3aae355ed9e7fd0f202498048..aa1180094518e7481f00588606a4e977d02a5a5e 100644
--- a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/MetaResource.java
+++ b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/MetaResource.java
@@ -21,6 +21,7 @@ public class MetaResource extends BaseMeta {
private Boolean isSystem;
private List funcs;
private Map contentPanel;
+ private Map propertiesPanel;
public enum Type{
folder, file, metadata;
@@ -82,4 +83,12 @@ public class MetaResource extends BaseMeta {
public void setContentPanel(Map contentPanel) {
this.contentPanel = contentPanel;
}
+
+ public Map getPropertiesPanel() {
+ return propertiesPanel;
+ }
+
+ public void setPropertiesPanel(Map propertiesPanel) {
+ this.propertiesPanel = propertiesPanel;
+ }
}
diff --git a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/loader/MetaResourceLoader.java b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/loader/MetaResourceLoader.java
index 2e9f812dd83534db09e2b8d04b9df5535ff776aa..235411108f84c7ceac45e9dc2a6417eb824fe4ec 100644
--- a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/loader/MetaResourceLoader.java
+++ b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/java/com/fast/develop/meta/resource/loader/MetaResourceLoader.java
@@ -59,6 +59,7 @@ public class MetaResourceLoader implements MetaLoader {
bindIsSystem(rawSchema, metaResource);
bindFuncs(rawSchema, metaResource);
bindContentPanel(rawSchema, metaResource);
+ bindpropertiesPanel(rawSchema, metaResource);
return metaResource;
}
@@ -101,6 +102,13 @@ public class MetaResourceLoader implements MetaLoader {
}
}
+ private void bindpropertiesPanel(JSONObject rawSchema, MetaResource metaResource){
+ JSONObject jsonObject = rawSchema.optJSONObject("propertiesPanel");
+ if(jsonObject != null){
+ metaResource.setPropertiesPanel(jsonObject.toMap());
+ }
+ }
+
public ObjectSchema getObjectSchema() {
return objectSchema;
}
diff --git a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file.json b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file.json
index 93f73dc03c55bf92d3764e0527534330cdb6ba27..2e91b9585374ebf474eac26fcef5e55b585eec24 100644
--- a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file.json
+++ b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file.json
@@ -54,9 +54,8 @@
}
]
}
-
-
],
+
"contentPanel":{
"mode":"amis",
"amisSchema":{
@@ -84,6 +83,9 @@
]
}
}
+ },
+ "propertiesPanel":{
+ "mode":"listener"
}
}
diff --git a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field.json b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field.json
index 8806db50854f1788f7da0b0f2d0a1ae5bd363efc..8b2de676677afaed122a2a739b7f82c1fd7685a3 100644
--- a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field.json
+++ b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field.json
@@ -11,6 +11,9 @@
"mode":"listener",
"listenerName":"removeListener"
}
- ]
+ ],
+ "propertiesPanel":{
+ "mode":"listener"
+ }
}
diff --git a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field_primary_key.json b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field_primary_key.json
index 5e48e267c5b8c30537ab644f82e59e4c874a189f..49c42e5b8d48c262260b7d1acb07199964eb58bf 100644
--- a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field_primary_key.json
+++ b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_file_field_primary_key.json
@@ -8,6 +8,9 @@
{
"title":"主键不可操作"
}
- ]
+ ],
+ "propertiesPanel":{
+ "mode":"listener"
+ }
}
diff --git a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_folder.json b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_folder.json
index dfe3388e9dc6495bf6b3a2fc6fad929610128ea1..14504e199b2f2a6a848dcb31c624d0007d3471a3 100644
--- a/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_folder.json
+++ b/fast-develop-server/fast-develop-meta/fast-develop-meta-resource/src/main/resources/.schema/resource/domain_folder.json
@@ -76,6 +76,32 @@
"mode":"listener",
"listenerName":"renameListener"
}
- ]
+ ],
+ "propertiesPanel":{
+ "mode":"amis",
+ "amisSchema":{
+ "title": "",
+ "type": "form",
+ "mode": "horizontal",
+ "api": "/saveForm",
+ "body": [
+ {
+ "label": "Name",
+ "type": "input-text",
+ "name": "name"
+ },
+ {
+ "label": "Email",
+ "type": "input-email",
+ "name": "email"
+ },
+ {
+ "type": "tpl",
+ "tpl": "Hello ${name}"
+ }
+ ],
+ "actions":[]
+ }
+ }
}
diff --git a/fast-develop-web/fast-develop-editor/pom.xml b/fast-develop-web/fast-develop-editor/pom.xml
index 7b88ac8af9c25d60d7f64834d6c9dd3b50caa329..1fd2b3f4fe13ade72688f53179aa85ec222043db 100644
--- a/fast-develop-web/fast-develop-editor/pom.xml
+++ b/fast-develop-web/fast-develop-editor/pom.xml
@@ -54,10 +54,10 @@
2.6
- ttf
- woff
- woff2
-
+ ttf
+ woff
+ woff2
+
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/gulpfile.js b/fast-develop-web/fast-develop-editor/src/fast-develop/gulpfile.js
index 5679b26e84b12de85c5a641119b1656d1331fc4d..811c56df2c0061cfe4f1976d126d13157c91b3c5 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/gulpfile.js
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/gulpfile.js
@@ -52,7 +52,7 @@ function js(){
function module(){
- return src('src/js/module/*')
+ return src('src/js/module/**')
.pipe(dest(distPath + 'js/module'))
}
@@ -157,7 +157,7 @@ function watches(){
watch(['src/less/*.less'], series(css,cssMinify))
watch(['src/css/*.css'], series(cssMinify))
watch(['src/js/*.js'], parallel(js))
- watch(['src/js/module/*.js'], parallel(module))
+ watch(['src/js/module/**'], parallel(module))
watch(['src/index.html'], parallel(html))
watch(['src/image/*'], parallel(image))
watch(['src/config/*'], parallel(fast_config))
@@ -177,8 +177,9 @@ function server(){
middleware: function (connect, opt) {
return [
createProxyMiddleware(
- '/api',{
- target: 'http://localhost:8080'
+ '/builder',{
+ // target: 'http://localhost:8080'
+ target: 'http://localhost:8210'
})
]
@@ -187,11 +188,11 @@ function server(){
watch(['src/less/*.less'], series(css,cssMinify))
watch(['src/css/*.css'], series(cssMinify))
watch(['src/js/*.js'], parallel(js))
- watch(['src/js/module/*.js'], parallel(module))
+ watch(['src/js/module/**'], parallel(module))
watch(['src/index.html'], parallel(html))
watch(['src/image/*'], parallel(image))
watch(['src/config/*'], parallel(fast_config))
- watch(['src/compoment/**/*.*'], parallel(compoment))
+ watch(['src/compoment/**'], parallel(compoment))
}
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/config/fast.config.yml b/fast-develop-web/fast-develop-editor/src/fast-develop/src/config/fast.config.yml
index dbf08fb4c0ef49d3c2b52d056753faf61eb5ed90..883d28f8e9dd683e7a16a8225b747e70c8f21cbd 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/config/fast.config.yml
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/config/fast.config.yml
@@ -1,2 +1,4 @@
## 网站配置
-api: "/api/"
+api: "/builder/"
+#api: "/api/"
+enableEnv: false
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/index.html b/fast-develop-web/fast-develop-editor/src/fast-develop/src/index.html
index 609b3368628f3c37e2df3179900585bd2bea5371..532145dae5a14480776f165fb23802ffdc3b2341 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/index.html
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/index.html
@@ -490,7 +490,7 @@
var treeConst;
- var schema = {
+ var schemas = {
formType:{
domain_model:domainModelForm,
domain_model_field:domainModelFieldForm,
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/fastDevelop.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/fastDevelop.js
index 9e847299780b7fec5ee3edf5748dfb353cbe0794..9106b11021aadf419d3021d501e375bab043da41 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/fastDevelop.js
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/fastDevelop.js
@@ -9,11 +9,16 @@ layui.config({
version: "0.1.0",
api:"api"
}).extend({
- editor: "editor", // 框架布局组件
+ editor: "editor/editor", // 框架布局组件
+ resource_content: "editor/resource_content", // 资源内容模块
+ resource_tree: "editor/resource_tree", // 资源功能模块
+ listener: "editor/listener", // 监听器模块
+ schema: "editor/schema", // Schema模块
+ domain_design: "editor/domain_design",
+ resource_properties: "editor/resource_properties",
jqgrid: "jqgrid", // jq表格组件
etree: "etree", // layui.etree 扩展树
ztree: "ztree", // layui.ztree
- domain_design: "domain_design",
edropdown: "edropdown", // layui.edropdown 扩展下拉
fast_config: "fast_config", // 配置
yaml: "yaml", // 配置
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/domain_design.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/domain_design.js
similarity index 99%
rename from fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/domain_design.js
rename to fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/domain_design.js
index c0a723081ce2c3454ca6cb19a54b3510b0c90039..2c73bbd4ae01199502c6ccc222c22fe0171dcbee 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/domain_design.js
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/domain_design.js
@@ -27,7 +27,7 @@ layui.define(['element', 'api', 'fast_config'], function(exports) {
var grid;
var parentContextData = window.parent.window.contextData;
- var path = parentContextData.contextmenuData.data.path;
+ // var path = parentContextData.contextmenuData.data.path;
var metaName;
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/editor.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/editor.js
new file mode 100644
index 0000000000000000000000000000000000000000..a904657c7c148a9c737c1d86e8f8535df283cc50
--- /dev/null
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/editor.js
@@ -0,0 +1,139 @@
+layui.define(['element', 'edropdown', 'layer', 'util', 'form', 'fast_config', 'api', 'schema', 'resource_tree'], function(exports) {
+ "use strict";
+
+
+
+ /**
+ * Button component
+ * */
+ var MOD_NAME = 'editor',
+ $ = layui.jquery,
+ element = layui.element,
+ layer = layui.layer,
+ form = layui.form,
+ util = layui.util,
+ api = layui.api,
+ contentElem = '#fast-body',
+ resource_tree = layui.resource_tree,
+ modelTree
+
+ ;
+
+
+ var editor = function(opt) {
+ this.option = opt;
+ };
+
+
+ function appendElem(option){
+
+ var sideBox = `
+
+ `;
+
+ $(option.elem).append(sideBox);
+ }
+
+
+ /**
+ * Button start loading
+ * */
+ editor.prototype.render = function(opt) {
+
+
+ var option = {
+ elem: opt.elem,
+ funcAmis: null,
+ }
+
+ appendElem(option);
+
+ // resource_tree.render({
+ // elem: "#workflowResource",
+ // api:{
+ // enableRootPath: false,
+ // url: "http://localhost:8210/builder/api/v1/engine/workflow/tree",
+ // success: function(data){
+ // var wkflTree = $.fn.zTree.getZTreeObj("workflowResource");
+ // wkflTree.addNodes(null, data);
+ // }
+ // },
+ // contentElem: contentElem
+ // })
+
+ resource_tree.render({
+ elem: "#resource",
+ api:"http://localhost:8210/builder/api/v1/engine/development/tree",
+ contentElem: contentElem
+ })
+
+
+ return new editor(option);
+ }
+
+ //头部事件
+ util.event('lay-header-event', {
+ //左侧菜单事件
+ menuLeft: function(othis){
+ layer.msg('展开左侧菜单的操作', {icon: 0});
+ }
+ ,menuRight: function(){
+ layer.open({
+ type: 1
+ ,content: '处理右侧面板的操作
'
+ ,area: ['360px', '100%']
+ ,offset: 'rt' //右上角
+ ,anim: 5
+ ,shadeClose: true
+ });
+ }
+ });
+
+
+
+ $("#run").click(function(){
+ api.get({
+ enableRootPath: true,
+ url: "meta/configuration/reload",
+ async: false,
+ success: function(data){
+ layer.msg('操作成功');
+ }
+ });
+
+ });
+
+
+ exports(MOD_NAME, new editor());
+});
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/listener.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/listener.js
new file mode 100644
index 0000000000000000000000000000000000000000..e3fbb6ae22caa71c716e84d9a8755d7c06443a94
--- /dev/null
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/listener.js
@@ -0,0 +1,79 @@
+layui.define(['element', 'fast_config'], function(exports) {
+ "use strict";
+
+
+ function domainModelContentPanelListener(data) {
+ amis.render({
+ elem: '#fast-body',
+ json: {
+ type: 'page',
+ title: '表单页面',
+ body: {
+ type: 'form',
+ mode: 'horizontal',
+ api: '/saveForm',
+ body: [
+ {
+ label: 'Name',
+ type: 'input-text',
+ name: 'name'
+ },
+ {
+ label: 'Email',
+ type: 'input-email',
+ name: 'email'
+ }
+ ]
+ }
+ }
+ })
+ }
+
+ function designDomainListener(data) {
+ designDoamin()
+ }
+
+ function designDoamin(script, data) {
+ resetContent(contentElem)
+ domain_design.render({
+ elem: contentElem
+ })
+ }
+
+ /**
+ * Button component
+ * */
+ var MOD_NAME = 'listener',
+ $ = layui.jquery,
+ fast_config = layui.fast_config,
+
+ //监听器
+ contentPanelListeners = {
+ domainmodel_contentPanel_listener:designDomainListener
+ },
+ contextMenuListeners = {
+
+ }
+ ;
+
+
+
+ var listener = {
+ registerContentPanel : function(name, listener){
+ contentPanelListeners[name] = listener;
+ },
+ getContentPanelListener : function(name){
+ return contentPanelListeners[name];
+ },
+ registerContextMenu : function(name, listener){
+ contextMenuListeners[name] = listener;
+ },
+ getContextMenuListener : function(name){
+ return contextMenuListeners[name];
+ }
+ }
+
+
+
+ exports(MOD_NAME, listener);
+});
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_content.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_content.js
new file mode 100644
index 0000000000000000000000000000000000000000..62b31d4f5820df6a8bd0a67e8e55a118f0d04b21
--- /dev/null
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_content.js
@@ -0,0 +1,114 @@
+layui.define(['element', 'api', 'amis', 'schema', 'listener'], function(exports) {
+ "use strict";
+
+ /**
+ * Button component
+ * */
+ var MOD_NAME = 'resource_content',
+ $ = layui.jquery,
+ api = layui.api,
+ amis = layui.amis,
+ schema = layui.schema,
+ listeners = layui.listener,
+ metaType = null
+ ;
+
+ var resource_content = function(opt) {
+ this.option = opt;
+ };
+
+
+ function resetContent(contentElem){
+ $(contentElem).remove();
+ $('.layui-body.gs-body').append('')
+ }
+
+
+ /**
+ 弹出iframe页面(iframe后面会添加灰色蒙版)
+ **/
+ function showIframe(url,contentElem,w,h){
+ var frameId = metaType + '_YuFrame1';
+
+ //添加iframe
+ var if_w = w;
+ var if_h = h;
+ //allowTransparency='true' 设置背景透明
+ $("").prependTo(contentElem);
+ var st=document.documentElement.scrollTop|| document.body.scrollTop;//滚动条距顶部的距离
+ var sl=document.documentElement.scrollLeft|| document.body.scrollLeft;//滚动条距左边的距离
+ var ch=document.documentElement.clientHeight;//屏幕的高度
+ var cw=document.documentElement.clientWidth;//屏幕的宽度
+ var objH=$("#" + frameId).height();//浮动对象的高度
+ var objW=$("#" + frameId).width();//浮动对象的宽度
+ var objT=Number(st)+(Number(ch)-Number(objH))/2;
+ var objL=Number(sl)+(Number(cw)-Number(objW))/2;
+ $("#" + frameId).css('left',objL);
+ $("#" + frameId).css('top',objT);
+
+ $("#" + frameId).attr("src", url)
+
+ //添加背景遮罩
+ var frameById = metaType + '_YuFrame1Bg';
+ $("").prependTo(contentElem);
+ var bgWidth = Math.max($("body").width(),cw);
+ var bgHeight = Math.max($("body").height(),ch);
+ $("#" + frameById).css({width:bgWidth,height:bgHeight});
+
+ //点击背景遮罩移除iframe和背景
+ $("#" + frameById).click(function() {
+ $("#" + frameId).remove();
+ $("#" + frameById).remove();
+ });
+ }
+
+ /**
+ * Button start loading
+ * */
+ resource_content.prototype.render = function(opt) {
+
+ var option = {
+ elem: opt.elem,
+ treeNode: opt.treeNode,
+ amisData: opt.amisData
+ }
+
+ metaType = option.treeNode.data.type.metaType;
+
+ var resourceTypeSchema = schema.get("resource");
+ var typeSchema = resourceTypeSchema[metaType];
+
+ resetContent(option.elem);
+ if(typeSchema.contentPanel){
+ var id = typeSchema.id;
+ var contentPanel = typeSchema.contentPanel;
+ if(contentPanel.mode === 'listener'){
+ var listenerName = id + '_contentPanel_listener';
+ debugger
+ var listener = listeners.getContentPanelListener(listenerName);
+ if(listener && typeof listener === 'function'){
+ listener(option.treeNode)
+ }
+ }else if(contentPanel.mode === 'amis'){
+ var amisSchema = contentPanel.amisSchema;
+ var amisSchemaApi = contentPanel.amisSchemaApi;
+ amis.render({
+ elem: option.elem,
+ schema: amisSchema,
+ schemaApi: amisSchemaApi,
+ props:{
+ data:option.amisData
+ }
+ })
+ }else if(contentPanel.mode === 'iframe'){
+ var iframeUrl =contentPanel.url.format(option.amisData);
+ showIframe(iframeUrl,option.elem);
+ }
+ }
+
+ return new resource_content(option);
+ }
+
+
+ exports(MOD_NAME, new resource_content());
+});
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_properties.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_properties.js
new file mode 100644
index 0000000000000000000000000000000000000000..41eac0312f3307975a339e472919886b6eacab0a
--- /dev/null
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_properties.js
@@ -0,0 +1,183 @@
+layui.define(['element', 'api', 'amis', 'schema', 'listener', 'form'], function(exports) {
+ "use strict";
+
+ /**
+ * Button component
+ * */
+ var MOD_NAME = 'resource_properties',
+ $ = layui.jquery,
+ api = layui.api,
+ amis = layui.amis,
+ schema = layui.schema,
+ form = layui.form,
+
+ laytpl = layui.laytpl,
+ metaType = null,
+ selectFileMetaData,
+ elem = null,
+ path = null,
+ treeNode = null,
+
+ propertiesPanelListeners = {
+ domain_model_propertiesPanel_listener:domain_model_propertiesPanel_listener,
+ domain_model_field_propertiesPanel_listener:domain_model_field_propertiesPanel_listener,
+ domain_file_field_primary_key_propertiesPanel_listener:domain_file_field_primary_key_propertiesPanel_listener
+ }
+ ;
+
+ function domain_model_propertiesPanel_listener(data){
+ getFileMetaData(path, treeNode);
+ }
+ function domain_model_field_propertiesPanel_listener(data){
+ getFileMetaData(path, treeNode);
+ }
+ function domain_file_field_primary_key_propertiesPanel_listener(data){
+ getFileMetaData(path, treeNode);
+ }
+
+ var resource_properties = function(opt) {
+ this.option = opt;
+ };
+
+
+ function randerForm(script, data) {
+ var getTpl = script.innerHTML,view = document.getElementById(elem.replace('#', ''));
+ laytpl(getTpl).render(data, function(html){
+ view.innerHTML = html;
+ });
+ }
+
+
+ function resetForm(){
+ $("#form-data")[0].reset();
+ form.render();
+ }
+
+ function getFileMetaData(path, selectData) {
+ randerForm(schemas.formType[selectData.data.type.metaType], selectData.data)
+ api.get({
+ enableRootPath: true,
+ url: "resource",
+ data: {path:path},
+ async: false,
+ dataType: "json",
+ success: function(data){
+ selectFileMetaData = {
+ metadata: data,
+ selectData: selectData
+ }
+
+ //重置表单
+ resetForm();
+ //给表单赋值
+ form.val('data-form',selectFileMetaData.metadata)
+
+ }
+ });
+ }
+
+
+ /**
+ 弹出iframe页面(iframe后面会添加灰色蒙版)
+ **/
+ function showIframe(url,w,h){
+ var frameId = metaType + 'proerptes_' + '_YuFrame1';
+
+ //添加iframe
+ var if_w = w;
+ var if_h = h;
+ //allowTransparency='true' 设置背景透明
+ $("").prependTo(contentElem);
+ var st=document.documentElement.scrollTop|| document.body.scrollTop;//滚动条距顶部的距离
+ var sl=document.documentElement.scrollLeft|| document.body.scrollLeft;//滚动条距左边的距离
+ var ch=document.documentElement.clientHeight;//屏幕的高度
+ var cw=document.documentElement.clientWidth;//屏幕的宽度
+ var objH=$("#" + frameId).height();//浮动对象的高度
+ var objW=$("#" + frameId).width();//浮动对象的宽度
+ var objT=Number(st)+(Number(ch)-Number(objH))/2;
+ var objL=Number(sl)+(Number(cw)-Number(objW))/2;
+ $("#" + frameId).css('left',objL);
+ $("#" + frameId).css('top',objT);
+
+ $("#" + frameId).attr("src", url)
+
+ //添加背景遮罩
+ var frameById = metaType + 'proerptes_' + '_YuFrame1Bg';
+ $("").prependTo(contentElem);
+ var bgWidth = Math.max($("body").width(),cw);
+ var bgHeight = Math.max($("body").height(),ch);
+ $("#" + frameById).css({width:bgWidth,height:bgHeight});
+
+ //点击背景遮罩移除iframe和背景
+ $("#" + frameById).click(function() {
+ $("#" + frameId).remove();
+ $("#" + frameById).remove();
+ });
+ }
+
+
+
+ function resetContent(contentElem){
+ $(contentElem).remove();
+ $('#viewFormContainer').append('')
+ }
+
+
+
+ /**
+ * Button start loading
+ * */
+ resource_properties.prototype.render = function(opt) {
+
+ var option = {
+ elem: opt.elem,
+ path: opt.path,
+ treeNode: opt.treeNode,
+ amisData: opt.amisData
+ }
+
+ elem = option.elem;
+ metaType = option.treeNode.data.type.metaType;
+ path = option.path;
+ treeNode = option.treeNode;
+
+ var resourceTypeSchema = schema.getResource();
+ var typeSchema = resourceTypeSchema[metaType];
+
+ resetContent(option.elem);
+
+ debugger
+ if(typeSchema.propertiesPanel){
+ var id = typeSchema.id;
+ var propertiesPanel = typeSchema.propertiesPanel;
+ if(propertiesPanel.mode === 'listener'){
+ var listenerName = id + '_propertiesPanel_listener';
+ var listener = propertiesPanelListeners[listenerName];
+ if(listener && typeof listener === 'function'){
+ listener(option.treeNode)
+ }
+ }else if(propertiesPanel.mode === 'amis'){
+ // var allData = getGlobalEnv(option.treeNode.data);
+ var amisSchema = propertiesPanel.amisSchema;
+ var amisSchemaApi = propertiesPanel.amisSchemaApi;
+ amis.render({
+ elem: option.elem,
+ schema: amisSchema,
+ schemaApi: amisSchemaApi,
+ props:{
+ data:option.treeNode.data
+ }
+ })
+ }else if(propertiesPanel.mode === 'iframe'){
+ var iframeUrl = propertiesPanel.url;
+ showIframe(iframeUrl);
+ }
+ }
+
+
+ return new resource_properties(option);
+ }
+
+
+ exports(MOD_NAME, new resource_properties());
+});
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js
similarity index 60%
rename from fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor.js
rename to fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js
index 65e6fd2134bea505896baa681729eecb5aac898d..89f0e17d556cc3215e84648321b6dcf94500988b 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor.js
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/resource_tree.js
@@ -1,50 +1,292 @@
-layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis', 'jqgrid', 'fast_config', 'api', 'ztree', 'domain_design'], function(exports) {
+layui.define(['element', 'api', 'amis', 'schema', 'listener', 'jqgrid', 'domain_design', 'edropdown', 'form', 'schema', 'resource_content', 'ztree', 'resource_properties','fast_config'], function(exports) {
"use strict";
String.prototype.format = function() {
if(arguments.length == 0) return this;
- var obj = arguments[0];
+ var obj = getGlobalEnv(arguments[0]);
var s = this;
+ // for(var key in obj) {
+ // var value = JSON.stringify(obj[key]);
+ // if(typeof obj[key] === 'object'){
+ // s = s.replace(new RegExp("\"\\$\\{" + key + "\\}\"", "g"), value);
+ // }else{
+ // s = s.replace(new RegExp("\\$\\{" + key + "\\}", "g"), obj[key]);
+ // }
+ // }
for(var key in obj) {
var value = JSON.stringify(obj[key]);
- if(typeof obj[key] === 'object'){
+ if( typeof(obj[key])=='object'){
s = s.replace(new RegExp("\"\\$\\{" + key + "\\}\"", "g"), value);
- }else{
- s = s.replace(new RegExp("\\$\\{" + key + "\\}", "g"), obj[key]);
- }
+ var sobj = obj[key];
+ for(var sk in sobj){
+ s = s.replace(new RegExp("\\$\\{" + key+"\\."+sk + "\\}", "g"), sobj[sk]);
+ }
+ }
+ s = s.replace(new RegExp("\\$\\{" + key + "\\}", "g"), obj[key]);
}
return s;
}
- function domainModelContentPanelListener(data) {
- amis.render({
- elem: '#fast-body',
- json: {
- type: 'page',
- title: '表单页面',
- body: {
- type: 'form',
- mode: 'horizontal',
- api: '/saveForm',
- body: [
- {
- label: 'Name',
- type: 'input-text',
- name: 'name'
- },
- {
- label: 'Email',
- type: 'input-email',
- name: 'email'
- }
- ]
+
+ function getMetaPath(value){
+ var path;
+ if(contextmenuData.data.path===null || contextmenuData.data.path===''){
+ path = value;
+ }else{
+ path = contextmenuData.data.path + "#/" + value;
+ }
+ return path;
+ }
+
+ /**
+ * 创建文件
+ * @param path
+ */
+ function createMetaData(metaType, path){
+ function send(path){
+ api.post({
+ enableRootPath: true,
+ url: "schemas/" + metaType + "/fields",
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
+ }
+ });
+ }
+
+
+ layer.prompt({
+ formType: 0,
+ value: '',
+ title: '请输入文件名称',
+ area: ['200px', '20px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ var path = getMetaPath("fields/" + value);
+ send(path);
+ layer.close(index);
+ });
+ }
+
+ /**
+ * 启用
+ * @param path
+ */
+ function enable(metaType, path){
+ function send(){
+ api.put({
+ enableRootPath: true,
+ url: "schemas/" + metaType + "/enable",
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
+ }
+ });
+ }
+
+
+ layer.confirm('是否确认该操作?', {
+ btn: ['确认', '取消']
+ }, function(index, layero){
+ send();
+ layer.close(index);
+ }, function(index){
+ layer.close(index);
+ });
+ }
+
+ /**
+ * 启用
+ * @param path
+ */
+ function disable(metaType, path){
+ function send(){
+ api.put({
+ enableRootPath: true,
+ url: "schemas/" + metaType + "/disable",
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
+ }
+ });
+ }
+
+
+ layer.confirm('是否确认该操作?', {
+ btn: ['确认', '取消']
+ }, function(index, layero){
+ send();
+ layer.close(index);
+ }, function(index){
+ layer.close(index);
+ });
+
+ }
+
+ /**
+ * 创建文件
+ * @param path
+ */
+ function rename(name, path){
+ function send(name){
+ api.put({
+ enableRootPath: true,
+ url: "resource/rename/" + name,
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
+ }
+ });
+ }
+
+
+ layer.prompt({
+ formType: 0,
+ value: name,
+ title: '请输入文件名称',
+ area: ['200px', '20px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ send(value);
+ layer.close(index);
+ });
+ }
+
+
+
+ /**
+ * 创建文件
+ * @param path
+ */
+ function createFile(metaType){
+ function send(path){
+ api.post({
+ enableRootPath: true,
+ type: "POST",
+ url: "schemas/" + metaType,
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
}
+ });
+ }
+
+
+ layer.prompt({
+ formType: 0,
+ value: '',
+ title: '请输入文件名称',
+ area: ['200px', '20px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ var path = getFilePath(value);
+ send(path);
+ layer.close(index);
+ });
+ }
+
+
+ /**
+ * 获取右键选择数据 -> 文件路径
+ */
+ function getContextmenuFilePath(){
+ return contextmenuData.data.path;
+ }
+
+ /**
+ * 删除
+ * @param path
+ */
+ function deleteResource(){
+ //获取
+ var path = getContextmenuFilePath();
+ api.delete({
+ enableRootPath: true,
+ url: "resource",
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
}
+ });
+ }
+
+
+ function openDoamin(script, data) {
+ resetContent(contentElem)
+ jqgrid.render({
+ elem: contentElem
+ })
+ }
+
+ function designDoamin(script, data) {
+ resetContent(contentElem)
+ domain_design.render({
+ elem: contentElem
})
}
+
+ function getFilePath(value){
+ var path;
+ if(contextmenuData.data.path===null || contextmenuData.data.path===''){
+ path = value;
+ }else{
+ path = contextmenuData.data.path + "/" + value;
+ }
+ return path;
+ }
+
+ function reloadResource(){
+ debugger
+ treeObj.refresh();
+ // $.fn.zTree.getZTreeObj(treeObj.option.elem.replace('#','')).refresh();
+ // var treeObj = ztree.getZTreeObj(elem);
+ }
+
+ /**
+ * 创建目录
+ * @param path
+ */
+ function createFolder(){
+
+ function send(path){
+ api.post({
+ enableRootPath: true,
+ type: "POST",
+ url: "resource/folder",
+ data: {path:path},
+ async: false,
+ success: function(data){
+ reloadResource()
+ }
+ });
+ }
+
+
+ layer.prompt({
+ formType: 0,
+ value: '',
+ title: '请输入文件夹名称',
+ area: ['200px', '20px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ var path = getFilePath(value);
+ send(path);
+ layer.close(index);
+ });
+ }
+
+ function resetContent(contentElem){
+ $(contentElem).remove();
+ $('.layui-body.gs-body').append('')
+ }
+
+
+
function createFileListener(data) {
createFile('domain_model')
@@ -79,10 +321,6 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
createFolder()
}
- function createTest_contextMenu_listener(data) {
- testDialog();
- }
-
function removeListener(data) {
deleteResource();
}
@@ -91,73 +329,34 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
createMetaData();
}
- function testDialog(dialog, option){
- layer.open({
- type:1,
- // area:['20%','200px'],
- title: dialog.title,
- offset: '30%',
- content: "",
- shade: 0.3,
- btn: ['提交', '取消']
- ,btn1: function(index, layero){
- var amis = option;
- var formObject = amis.funcAmis.option.amisScoped.getComponentById("createTestForm").getValues();
- var optionApi = amis.funcAmis.option.schema.api;
-
- debugger
-
- execApi({
- optionApi : optionApi,
- execData : formObject,
- success: function(data){
- reloadResource()
- layer.closeAll();
- layer.msg('操作成功');
- }
- })
- // var kk=$("#username").val();
- // alert(kk);
- },
- cancel: function(layero,index){
- layer.closeAll();
- }
-
- });
- }
-
/**
* Button component
* */
- var MOD_NAME = 'editor',
+ var MOD_NAME = 'resource_tree',
$ = layui.jquery,
- element = layui.element,
- layer = layui.layer,
- form = layui.form,
- util = layui.util,
- laytpl = layui.laytpl,
- etree = layui.etree,
- amis = layui.amis,
- fast_config = layui.fast_config,
+ contextmenuData,
+ contentElem,
+ elem,
jqgrid = layui.jqgrid,
domain_design = layui.domain_design,
- api = layui.api,
- contentElem = '#fast-body',
- contextmenuData,
- selectFileMetaData,
- ztree=layui.ztree,
edropdown = layui.edropdown,
+ selectFileMetaData,
+ form = layui.form,
+ laytpl = layui.laytpl,
+ resource_content = layui.resource_content,
+ resource_properties = layui.resource_properties,
+ ztree = layui.ztree,
+ api = layui.api,
+ schema = layui.schema,
+ amis = layui.amis,
+ treeApi,
treeObj,
+ listener = layui.listener,
+ fast_config = layui.fast_config,
-
- //监听器
- contentPanelListeners = {
- domain_model_contentPanel_listener:domainModelContentPanelListener,
- },
//监听器
contextMenuListeners = {
createFileListener:createFileListener,
- createTest_contextMenu_listener:createTest_contextMenu_listener,
removeListener:removeListener,
createDomainModelListener:createDomainModelListener,
createDomainFieldListener:createDomainFieldListener,
@@ -167,96 +366,140 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
openDomainListener:openDomainListener,
designDomainListener:designDomainListener,
createFolderListener:createFolderListener
-
+ },
+ contentPanelListeners = {
+ domainmodel_contentPanel_listener:designDomainListener
+ },
+ settings = {
+ view: {
+ onKeyboard: true,
+ showLine: false,
+ theme:'default'
+ },
+ check: {
+ enable: true
+ },
+ data: {
+ simpleData: {
+ enable: true
+ }
+ }
+ ,callback:{
+ onLeafEnter: function(treeId,treeNode){
+ console.log(treeId,treeNode)
+ },
+ onClick: zTreeOnClick,
+ onRightClick: zTreeOnRightClick
}
- ;
+};
- function resetContent(contentElem){
- $(contentElem).remove();
- $('.layui-body.gs-body').append('')
- }
-
- /**
- 弹出iframe页面(iframe后面会添加灰色蒙版)
- **/
- function showIframe(url,w,h){
- //添加iframe
- var if_w = w;
- var if_h = h;
- //allowTransparency='true' 设置背景透明
- $("").prependTo(contentElem);
- var st=document.documentElement.scrollTop|| document.body.scrollTop;//滚动条距顶部的距离
- var sl=document.documentElement.scrollLeft|| document.body.scrollLeft;//滚动条距左边的距离
- var ch=document.documentElement.clientHeight;//屏幕的高度
- var cw=document.documentElement.clientWidth;//屏幕的宽度
- var objH=$("#YuFrame1").height();//浮动对象的高度
- var objW=$("#YuFrame1").width();//浮动对象的宽度
- var objT=Number(st)+(Number(ch)-Number(objH))/2;
- var objL=Number(sl)+(Number(cw)-Number(objW))/2;
- $("#YuFrame1").css('left',objL);
- $("#YuFrame1").css('top',objT);
-
- $("#YuFrame1").attr("src", url)
-
- //添加背景遮罩
- $("").prependTo(contentElem);
- var bgWidth = Math.max($("body").width(),cw);
- var bgHeight = Math.max($("body").height(),ch);
- $("#YuFrame1Bg").css({width:bgWidth,height:bgHeight});
-
- //点击背景遮罩移除iframe和背景
- $("#YuFrame1Bg").click(function() {
- $("#YuFrame1").remove();
- $("#YuFrame1Bg").remove();
- });
- }
+ ;
- var editor = function(opt) {
- this.option = opt;
- };
+ form.on('submit(*)', function(data){
+ var fileData = $.extend({}, selectFileMetaData.metadata, data.field);
- function reloadResource(){
- api.get({
+ api.put({
enableRootPath: true,
- url: "resource/tree",
+ url: "schemas/" + selectFileMetaData.selectData.data.type.metaType,
+ data: {path:selectFileMetaData.selectData.data.path, value:JSON.stringify(fileData)},
+ async: false,
+ // dataType: "json",
success: function(data){
- //可以重载所有基础参数
- // etree.reload('treeId', {
- // //新的参数
- // data: data
- // });
- var treeObj = $.fn.zTree.getZTreeObj("resource");
- treeObj.addNodes(null, data);
+ layer.msg('保存成功');
+ reloadResource()
}
+ });
+
+ // schemas
+ return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
+ });
+
+
+ function zTreeOnClick(event, treeId, treeNode) {
+
+ //是否是元数据,是的话请求元数据schema
+ resource_properties.render({
+ elem: '#viewForm',
+ path: treeNode.data.path,
+ treeNode: treeNode
+ })
+ resource_content.render({
+ elem: contentElem,
+ treeNode: treeNode,
+ amisData: getGlobalEnv(treeNode.data)
})
+
+
+
+ };
+
+ function zTreeOnRightClick(event, treeId, treeNode) {
+ // 将右击事件的节点数据绑定到以下变量中
+ contextmenuData = treeNode;
+ contextData.contextmenuData = contextmenuData;
+ };
+
+ var resource_tree = function(opt) {
+ this.option = opt;
+ };
+
+
+ function getContextmenuData(){
+ return contextmenuData;
}
- function isJSON(str) {
- if (typeof str == 'string') {
- try {
- JSON.parse(str);
- return true;
- } catch(e) {
- console.log(e);
- return false;
+
+ function renderDialog(dialog, option){
+ layer.open({
+ type:1,
+ // area:['20%','200px'],
+ title: dialog.title,
+ offset: '30%',
+ content: "",
+ shade: 0.3,
+ btn: ['提交', '取消']
+ ,btn1: function(index, layero){
+ var amis = option;
+ var formObject = amis.funcAmis.option.amisScoped.getComponentById("modelForm").getValues();
+ var optionApi = amis.funcAmis.option.schema.api;
+
+ debugger
+
+ execApi({
+ optionApi : optionApi,
+ execData : formObject,
+ success: function(data){
+ reloadResource()
+ layer.closeAll();
+ layer.msg('操作成功');
+ }
+ })
+ // var kk=$("#username").val();
+ // alert(kk);
+ },
+ cancel: function(layero,index){
+ layer.closeAll();
}
- }
+
+ });
}
+
function formatApiOptionData(optionApi, execData){
var data = JSON.parse(JSON.stringify(optionApi.data).format(execData));
if(data['&'] === '$$'){
- $.extend(data, execData);
+ $.extend(data, execData["mid"]);
delete data['&'];
}
+ $.extend(data, execData);
return data
}
function formatUrl(url, contextData){
//url替换
- return url.format(data);
+ return url.format(contextData);
}
function beforeExecHandle(optionApi){
@@ -266,9 +509,35 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
}
}
+ /**
+ * 获取服务环境变量
+ */
+ function getGlobalEnv(amisData){
+ // debugger
+ if(fast_config.enableEnv){
+ var env = schemas['env'];
+ if(!env){
+ api.get({
+ enableRootPath: true,
+ url: "api/v1/env/getAppEnvironment?appId="+amisData.mid.tenantId,
+ // url: "schemas/" + type,
+ async: false,
+ success: function(data){
+ schema['env'] = data;
+ amisData = {...amisData,...data}
+ }
+ });
+ }else{
+ amisData = {...amisData,...env}
+ }
+ }
+ return amisData;
+ }
+
function execApi(apiOpt){
var {optionApi, execData, success} = apiOpt
var data = contextmenuData.data;
+ // var data = getGlobalEnv(contextmenuData.data);
if(typeof optionApi === 'object'){
//模版数据替换
var apiOption = optionApi;
@@ -282,14 +551,21 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
api.exec(apiOption);
}else{
optionApi = optionApi.format(data)
- var optionApiProps = optionApi.split(":");
- var method, apiUrl;
- if(optionApiProps.length > 1){
- method = optionApiProps[0];
- apiUrl = optionApiProps[1];
- }else{
+ // var optionApiProps = optionApi.split(":");
+ // var method, apiUrl;
+ // if(optionApiProps.length > 1){
+ // method = optionApiProps[0];
+ // apiUrl = optionApiProps[1];
+ // }else{
+ // method = 'get';
+ // apiUrl = optionApiProps[0];
+ // }
+
+ var method=optionApi.slice(0,optionApi.indexOf(":"));
+ var apiUrl=optionApi.slice(optionApi.indexOf(":")+1);
+ if(method =='http' || optionApi.indexOf(":")==-1){
method = 'get';
- apiUrl = optionApiProps[0];
+ apiUrl = optionApi;
}
var optionApi = {
@@ -305,146 +581,73 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
}
}
- function appendElem(option){
-
- var sideBox = `
-
- `;
-
- $(option.elem).append(sideBox);
+ function registerListeners(){
+ $.each(contextMenuListeners, function(name ,_listener){
+ listener.registerContextMenu(name, _listener)
+ })
+ $.each(contentPanelListeners, function(name ,_listener){
+ listener.registerContentPanel(name, _listener)
+ })
}
- function zTreeOnClick(event, treeId, treeNode) {
-
- //是否是元数据,是的话请求元数据schema
- if(treeNode.data.type.metaData){
- getFileMetaData(treeNode.data.path, treeNode)
- }
-
- var metaType = treeNode.data.type.metaType;
- var resourceTypeSchema = getSchema("resource");
- var typeSchema = resourceTypeSchema[metaType];
-
- resetContent(contentElem);
- if(typeSchema.contentPanel){
- var id = typeSchema.id;
- var contentPanel = typeSchema.contentPanel;
- if(contentPanel.mode === 'listener'){
- var listenerName = id + '_contentPanel_listener';
- var listener = contentPanelListeners[listenerName];
- if(listener && typeof listener === 'function'){
- listener(treeNode)
- }
- }else if(contentPanel.mode === 'amis'){
- var amisSchema = contentPanel.amisSchema;
- var amisSchemaApi = contentPanel.amisSchemaApi;
- amis.render({
- elem: contentElem,
- schema: amisSchema,
- schemaApi: amisSchemaApi,
- props:{
- data:treeNode.data
- }
- })
- }else if(contentPanel.mode === 'iframe'){
- var iframeUrl = contentPanel.url;
- showIframe(iframeUrl);
- }
- }
-
- };
-
- function zTreeOnRightClick(event, treeId, treeNode) {
- // 将右击事件的节点数据绑定到以下变量中
- contextmenuData = treeNode;
- contextData.contextmenuData = contextmenuData;
- };
-
/**
* Button start loading
* */
- editor.prototype.render = function(opt) {
-
-
+ resource_tree.prototype.render = function(opt) {
+
var option = {
elem: opt.elem,
- funcAmis: null,
+ contentElem: opt.contentElem,
+ api:opt.api
}
- appendElem(option);
-
-
-
-
- var setting = {
- view: {
- onKeyboard: true,
- showLine: false,
- theme:'default'
- },
- check: {
- enable: true
- },
- data: {
- simpleData: {
- enable: true
- }
- }
- ,callback:{
- onLeafEnter: function(treeId,treeNode){
- console.log(treeId,treeNode)
- },
- onClick: zTreeOnClick,
- onRightClick: zTreeOnRightClick
- }
- };
+ contentElem = option.contentElem;
+ elem = option.elem;
+ // treeApi = option.api;
+
+ registerListeners();
+
+ // var setting = {
+ // view: {
+ // onKeyboard: true,
+ // showLine: false,
+ // theme:'default'
+ // },
+ // check: {
+ // enable: true
+ // },
+ // data: {
+ // simpleData: {
+ // enable: true
+ // }
+ // }
+ // ,callback:{
+ // onLeafEnter: function(treeId,treeNode){
+ // console.log(treeId,treeNode)
+ // },
+ // onClick: zTreeOnClick,
+ // onRightClick: zTreeOnRightClick
+ // }
+ // };
treeObj = ztree.render({
- elem: '#resource',
- setting: setting
- })
+ elem: option.elem,
+ setting: settings,
+ api: option.api
+ });
//加载树
- reloadResource()
-
+ // reloadResource()
edropdown.render({
- elem: '#resource' //在 id="demo" 的元素中触发事件。也可以直接设置为 document,从而重置整个右键菜单
+ elem: option.elem //在 id="demo" 的元素中触发事件。也可以直接设置为 document,从而重置整个右键菜单
,trigger: 'contextmenu' //右键事件
,click: function(obj, f, e){
- var data = contextmenuData.data;
+ // var data = contextmenuData.data;
+ var data = getGlobalEnv(contextmenuData.data);
if(obj.mode && obj.mode === 'listener'){
var id = obj.id;
var listenerName;
@@ -460,7 +663,7 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
}else if(obj.mode && obj.mode === 'dialog'){
var dialog = obj.dialog;
if(dialog.mode === 'amis'){
- testDialog(dialog, option);
+ renderDialog(dialog, option);
var amisSchema = dialog.amisSchema;
var amisSchemaApi = dialog.amisSchemaApi;
var amisNew = amis.render({
@@ -492,7 +695,7 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
beforeRander: function(config){
debugger
var data = getContextmenuData();
- var resourceTypeSchema = getSchema("resource");
+ var resourceTypeSchema = schema.get("resource");
if(resourceTypeSchema){
var resourceSchema = resourceTypeSchema[data.data.type.metaType];
if(resourceSchema && resourceSchema.funcs){
@@ -515,359 +718,10 @@ layui.define(['element', 'edropdown', 'layer', 'util', 'etree', 'form', 'amis',
data: [{}]
});
- return new editor(option);
- }
-
- //头部事件
- util.event('lay-header-event', {
- //左侧菜单事件
- menuLeft: function(othis){
- layer.msg('展开左侧菜单的操作', {icon: 0});
- }
- ,menuRight: function(){
- layer.open({
- type: 1
- ,content: '处理右侧面板的操作
'
- ,area: ['360px', '100%']
- ,offset: 'rt' //右上角
- ,anim: 5
- ,shadeClose: true
- });
- }
- });
-
- form.on('submit(*)', function(data){
- var fileData = $.extend({}, selectFileMetaData.metadata, data.field);
-
- api.put({
- enableRootPath: true,
- url: "schemas/" + selectFileMetaData.selectData.data.type.metaType,
- data: {path:selectFileMetaData.selectData.data.path, value:JSON.stringify(fileData)},
- async: false,
- // dataType: "json",
- success: function(data){
- layer.msg('保存成功');
- reloadResource()
- }
- });
-
- // schemas
- return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
- });
-
- function getFileMetaData(path, selectData) {
- randerForm(schema.formType[selectData.data.type.metaType], selectData.data)
- api.get({
- enableRootPath: true,
- url: "resource",
- data: {path:path},
- async: false,
- dataType: "json",
- success: function(data){
- selectFileMetaData = {
- metadata: data,
- selectData: selectData
- }
-
- //重置表单
- resetForm();
- //给表单赋值
- form.val('data-form',selectFileMetaData.metadata)
-
- }
- });
- }
-
- function randerForm(script, data) {
- var getTpl = script.innerHTML,view = document.getElementById('viewForm');
- laytpl(getTpl).render(data, function(html){
- view.innerHTML = html;
- });
- }
-
- function openDoamin(script, data) {
- resetContent(contentElem)
- jqgrid.render({
- elem: contentElem
- })
- }
-
- function designDoamin(script, data) {
- resetContent(contentElem)
- domain_design.render({
- elem: contentElem
- })
- }
-
- function resetForm(){
- $("#form-data")[0].reset();
- form.render();
- }
-
-
- /**
- * 创建目录
- * @param path
- */
- function createFolder(){
-
- function send(path){
- api.post({
- enableRootPath: true,
- type: "POST",
- url: "resource/folder",
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
-
- layer.prompt({
- formType: 0,
- value: '',
- title: '请输入文件夹名称',
- area: ['200px', '20px'] //自定义文本域宽高
- }, function(value, index, elem){
- var path = getFilePath(value);
- send(path);
- layer.close(index);
- });
- }
-
- function getFilePath(value){
- var path;
- if(contextmenuData.data.path===null || contextmenuData.data.path===''){
- path = value;
- }else{
- path = contextmenuData.data.path + "/" + value;
- }
- return path;
- }
-
- function getMetaPath(value){
- var path;
- if(contextmenuData.data.path===null || contextmenuData.data.path===''){
- path = value;
- }else{
- path = contextmenuData.data.path + "#/" + value;
- }
- return path;
- }
-
- /**
- * 获取右键选择数据 -> 文件路径
- */
- function getContextmenuFilePath(){
- return contextmenuData.data.path;
- }
- function getContextmenuData(){
- return contextmenuData;
- }
-
- /**
- * 创建文件
- * @param path
- */
- function createMetaData(metaType, path){
- function send(path){
- api.post({
- enableRootPath: true,
- url: "schemas/" + metaType + "/fields",
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
-
- layer.prompt({
- formType: 0,
- value: '',
- title: '请输入文件名称',
- area: ['200px', '20px'] //自定义文本域宽高
- }, function(value, index, elem){
- var path = getMetaPath("fields/" + value);
- send(path);
- layer.close(index);
- });
- }
-
- /**
- * 启用
- * @param path
- */
- function enable(metaType, path){
- function send(){
- api.put({
- enableRootPath: true,
- url: "schemas/" + metaType + "/enable",
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
-
- layer.confirm('是否确认该操作?', {
- btn: ['确认', '取消']
- }, function(index, layero){
- send();
- layer.close(index);
- }, function(index){
- layer.close(index);
- });
- }
-
- /**
- * 启用
- * @param path
- */
- function disable(metaType, path){
- function send(){
- api.put({
- enableRootPath: true,
- url: "schemas/" + metaType + "/disable",
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
-
- layer.confirm('是否确认该操作?', {
- btn: ['确认', '取消']
- }, function(index, layero){
- send();
- layer.close(index);
- }, function(index){
- layer.close(index);
- });
-
- }
-
- /**
- * 创建文件
- * @param path
- */
- function rename(name, path){
- function send(name){
- api.put({
- enableRootPath: true,
- url: "resource/rename/" + name,
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
-
- layer.prompt({
- formType: 0,
- value: name,
- title: '请输入文件名称',
- area: ['200px', '20px'] //自定义文本域宽高
- }, function(value, index, elem){
- send(value);
- layer.close(index);
- });
- }
-
- /**
- * 创建文件
- * @param path
- */
- function createFile(metaType){
- function send(path){
- api.post({
- enableRootPath: true,
- type: "POST",
- url: "schemas/" + metaType,
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
-
- layer.prompt({
- formType: 0,
- value: '',
- title: '请输入文件名称',
- area: ['200px', '20px'] //自定义文本域宽高
- }, function(value, index, elem){
- var path = getFilePath(value);
- send(path);
- layer.close(index);
- });
- }
-
- /**
- * 删除
- * @param path
- */
- function deleteResource(){
- //获取
- var path = getContextmenuFilePath();
- api.delete({
- enableRootPath: true,
- url: "resource",
- data: {path:path},
- async: false,
- success: function(data){
- reloadResource()
- }
- });
- }
-
- /**
- * 根据schema类型获取schema
- * @param type
- */
- function getSchema(type){
- var typeSchema = schema[type]
- if(!typeSchema){
- api.get({
- enableRootPath: true,
- url: "schemas/" + type,
- async: false,
- success: function(data){
- schema[type] = data
- typeSchema = schema[type]
- }
- });
- }
-
- return typeSchema;
- }
-
-
-
- $("#run").click(function(){
- api.get({
- enableRootPath: true,
- url: "meta/configuration/reload",
- async: false,
- success: function(data){
- layer.msg('操作成功');
- }
- });
-
- });
+ return new resource_tree(option);
+ }
- exports(MOD_NAME, new editor());
+ exports(MOD_NAME, new resource_tree());
});
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/schema.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/schema.js
new file mode 100644
index 0000000000000000000000000000000000000000..aaa5f8da9f2c001cd3ee03310ec114f0e62f0af8
--- /dev/null
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/editor/schema.js
@@ -0,0 +1,60 @@
+layui.define(['element', 'fast_config', 'api'], function(exports) {
+ "use strict";
+
+ /**
+ * Button component
+ * */
+ var MOD_NAME = 'schema',
+ $ = layui.jquery,
+ fast_config = layui.fast_config,
+ api = layui.api,
+ schemas = {
+ formType:{
+ domain_model:domainModelForm,
+ domain_model_field:domainModelFieldForm,
+ domain_file_field_primary_key:domainModelFieldForm,
+ }
+ }
+ ;
+
+
+
+ var schema = {
+ get : function(type){
+ var typeSchema = schemas[type]
+ if(!typeSchema){
+ var schemaData={};
+ api.get({
+ enableRootPath: true,
+ url: "schemas/model.json",
+ // url: "schemas/" + type,
+ async: false,
+ success: function(data){
+ schemaData = data
+ }
+ });
+
+ api.get({
+ enableRootPath: true,
+ url: "schemas/wkflmodel.json",
+ // url: "schemas/" + type,
+ async: false,
+ success: function(data){
+ schemaData = {...schemaData,...data}
+ }
+ });
+ schema[type] = schemaData
+ typeSchema = schema[type]
+ }
+
+ return typeSchema;
+ },
+ getResource: function () {
+ return this.get('resource');
+ }
+ }
+
+
+
+ exports(MOD_NAME, schema);
+});
diff --git a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/ztree.js b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/ztree.js
index cdb99665b3124f05093366cd46e7520c6d8a9811..8036157c2140255457f8d8210fdddaf6fb968667 100644
--- a/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/ztree.js
+++ b/fast-develop-web/fast-develop-editor/src/fast-develop/src/js/module/ztree.js
@@ -6,7 +6,9 @@ layui.define(['element', 'api'], function(exports) {
* */
var MOD_NAME = 'ztree',
$ = layui.jquery,
- api = layui.api
+ api = layui.api,
+ elem,
+ treeOption
;
var ztree = function(opt) {
@@ -14,6 +16,17 @@ layui.define(['element', 'api'], function(exports) {
};
+ function resetContent(){
+ var $parent = $(elem).parent();
+ $(elem).remove();
+ $parent.append('')
+ }
+
+ ztree.prototype.refresh = function (){
+ resetContent();
+ this.render(treeOption);
+ }
+
/**
* Button start loading
* */
@@ -21,12 +34,35 @@ layui.define(['element', 'api'], function(exports) {
var option = {
elem: opt.elem,
+ api: opt.api,
setting: opt.setting,
- zNodes: opt.zNodes,
+ // zNodes: opt.zNodes,
tree:null
}
- option.tree = $.fn.zTree.init($(option.elem), option.setting, option.zNodes);
+ treeOption = option;
+ elem = option.elem;
+
+ $.ajax({
+ url: option.api,
+ type: 'GET', //GET
+ async: false, //或false,是否异步
+ timeout: 30000, //超时时间
+ dataType: 'json', //返回的数据格式:json/xml/html/script/jsonp/text
+ beforeSend: function (xhr) {
+ console.log('发送前')
+ },
+ success: function (data, textStatus, jqXHR) {
+ option.tree = $.fn.zTree.init($(option.elem), option.setting, data);
+ },
+ error: function (xhr, textStatus) {
+ alert("请求树失败!")
+ },
+ complete: function () {
+ console.log('结束')
+ }
+ });
+
return new ztree(option);
}