@steedos-widgets/amis-object 1.3.1 → 1.3.2-beta.3

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.
@@ -1,6 +1,6 @@
1
1
  import React, { createContext, useState, useEffect, createElement } from 'react';
2
2
  import * as _$1 from 'lodash';
3
- import _$1__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, includes, toArray, mergeWith, isString, union, has, slice, defaultsDeep as defaultsDeep$1, isObject as isObject$1, map, filter, get as get$1, isBoolean, omitBy, isNil, forEach, trimEnd, startsWith, isFunction, compact, difference, keys, pick, first, values, pickBy, random, assign } from 'lodash';
3
+ import _$1__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, includes, toArray, mergeWith, isString, union, has, slice, defaultsDeep as defaultsDeep$1, map, filter, get as get$1, isBoolean, omitBy, isNil, isObject as isObject$1, forEach, trimEnd, startsWith, isFunction, compact, difference, keys, pick, first, values, pickBy, random, assign } from 'lodash';
4
4
  import { Dropdown, Tabs, Spin, Badge, Skeleton, Modal as Modal$1, message, notification, Button, Space, Drawer as Drawer$1 } from 'antd';
5
5
  import ReactDOM, { createRoot } from 'react-dom';
6
6
 
@@ -3523,11 +3523,26 @@ const Router$1 = {
3523
3523
  /*
3524
3524
  * @Author: baozhoutao@steedos.com
3525
3525
  * @Date: 2022-07-20 16:29:22
3526
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
3527
- * @LastEditTime: 2023-09-08 14:09:48
3526
+ * @LastEditors: liaodaxue
3527
+ * @LastEditTime: 2023-09-11 17:19:53
3528
3528
  * @Description:
3529
3529
  */
3530
3530
 
3531
+ function getImageFieldUrl(url) {
3532
+ if (window.Meteor && window.Meteor.isCordova != true) {
3533
+ // '//'的位置
3534
+ const doubleSlashIndex = url.indexOf('//');
3535
+ const urlIndex = url.indexOf('/', doubleSlashIndex + 2);
3536
+ const rootUrl = url.substring(urlIndex);
3537
+ return rootUrl;
3538
+ }
3539
+ return url;
3540
+ }
3541
+
3542
+ if(typeof window != 'undefined'){
3543
+ window.getImageFieldUrl = getImageFieldUrl;
3544
+ }
3545
+
3531
3546
  function getContrastColor(bgColor) {
3532
3547
  var backgroundColor = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;
3533
3548
  var r = parseInt(backgroundColor.substr(0, 2), 16);
@@ -9093,7 +9108,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
9093
9108
 
9094
9109
  pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
9095
9110
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
9096
- if (isAllowCreate) {
9111
+ const isCreate = _$1.isBoolean(field.create) ? field.create : true;
9112
+ if (isAllowCreate && isCreate) {
9097
9113
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
9098
9114
  new_button.align = "right";
9099
9115
  // 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后
@@ -11689,7 +11705,13 @@ async function getTableApi(mainObject, fields, options){
11689
11705
  if(field.type === 'file'){
11690
11706
  item[key] = value
11691
11707
  }else{
11692
- item[key] = _.map(value, 'url')
11708
+ item[key] = _.map(value, (item)=>{
11709
+ if(field.type === 'image'){
11710
+ const url = window.getImageFieldUrl(item.url);
11711
+ return url;
11712
+ }
11713
+ return item.url;
11714
+ })
11693
11715
  }
11694
11716
  }
11695
11717
  })
@@ -11931,10 +11953,14 @@ function getScriptForAddUrlPrefixForImgFields(fields){
11931
11953
  let fieldProps = imgFields[item];
11932
11954
  if(fieldProps.multiple){
11933
11955
  if(imgFieldDisplayValue instanceof Array){
11934
- data[item] = imgFieldDisplayValue.map((i)=>{ return i.url });
11956
+ data[item] = imgFieldDisplayValue.map((i)=>{
11957
+ const url = window.getImageFieldUrl(i.url);
11958
+ return url;
11959
+ });
11935
11960
  }
11936
11961
  }else{
11937
- data[item] = imgFieldDisplayValue && imgFieldDisplayValue.url;
11962
+ const url = imgFieldDisplayValue && window.getImageFieldUrl(imgFieldDisplayValue.url);
11963
+ data[item] = url;
11938
11964
  }
11939
11965
  }
11940
11966
  })
@@ -14095,53 +14121,34 @@ async function getListSchema(
14095
14121
  };
14096
14122
  }
14097
14123
 
