feat: 在 editor-preset-vision 中对 legao schema 进行向前兼容

This commit is contained in:
carlos.czw 2020-08-20 00:34:15 +08:00
parent ab66fd4ca5
commit 786791713a
6 changed files with 43 additions and 14 deletions

View File

@ -19,7 +19,7 @@ export function deepValueParser(obj?: any): any {
}
// 兼容 ListSetter 中的变量结构
if (isVariable(obj)) {
if (editor.get('designMode') === 'live'){
if (editor.get('designMode') === 'live') {
return {
type: 'JSExpression',
value: obj.variable,

View File

@ -10,7 +10,6 @@ import { VE_EVENTS } from './base/const';
import DesignerPlugin from '@ali/lowcode-plugin-designer';
import { Skeleton, SettingsPrimaryPane } from '@ali/lowcode-editor-skeleton';
import { deepValueParser } from './deep-value-parser';
import { liveEditingRule, liveEditingSaveHander } from './vc-live-editing';
@ -73,7 +72,7 @@ function upgradePropsReducer(props: any) {
};
}
const newProps: any = {};
Object.keys(props).forEach(key => {
Object.keys(props).forEach((key) => {
if (/^__slot__/.test(key) && props[key] === true) {
return;
}
@ -94,7 +93,7 @@ designer.addPropsReducer((props, node) => {
};
if (newProps.fieldId) {
const fieldIds: any = [];
Object.keys(nodeCache).forEach(nodeId => {
Object.keys(nodeCache).forEach((nodeId) => {
const fieldId = nodeCache[nodeId].getPropValue('fieldId');
if (fieldId) {
fieldIds.push(fieldId);
@ -142,7 +141,7 @@ designer.addPropsReducer((props: any, node: Node) => {
return {
...props,
lifeCycles: {},
}
};
}
return props;
}, TransformStage.Render);
@ -197,7 +196,7 @@ function compatiableReducer(props: any) {
type: 'variable',
value: val.mock,
variable: val.value,
}
};
}
newProps[key] = val;
});
@ -209,7 +208,7 @@ designer.addPropsReducer(compatiableReducer, TransformStage.Save);
designer.addPropsReducer((props: any, node: Node) => {
const lifeCycleNames = ['didMount', 'willUnmount'];
if (node.isRoot()) {
lifeCycleNames.forEach(key => {
lifeCycleNames.forEach((key) => {
if (props[key]) {
const lifeCycles = node.props.getPropValue(getConvertedExtraKey('lifeCycles')) || {};
lifeCycles[key] = props[key];
@ -266,10 +265,27 @@ function appendStyleNode(props: any, styleProp: any, cssClass: string, cssId: st
}
}
designer.addPropsReducer(stylePropsReducer, TransformStage.Render);
// 国际化 & Expression 渲染时处理
designer.addPropsReducer(deepValueParser, TransformStage.Render);
designer.addPropsReducer((props: any, node: Node) => {
if (node.isRoot()) {
if (props.dataSource) {
const { online } = props.dataSource;
// if (online && online.length) {
// online.forEach((item: any) => {
// if (item.dataHandler && item.dataHandler.type && item.dataHandler.type === 'js') {
// item.dataHandler.type = 'JSFunction';
// }
// });
// }
props.dataSource.list = online;
console.log(props);
}
}
return props;
}, TransformStage.Render);
skeleton.add({
area: 'mainArea',
name: 'designer',

View File

@ -22,7 +22,7 @@ export default class PageEngine extends BaseEngine {
static contextType = AppContext;
static getDerivedStateFromProps(props, state) {
debugger;
// debugger;
debug('page.getDerivedStateFromProps');
const func = props.__schema.lifeCycles && props.__schema.lifeCycles.getDerivedStateFromProps;
if (func) {

View File

@ -39,7 +39,8 @@
"react-is": "^16.10.1",
"serialize-javascript": "^1.7.0",
"socket.io-client": "^2.2.0",
"whatwg-fetch": "^3.0.0"
"whatwg-fetch": "^3.0.0",
"@ali/ui-table": "^1.0.1-beta.1"
},
"devDependencies": {
"@alib/build-scripts": "^0.1.18",

View File

@ -1,3 +1,4 @@
/* eslint-disable object-curly-newline */
import { transformArrayToMap, isJSFunction, transformStringToFunction, clone } from './index';
import { jsonp, mtop, request, get, post, bzb } from './request';
import Debug from 'debug';
@ -81,6 +82,7 @@ export default class DataHelper {
}
return false;
});
// 所有 datasource 的 datahandler
return this.asyncDataHandler(initSyncData).then((res) => {
let dataHandler = this.config.dataHandler;
if (isJSFunction(dataHandler)) {
@ -187,6 +189,7 @@ export default class DataHelper {
}
if (allReq.length === 0) resolve({});
const res = {};
// todo:
Promise.all(
allReq.map((item) => {
return new Promise((resolve) => {
@ -258,6 +261,7 @@ export default class DataHelper {
});
}
// dataHandler todo:
dataHandler(id, dataHandler, data, error) {
if (isJSFunction(dataHandler)) {
dataHandler = transformStringToFunction(dataHandler.value);
@ -272,7 +276,7 @@ export default class DataHelper {
}
fetchOne(type, options) {
let { uri, method = 'GET', headers, params, ...otherProps } = options;
let { uri, url, method = 'GET', headers, params, ...otherProps } = options;
otherProps = otherProps || {};
switch (type) {
case 'mtop':
@ -286,11 +290,19 @@ export default class DataHelper {
headers,
...otherProps,
});
// todo:
case 'legao':
if (method === 'JSONP') {
return jsonp(url, params, otherProps);
}
// return webTable(uri, params, otherProps);
break;
default:
method = method.toUpperCase();
if (method === 'GET') {
return get(uri, params, headers, otherProps);
} else if (method === 'POST') {
}
if (method === 'POST') {
return post(uri, params, headers, otherProps);
}
return request(uri, method, params, headers, otherProps);

View File

@ -1,4 +1,5 @@
import LowCodeRenderer from '@ali/lowcode-react-renderer';
// import LowCodeRenderer from '@ali/lowcode-react-renderer';
import LowCodeRenderer from '../../react-renderer/src/index';
import { ReactInstance, Fragment, Component, createElement } from 'react';
import { observer } from '@recore/obx-react';
import { SimulatorRendererContainer, DocumentInstance } from './renderer';
@ -126,7 +127,6 @@ class Renderer extends Component<{ documentInstance: DocumentInstance }> {
const { documentInstance } = this.props;
const { container } = documentInstance;
const { designMode, device } = container;
return (
<LowCodeRenderer
schema={documentInstance.schema}