@@ -9,7 +9,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
99function _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
1111import React , { useEffect , useState } from "react" ;
12- import { noop , notificationError } from "../../utils/baseUtils" ;
12+ import { getSortBy , noop , notificationError } from "../../utils/baseUtils" ;
1313import Table from "./Table" ;
1414
1515var 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:
0 commit comments