Skip to content

Commit 8f82220

Browse files
Add support dispatch.path for Table
1 parent b5ea516 commit 8f82220

File tree

20 files changed

+516
-394
lines changed

20 files changed

+516
-394
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## 0.0.68
2+
3+
- Add `response.data` as second param in onFinish func after requestSaveForm in `Form`
4+
- Add `response.data` as second param in onFinish func after requestSaveRow in `Modal`
5+
- Add default sort for `Table` from config
6+
- Add support `dispatch.path` for `Table`
7+
- Add reset sort for Rt table
8+
19
## 0.0.67
210

311
- Add TimePicker

dist/index.es.js

Lines changed: 117 additions & 93 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.es.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 117 additions & 93 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/components/Form/Form.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ var Form = function Form(props) {
107107
_notification.success({
108108
message: "Сохранение прошло успешно"
109109
});
110-
props.onFinish && props.onFinish(values);
110+
props.onFinish && props.onFinish(values, response.data);
111111
}).catch(function (error) {
112112
return notificationError(error, 'Ошибка при сохранении');
113113
});

lib/components/Modal/Modal.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,13 @@ var Modal = function Modal(props) {
168168
_notification.success({
169169
message: 'Сохранение прошло успешно'
170170
});
171+
modalProps.onOk && modalProps.onOk(values, response.data);
172+
modalProps.onFinish && modalProps.onFinish(values, response.data);
171173
_onCloseModal();
172174
}).catch(function (error) {
173175
return notificationError(error, 'Ошибка при сохранении');
174176
});
175177
} else _onCloseModal();
176-
177-
if (modalProps.onOk) modalProps.onOk(values);
178-
if (modalProps.onFinish) modalProps.onFinish(values);
179178
};
180179

