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

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

View File

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

View File

@ -39,7 +39,8 @@
"react-is": "^16.10.1", "react-is": "^16.10.1",
"serialize-javascript": "^1.7.0", "serialize-javascript": "^1.7.0",
"socket.io-client": "^2.2.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": { "devDependencies": {
"@alib/build-scripts": "^0.1.18", "@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 { transformArrayToMap, isJSFunction, transformStringToFunction, clone } from './index';
import { jsonp, mtop, request, get, post, bzb } from './request'; import { jsonp, mtop, request, get, post, bzb } from './request';
import Debug from 'debug'; import Debug from 'debug';
@ -81,6 +82,7 @@ export default class DataHelper {
} }
return false; return false;
}); });
// 所有 datasource 的 datahandler
return this.asyncDataHandler(initSyncData).then((res) => { return this.asyncDataHandler(initSyncData).then((res) => {
let dataHandler = this.config.dataHandler; let dataHandler = this.config.dataHandler;
if (isJSFunction(dataHandler)) { if (isJSFunction(dataHandler)) {
@ -187,6 +189,7 @@ export default class DataHelper {
} }
if (allReq.length === 0) resolve({}); if (allReq.length === 0) resolve({});
const res = {}; const res = {};
// todo:
Promise.all( Promise.all(
allReq.map((item) => { allReq.map((item) => {
return new Promise((resolve) => { return new Promise((resolve) => {
@ -258,6 +261,7 @@ export default class DataHelper {
}); });
} }
// dataHandler todo:
dataHandler(id, dataHandler, data, error) { dataHandler(id, dataHandler, data, error) {
if (isJSFunction(dataHandler)) { if (isJSFunction(dataHandler)) {
dataHandler = transformStringToFunction(dataHandler.value); dataHandler = transformStringToFunction(dataHandler.value);
@ -272,7 +276,7 @@ export default class DataHelper {
} }
fetchOne(type, options) { fetchOne(type, options) {
let { uri, method = 'GET', headers, params, ...otherProps } = options; let { uri, url, method = 'GET', headers, params, ...otherProps } = options;
otherProps = otherProps || {}; otherProps = otherProps || {};
switch (type) { switch (type) {
case 'mtop': case 'mtop':
@ -286,11 +290,19 @@ export default class DataHelper {
headers, headers,
...otherProps, ...otherProps,
}); });
// todo:
case 'legao':
if (method === 'JSONP') {
return jsonp(url, params, otherProps);
}
// return webTable(uri, params, otherProps);
break;
default: default:
method = method.toUpperCase(); method = method.toUpperCase();
if (method === 'GET') { if (method === 'GET') {
return get(uri, params, headers, otherProps); return get(uri, params, headers, otherProps);
} else if (method === 'POST') { }
if (method === 'POST') {
return post(uri, params, headers, otherProps); return post(uri, params, headers, otherProps);
} }
return request(uri, method, 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 { ReactInstance, Fragment, Component, createElement } from 'react';
import { observer } from '@recore/obx-react'; import { observer } from '@recore/obx-react';
import { SimulatorRendererContainer, DocumentInstance } from './renderer'; import { SimulatorRendererContainer, DocumentInstance } from './renderer';
@ -126,7 +127,6 @@ class Renderer extends Component<{ documentInstance: DocumentInstance }> {
const { documentInstance } = this.props; const { documentInstance } = this.props;
const { container } = documentInstance; const { container } = documentInstance;
const { designMode, device } = container; const { designMode, device } = container;
return ( return (
<LowCodeRenderer <LowCodeRenderer
schema={documentInstance.schema} schema={documentInstance.schema}