14098
- // 获取对象表格
14099
- async function getTableSchema(
14100
- appName,
14101
- objectName,
14102
- columns,
14103
- ctx = {}
14104
- ) {
14105
- // console.time('getTableSchema', columns);
14106
- const uiSchema = await getUISchema(objectName);
14107
-
14108
- let sort = ctx.sort;
14109
- if(!sort){
14110
- const sortField = ctx.sortField;
14111
- const sortOrder = ctx.sortOrder;
14112
- if(sortField){
14113
- let sortStr = sortField + ' ' + sortOrder || 'asc';
14114
- sort = sortStr;
14115
- }
14116
- }
14117
-
14124
+ async function convertColumnsToTableFields(columns, uiSchema, ctx = {}) {
14118
14125
  let fields = [];
14119
- for(const column of columns){
14126
+ for (const column of columns) {
14120
14127
  if (isString(column)) {
14121
- if(column.indexOf('.') > 0){
14128
+ if (column.indexOf('.') > 0) {
14122
14129
  const fieldName = column.split('.')[0];
14123
14130
  const displayName = column.split('.')[1];
14124
14131
  const filedInfo = uiSchema.fields[fieldName];
14125
- if(filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to) ){
14132
+ if (filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to)) {
14126
14133
  const rfUiSchema = await getUISchema(filedInfo.reference_to);
14127
14134
  const rfFieldInfo = rfUiSchema.fields[displayName];
14128
- fields.push(Object.assign({}, rfFieldInfo, {name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: {fieldName, displayName}}));
14135
+ fields.push(Object.assign({}, rfFieldInfo, { name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: { fieldName, displayName } }, ctx));
14129
14136
  }
14130
- }else {
14131
- if(uiSchema.fields[column]){
14132
- fields.push(uiSchema.fields[column]);
14137
+ } else {
14138
+ if (uiSchema.fields[column]) {
14139
+ fields.push(Object.assign({}, uiSchema.fields[column], ctx));
14133
14140
  }
14134
14141
  }
14135
14142
  } else if (isObject$1(column)) {
14136
- if(column.field.indexOf('.') > 0){
14143
+ if (column.field.indexOf('.') > 0) {
14137
14144
  const fieldName = column.field.split('.')[0];
14138
14145
  const displayName = column.field.split('.')[1];
14139
14146
  const filedInfo = uiSchema.fields[fieldName];
14140
- if(filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to) ){
14147
+ if (filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to)) {
14141
14148
  const rfUiSchema = await getUISchema(filedInfo.reference_to);
14142
14149
  const rfFieldInfo = rfUiSchema.fields[displayName];
14143
- fields.push(Object.assign({}, rfFieldInfo,
14144
- {name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: {fieldName, displayName}},
14150
+ fields.push(Object.assign({}, rfFieldInfo, ctx,
14151
+ { name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: { fieldName, displayName } },
14145
14152
  {
14146
14153
  width: column.width,
14147
14154
  wrap: column.wrap, // wrap = true 是没效果的
@@ -14149,10 +14156,10 @@ async function getTableSchema(
14149
14156
  }
14150
14157
  ));
14151
14158
  }
14152
- }else {
14153
- if(uiSchema.fields[column.field]){
14159
+ } else {
14160
+ if (uiSchema.fields[column.field]) {
14154
14161
  fields.push(
14155
- Object.assign({}, uiSchema.fields[column.field], {
14162
+ Object.assign({}, uiSchema.fields[column.field], ctx, {
14156
14163
  width: column.width,
14157
14164
  wrap: column.wrap, // wrap = true 是没效果的
14158
14165
  amis: column.amis
@@ -14162,17 +14169,36 @@ async function getTableSchema(
14162
14169
  }
14163
14170
  }
14164
14171
  }
14172
+ return fields;
14173
+ }
14174
+
14175
+ // 获取对象表格
14176
+ async function getTableSchema(
14177
+ appName,
14178
+ objectName,
14179
+ columns,
14180
+ ctx = {}
14181
+ ) {
14182
+ // console.time('getTableSchema', columns);
14183
+ const uiSchema = await getUISchema(objectName);
14184
+
14185
+ let sort = ctx.sort;
14186
+ if(!sort){
14187
+ const sortField = ctx.sortField;
14188
+ const sortOrder = ctx.sortOrder;
14189
+ if(sortField){
14190
+ let sortStr = sortField + ' ' + sortOrder || 'asc';
14191
+ sort = sortStr;
14192
+ }
14193
+ }
14194
+
14195
+ let fields = await convertColumnsToTableFields(columns, uiSchema);
14165
14196
 
14166
14197
  const extraColumns = ctx.extraColumns;
14167
14198
 
14168
14199
  if (extraColumns) {
14169
- each(extraColumns, function (column) {
14170
- if (isString(column)) {
14171
- fields.push({ extra: true, name: column });
14172
- } else if (isObject$1(column)) {
14173
- fields.push({ extra: true, name: column.field });
14174
- }
14175
- });
14200
+ let extraFields = await convertColumnsToTableFields(extraColumns, uiSchema, {extra: true});
14201
+ fields = fields.concat(extraFields);
14176
14202
  }
14177
14203
 
14178
14204
  const amisSchema = await getObjectCRUD(uiSchema, fields, {
@@ -17789,6 +17815,8 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
17789
17815
  return __generator(this, function (_j) {
17790
17816
  switch (_j.label) {
17791
17817
  case 0:
17818
+ // console.time('AmisObjectListView')
17819
+ console.log("AmisObjectListView props", props);
17792
17820
  $schema = props.$schema, top = props.top, perPage = props.perPage, _a = props.showHeader, showHeader = _a === void 0 ? true : _a, data = props.data, defaultData = props.defaultData, _b = props.crud, crud = _b === void 0 ? {} : _b, _c = props.className, className = _c === void 0 ? "" : _c, crudClassName = props.crudClassName, _d = props.showDisplayAs, showDisplayAs = _d === void 0 ? false : _d, sideSchema = props.sideSchema, props.columnsTogglable, _f = props.filterVisible, filterVisible = _f === void 0 ? true : _f, headerToolbarItems = props.headerToolbarItems, rowClassNameExpr = props.rowClassNameExpr, _g = props.hiddenColumnOperation, hiddenColumnOperation = _g === void 0 ? false : _g;
17793
17821
  headerSchema = props.headerSchema;
17794
17822
  ctx = props.ctx;
@@ -17921,7 +17949,7 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
17921
17949
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
17922
17950
  },
17923
17951
  "requestAdaptor": "api.data={query: '{spaces__findOne(id: \"none\"){_id,name}}'};return api;",
17924
- "adaptor": "\n // console.log('service listview schemaApi adaptor....', api.body); \n let { appId, objectName, defaultListName: listName, display, formFactor: defaultFormFactor} = api.body;\n if(api.body.listName){\n listName = api.body.listName;\n }\n return new Promise((resolve)=>{\n const listViewSchemaProps = ".concat(JSON.stringify(listViewSchemaProps), ";\n const formFactor = ([\"split\"].indexOf(display) > -1) ? 'SMALL': defaultFormFactor;\n listViewSchemaProps.formFactor = formFactor;\n listViewSchemaProps.displayAs = display;\n // console.log(\"====listViewSchemaProps===>\", listName, display, listViewSchemaProps)\n window.getListSchema(appId, objectName, listName, listViewSchemaProps).then((schema)=>{\n payload.data = schema.amisSchema;\n // console.log(\"payload================>\", payload)\n resolve(payload)\n });\n });\n ")
17952
+ "adaptor": "\n // console.log('service listview schemaApi adaptor....', api.body); \n let { appId, objectName, defaultListName: listName, display, formFactor: defaultFormFactor} = api.body;\n if(api.body.listName){\n listName = api.body.listName;\n }\n return new Promise((resolve)=>{\n const listViewSchemaProps = ".concat(JSON.stringify(listViewSchemaProps), ";\n const formFactor = ([\"split\"].indexOf(display) > -1) ? 'SMALL': defaultFormFactor;\n listViewSchemaProps.formFactor = formFactor;\n listViewSchemaProps.displayAs = display;\n \n window.getListSchema(appId, objectName, listName, listViewSchemaProps).then((schema)=>{\n try{\n const uiSchema = schema.uiSchema;\n const listView = _.find(\n uiSchema.list_views,\n (listView, name) => {\n // \u4F20\u5165listViewName\u7A7A\u503C\u5219\u53D6\u7B2C\u4E00\u4E2A\n if(!listName){\n listName = name;\n }\n return name === listName || listView._id === listName;\n }\n );\n if(listView){\n window.Steedos && window.Steedos.setDocumentTitle && window.Steedos.setDocumentTitle({pageName: listView.label || listView.name})\n }\n }catch(e){\n console.error(e)\n }\n payload.data = schema.amisSchema;\n // console.log(\"schema================>\", schema)\n resolve(payload)\n });\n });\n ")
17925
17953
  },
17926
17954
  // "body": body,
17927
17955
  // "data": serviceData
@@ -18765,8 +18793,8 @@ var AmisGlobalFooter = function (props) { return __awaiter(void 0, void 0, void
18765
18793
  /*
18766
18794
  * @Author: baozhoutao@steedos.com
18767
18795
  * @Date: 2022-09-01 14:44:57
18768
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
18769
- * @LastEditTime: 2023-08-28 15:04:28
18796
+ * @LastEditors: baozhoutao@steedos.com
18797
+ * @LastEditTime: 2023-09-08 17:54:54
18770
18798
  * @Description:
18771
18799
  */
18772
18800
  var AmisGlobalHeaderToolbar = function (props) { return __awaiter(void 0, void 0, void 0, function () {
@@ -18786,7 +18814,7 @@ var AmisGlobalHeaderToolbar = function (props) { return __awaiter(void 0, void 0
18786
18814
  "body": __spreadArray(__spreadArray([], __read(customButtons), false), [
18787
18815
  {
18788
18816
  "type": "button",
18789
- "hiddenOn": "window.innerWidth < 768",
18817
+ "hiddenOn": "${window:innerWidth < 768 || (window:Meteor.settings.public && window:Meteor.settings.public.platform && window:Meteor.settings.public.platform.is_oem)}",
18790
18818
  "id": "u:267a7e84a89d",
18791
18819
  "onEvent": {
18792
18820
  "click": {
@@ -19101,6 +19129,7 @@ var AmisGlobalHeaderToolbar = function (props) { return __awaiter(void 0, void 0
19101
19129
  "type": "button",
19102
19130
  "label": instance.t('frontend_about'),
19103
19131
  "className": "flex",
19132
+ "hiddenOn": "${window:Meteor.settings.public && window:Meteor.settings.public.platform && window:Meteor.settings.public.platform.is_oem}",
19104
19133
  "onEvent": {
19105
19134
  "click": {
19106
19135
  "actions": [
@@ -19462,7 +19491,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
19462
19491
  * @Author: baozhoutao@steedos.com
19463
19492
  * @Date: 2023-01-14 16:41:24
19464
19493
  * @LastEditors: baozhoutao@steedos.com
19465
- * @LastEditTime: 2023-09-05 17:06:44
19494
+ * @LastEditTime: 2023-09-11 16:48:35
19466
19495
  * @Description:
19467
19496
  */
19468
19497
  var getSelectFlowSchema = function (id, props) {
@@ -19610,7 +19639,7 @@ var getSelectFlowSchema = function (id, props) {
19610
19639
  method: "post",
19611
19640
  url: "${context.rootUrl}/graphql?keywords=${keywords}",
19612
19641
  requestAdaptor: "\n const keywords = api.body.keywords || '';\n const appId = '".concat(data.app_id || "", "';\n api.data = {\n query: `\n {\n options: flows__getList(action: \"").concat(action, "\", keywords: \"${keywords}\", appId: \"${appId}\", distributeInstanceId: \"").concat(distributeInstanceId, "\", distributeStepId: \"").concat(distributeStepId, "\"){\n value:_id\n label:name\n children: flows{\n value: _id,\n label: name\n }\n }\n }\n `\n }\n "),
19613
- adaptor: "\n var options = payload.data.options;\n if(options){\n options.forEach(function(item,index) {\n if(item.value != 'startFlows' && (!item.children || item.children.length == 0)){\n payload.data.options.splice(index,1)\n }\n })\n }\n if(payload.data.options.length === 1 && payload.data.options[0].children.length === 1){\n payload.data.value = payload.data.options[0].children[0].value\n }\n return payload;\n ",
19642
+ adaptor: "\n var options = payload.data.options;\n if(options){\n options.forEach(function(item,index) {\n if(item.value != 'startFlows' && (!item.children || item.children.length == 0)){\n payload.data.options.splice(index,1)\n }\n })\n }\n // if(payload.data.options.length === 1 && payload.data.options[0].children.length === 1){\n // payload.data.value = payload.data.options[0].children[0].value\n // }\n return payload;\n ",
19614
19643
  "headers": {
19615
19644
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
19616
19645
  }
@@ -19776,7 +19805,17 @@ var PageRecordDetail = function (props) { return __awaiter(void 0, void 0, void
19776
19805
  case 2: return [2 /*return*/, {
19777
19806
  type: 'service',
19778
19807
  "className": 'h-full',
19779
- body: recordSchema
19808
+ body: recordSchema,
19809
+ "onEvent": {
19810
+ "recordLoaded": {
19811
+ "actions": [
19812
+ {
19813
+ "actionType": "custom",
19814
+ "script": "window.Steedos && window.Steedos.setDocumentTitle && Steedos.setDocumentTitle({pageName: event.data.record.name})"
19815
+ }
19816
+ ]
19817
+ }
19818
+ }
19780
19819
  }];
19781
19820
  }
19782
19821
  });
@@ -19792,6 +19831,7 @@ var PageObject = function (props) { return __awaiter(void 0, void 0, void 0, fun
19792
19831
  case 1:
19793
19832
  uiSchema = _b.sent();
19794
19833
  delete $schema.data.recordId;
19834
+ window.Steedos && window.Steedos.setDocumentTitle && window.Steedos.setDocumentTitle({ tabName: uiSchema.label || uiSchema.name });
19795
19835
  // 最外层的data是render data, 会被updateProps data覆盖, 所以组件data需要单开一个数据域. 所以此处有2层service
19796
19836
  return [2 /*return*/, {
19797
19837
  type: "service",