181180
var onFinishFailedHandler = function onFinishFailedHandler(errorInfo) {

lib/components/Table/AntTable/ConfigLoader.js

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
99
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
1010

1111
import React, { useEffect, useState } from "react";
12-
import { noop, notificationError } from "../../utils/baseUtils";
12+
import { getSortBy, noop, notificationError } from "../../utils/baseUtils";
1313
import Table from "./Table";
1414

1515
var defaultProps = {
@@ -90,63 +90,64 @@ var ConfigLoader = function ConfigLoader(props) {
9090

9191
// Массив колонок
9292
var _columns = [];
93+
// Сортировка по умолчанию
94+
var _defaultSorter = [];
9395
// Счетчик видимых полей
9496
var visibleIndex = 0;
9597
// Индекс колонки около которой ставить иконку дерева
9698
var expandIconColumnIndex = -1;
9799
// Ключ иерархии
98100
var _expandColumnKey = config && config.hierarchical && config.hierarchyView ? config.hierarchyView : expandColumnKey;
99101

100-
if (config && config.fields) {
101-
config.fields.forEach(function (item, index) {
102-
// console.log('configParser item => ', item);
103-
104-
// Дополнительные props колонок
105-
var colProps = customColumnProps && customColumnProps.find(function (render) {
106-
return render.name === item.name || render.name === item.alias;
107-
});
108-
109-
// Если поле не надо показывать, то след цикл
110-
if (!item.visible || colProps && colProps.hidden) return;
111-
112-
// Индекс или имя поля в данных
113-
var dataIndex = item.alias ? item.alias : item.name;
114-
// Сортировка по умолчанию
115-
var defaultSortOrder = defaultSortBy && defaultSortBy.key === dataIndex ? defaultSortBy.order === 'asc' ? 'ascend' : 'descend' : undefined;
116-
// Ширина колонок
117-
var widthCol = fixWidthColumn ? { width: item.width, maxWidth: 1000 } : {};
118-
// Увеличить счетчик видимых полей
119-
visibleIndex++;
120-
// Проверка у этого ли поля ставить иконку дерева
121-
if (_expandColumnKey === dataIndex) expandIconColumnIndex = visibleIndex + (selectable ? 1 : -1);
122-
// Формирование title колонки
123-
var titleNode = colProps && colProps.headerRenderer ? typeof colProps.headerRenderer === 'function' ? colProps.headerRenderer() : colProps.headerRenderer : item.header ? item.header : item.name;
124-
125-
var column = _extends({
126-
key: item.name,
127-
title: titleNode,
128-
dataIndex: item.alias ? item.alias : item.name,
129-
align: item.align,
130-
resizable: item.resizable,
131-
sorter: item.sortable ? item.sortable : undefined,
132-
ellipsis: true,
133-
defaultSortOrder: defaultSortOrder
134-
}, widthCol, colProps);
135-
// Дополнительные props для компонента ячейки
136-
column.onCell = function (rowData, rowIndex) {
137-
return { column: column, rowData: rowData, rowIndex: rowIndex };
138-
};
139-
// Рендер ячейки
140-
column.render = function (cellData, rowData, rowIndex) {
141-
if (colProps && colProps.cellRenderer) return React.createElement(colProps.cellRenderer, {
142-
column: column,
143-
cellData: cellData,
144-
rowData: rowData,
145-
rowIndex: rowIndex });else return item.typeData === 'json' ? JSON.stringify(cellData) : cellData ? cellData : '---';
146-
};
147-
_columns.push(column);
102+
config && config.fields && config.fields.forEach(function (item, index) {
103+
// console.log('configParser item => ', item);
104+
105+
// Дополнительные props колонок
106+
var colProps = customColumnProps && customColumnProps.find(function (render) {
107+
return render.name === item.name || render.name === item.alias;
148108
});
149-
}
109+
110+
// Если поле не надо показывать, то след цикл
111+
if (!item.visible || colProps && colProps.hidden) return;
112+
113+
// Индекс или имя поля в данных
114+
var dataIndex = item.alias ? item.alias : item.name;
115+
// Сортировка по умолчанию
116+
if (_defaultSorter.length === 0 || _defaultSorter[1] === undefined) _defaultSorter = getSortBy(defaultSortBy, item.defaultSort, dataIndex);
117+
118+
// Ширина колонок
119+
var widthCol = fixWidthColumn ? { width: item.width, maxWidth: 1000 } : {};
120+
// Увеличить счетчик видимых полей
121+
visibleIndex++;
122+
// Проверка у этого ли поля ставить иконку дерева
123+
if (_expandColumnKey === dataIndex) expandIconColumnIndex = visibleIndex + (selectable ? 1 : -1);
124+
// Формирование title колонки
125+
var titleNode = colProps && colProps.headerRenderer ? typeof colProps.headerRenderer === "function" ? colProps.headerRenderer() : colProps.headerRenderer : item.header ? item.header : item.name;
126+
127+
var column = _extends({
128+
key: dataIndex,
129+
title: titleNode,
130+
dataIndex: dataIndex,
131+
align: item.align,
132+
resizable: item.resizable,
133+
sorter: item.sortable ? item.sortable : undefined,
134+
ellipsis: true,
135+
defaultSortOrder: _defaultSorter[1]
136+
}, widthCol, colProps);
137+
// Дополнительные props для компонента ячейки
138+
column.onCell = function (rowData, rowIndex) {
139+
return { column: column, rowData: rowData, rowIndex: rowIndex };
140+
};
141+
// Рендер ячейки
142+
column.render = function (cellData, rowData, rowIndex) {
143+
if (colProps && colProps.cellRenderer) return React.createElement(colProps.cellRenderer, {
144+
column: column,
145+
cellData: cellData,
146+
rowData: rowData,
147+
rowIndex: rowIndex });else return item.typeData === "json" ? JSON.stringify(cellData) : cellData ? cellData : "---";
148+
};
149+
_columns.push(column);
150+
});
150151

151152
var _defaultFilter = void 0;
152153
if (config && config.hierarchical && config.hierarchyLazyLoad) {
@@ -157,6 +158,7 @@ var ConfigLoader = function ConfigLoader(props) {
157158
// console.log('expandIconColumnIndex => ', _expandColumnKey, expandIconColumnIndex);
158159
setTableConfig({
159160
columns: _columns,
161+
defaultSortBy: _defaultSorter[0],
160162
defaultFilter: _defaultFilter,
161163
rowKey: config && config.hierarchical && config.hierarchyField ? config.hierarchyField.split("/")[0] : rowKey,
162164
// expandParentKey:

lib/components/Table/AntTable/Table.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,15 @@ var Table = function Table(props) {
153153
onRowDoubleClick = _props$subscribeProps.onRowDoubleClick,
154154
onExpandedRowsChange = _props$subscribeProps.onExpandedRowsChange,
155155
dispatchPath = _props$subscribeProps.dispatchPath,
156+
dispatch = _props$subscribeProps.dispatch,
156157
subscribe = _props$subscribeProps.subscribe,
157158
value = _props$subscribeProps.value,
158159
onChange = _props$subscribeProps.onChange;
159160

160161
var footerProps = _extends({}, Table.defaultProps.footerProps, props.footerProps);
161162

162-
var selectedDispatchPath = dispatchPath && dispatchPath + ".selected";
163-
var rowsDispatchPath = dispatchPath && dispatchPath + ".rows";
163+
var selectedDispatchPath = dispatch && dispatch.path ? dispatch.path + ".selected" : dispatchPath && dispatchPath + ".selected";
164+
var rowsDispatchPath = dispatch && dispatch.path ? dispatch.path + ".rows" : dispatchPath && dispatchPath + ".rows";
164165

165166
useEffect(function () {
166167
// console.log("Инициализация дефолтных значений ", selectColumn, columns);
@@ -267,7 +268,8 @@ var Table = function Table(props) {
267268
};
268269

269270
var onTableEventsDispatch = function onTableEventsDispatch(nameEvent, value) {
270-
var dp = dispatchPath && dispatchPath + ".events." + nameEvent;
271+
var dp = dispatch && dispatch.path ? dispatch.path + ".events." + nameEvent : dispatchPath && dispatchPath + ".events." + nameEvent;
272+
271273
dp && props.setDateStore && props.setDateStore(dp, {
272274
timestamp: moment(),
273275
value: value

lib/components/Table/ReactBaseTable/ConfigLoader.js

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
1212
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
1313

1414
import React, { useEffect, useState } from "react";
15-
import { noop, notificationError } from "../../utils/baseUtils";
15+
import { getSortBy, noop, notificationError } from "../../utils/baseUtils";
1616
import Table from "./Table";
1717

1818

@@ -36,6 +36,7 @@ var ConfigLoader = function ConfigLoader(props) {
3636
setTableConfig = _useState2[1];
3737

3838
var _defaultProps$props = _extends({}, defaultProps, props),
39+
defaultSortBy = _defaultProps$props.defaultSortBy,
3940
defaultFilter = _defaultProps$props.defaultFilter,
4041
rowKey = _defaultProps$props.rowKey,
4142
pageSize = _defaultProps$props.pageSize,
@@ -90,41 +91,49 @@ var ConfigLoader = function ConfigLoader(props) {
9091
}, []);
9192

9293
var configParser = function configParser(config) {
94+
// Массив колонок
9395
var _columns = [];
94-
if (config && config.fields) {
95-
_columns = config.fields.map(function (item) {
96-
var colProps = customColumnProps && customColumnProps.find(function (render) {
97-
return render.name === item.name || render.name === item.alias;
98-
});
99-
return _extends({
100-
key: item.name,
101-
title: item.header ? item.header : item.name,
102-
dataKey: item.alias ? item.alias : item.name,
103-
align: item.align,
104-
width: item.width,
105-
resizable: item.resizable,
106-
sortable: item.sortable,
107-
hidden: !item.visible,
108-
className: [cellBordered ? 'bordered' : ''].join(' '),
109-
headerClassName: [cellBordered ? 'bordered' : ''].join(' ')
110-
}, colProps, {
111-
cellRenderer: function cellRenderer(object) {
112-
if (colProps && colProps.cellRenderer) return React.createElement(colProps.cellRenderer, object);
113-
// return colProps.cellRenderer(object) ? colProps.cellRenderer(object) : '---';
114-
else return object.cellData ? React.createElement(
115-
_Typography.Text,
116-
{ ellipsis: true, style: { width: '100%' }, className: 'rt-table-cell' },
117-
object.cellData
118-
) : React.createElement(
119-
_Typography.Text,
120-
{ ellipsis: true, style: { width: '100%' }, className: 'rt-table-cell' },
121-
"---"
122-
);
123-
// return object.cellData ? object.cellData : '---';
124-
}
125-
});
96+
// Сортировка по умолчанию
97+
var _defaultSorter = [];
98+
99+
config && config.fields && config.fields.forEach(function (item) {
100+
var colProps = customColumnProps && customColumnProps.find(function (render) {
101+
return render.name === item.name || render.name === item.alias;
126102
});
127-
}
103+
104+
// Индекс или имя поля в данных
105+
var dataIndex = item.alias ? item.alias : item.name;
106+
107+
if (_defaultSorter.length === 0 || _defaultSorter[1] === undefined) _defaultSorter = getSortBy(defaultSortBy, item.defaultSort, dataIndex);
108+
109+
_columns.push(_extends({
110+
key: dataIndex,
111+
title: item.header ? item.header : item.name,
112+
dataKey: dataIndex,
113+
align: item.align,
114+
width: item.width,
115+
resizable: item.resizable,
116+
sortable: item.sortable,
117+
hidden: !item.visible,
118+
className: [cellBordered ? 'bordered' : ''].join(' '),
119+
headerClassName: [cellBordered ? 'bordered' : ''].join(' ')
120+
}, colProps, {
121+
cellRenderer: function cellRenderer(object) {
122+
if (colProps && colProps.cellRenderer) return React.createElement(colProps.cellRenderer, object);
123+
// return colProps.cellRenderer(object) ? colProps.cellRenderer(object) : '---';
124+
else return object.cellData ? React.createElement(
125+
_Typography.Text,
126+
{ ellipsis: true, style: { width: '100%' }, className: 'rt-table-cell' },
127+
object.cellData
128+
) : React.createElement(
129+
_Typography.Text,
130+
{ ellipsis: true, style: { width: '100%' }, className: 'rt-table-cell' },
131+
"---"
132+
);
133+
// return object.cellData ? object.cellData : '---';
134+
}
135+
}));
136+
});
128137

129138
var _defaultFilter = void 0;
130139
if (config && config.hierarchical && config.hierarchyLazyLoad) {
@@ -134,6 +143,7 @@ var ConfigLoader = function ConfigLoader(props) {
134143

135144
setTableConfig({
136145
columns: _columns,
146+
defaultSortBy: _defaultSorter[0],
137147
defaultFilter: _defaultFilter,
138148
rowKey: config && config.hierarchical && config.hierarchyField ? config.hierarchyField.split('/')[0] : rowKey,
139149
expandParentKey: config && config.hierarchical && config.hierarchyField ? config.hierarchyField.split('/')[1] : expandParentKey,

0 commit comments

Comments
 (0)