Giter VIP home page Giter VIP logo

itn_controls's Introduction

ItNeris Table

Custom ItNeris company grid based on MaterialUI


Content

  1. Common props
  2. Methods
  3. Client-side
  4. Server-side
  5. Column properties
  6. Custom actions and Redux compatability
  7. Additional classes

Common props

  1. onDownload: function(options) || string — действие по нажатию на иконку скачивания, если функция, или URL для выполнения GET запроса к серверу для получения файла выгрузки в случае строки
  2. sort: arrayOf(Sort) — начальная сортировка таблицы
  3. filters: arrayOf(Filter) — начальная фильтрация таблицы
  4. title: string — если задано, то будет выведен заголовок страницы с иконкой поиска, в противном случае поиск будет доступен всегда
  5. mimeType: string — mime-type для файла выгрузки таблицы, по умолчанию text/csv
  6. showColNums: bool — отображение номеров колонок таблицы, по умочанию false
  7. disablePaging: bool — скрывает пагинатор таблицы, по умочанию false
  8. showRowNums: bool — отображение номеров строк таблицы, по умочанию false
  9. multiFilter: bool — позволяет выбирать множества значений в фильтрах таблицы, по умочанию false
  10. disableSearch: bool — отключает возможность поиска по таблице, по умочанию false
  11. disableSortProps: bool — позволяет выполнять внутреннюю сортировку таблицы с включенным onSortingChanged для написания только связанных эффектов сортировки, по умочанию false
  12. context: arrayOf(Context option) — опции контекстного меню
  13. stripedRows: bool — подкрашивать четные строки, по умочанию false
<Table
    data={this.state.tableData}
    sort={this.state.gridSort} //Выбранная из БД сортировка для текущего пользователя
    disableSortProps={true} //Оставляем внутреннюю логику сортировки таблицы
    onSortingChanged={async (sort) => {
        //Заносим в БД изменение сортировки
        await HttpUtil.fetchAsync("/api/Users/ChangeEclSort", { sort: JSON.stringify(sort) }, "POST");
    }}
/>
  1. overflow: bool — позволяет таблице растягиваться за границы экрана по оси X со скроллбаром, по умочанию false
  2. rowCount: number — количество строк на странице, по умолчанию 25
  3. columns: arrayOf(Column) — массив колонок таблицы
  4. stickyHeader: bool — если true, то шапка таблицы при вертикальной прокрутке будет оставаться на месте, по умолчанию false
  5. small: bool — paddingTop и paddingBottom у строк становятся меньше, по умолчанию false
  6. stripedRows: bool — чередует цвет строк таблицы, по умолчанию false
  7. maxHeight: number — свойство maxHeight таблицы будет расчитываться по формуле: 100vh - {значение}px, по умолчанию null
  8. minWidth: number — задает минимальную ширину таблицы в пикселях,по умолчанию null
  9. sections: object — массив секций в котором задаются параметры отображения секций
 {
    1: { expanded: true },
    2: { expanded: true },
    3: { expanded: true },
    4: { expanded: true }
 }
  1. disableToken: bool — отключить передачу accessToken на сервер, по умолчанию false
  2. searchProps: object:TextFieldProps — объект свойств Texfield
  3. customToolbar: React.Element — дополнительная строка с действиями грида, которая отобразится справа перед фильтрами
  4. tooltipElement: React.Element — элемент, используемый в качестве тултипа для элементов управления
  5. searchTooltip: string — текст тултипа для поиска, по умолчанию "Поиск"
  6. filterTooltip: string — текст тултипа для фильтрации, по умолчанию "Фильтрация"
  7. resetSearchTooltip: string — текст тултипа для сброса поиска, по умолчанию "Сбросить поиск"
  8. downloadTooltip: string — текст тултипа для экспорта таблицы, по умолчанию "Экспорт"
  9. viewColumnTooltip: string — текст тултипа для скрытия секций, по умолчанию "Отображение секций"

Methods

  1. fetch() — вызывает запрос на сервер для обновления данных
  2. getData() — возвращает список текущих строк
  3. transformData(rows) — заменяет список текущих строк

Client-side

  1. data: array — данные таблицы, массив вида
 [
    { id: 1, name: 'name 1', date: '2021-03-02T12:00:00' },
    { id: 2, name: 'name 2', date: '2021-03-03T15:00:00' },
 ]
  1. downloadName: string — наименование файла выгрузки таблицы
  2. filterList: arrayOf(Filter) - массив доступных фильтров для таблицы

Example client

<Table
    data={this.state.rows}
    filterList={[
        { column: "status", value: ["Блокировано", "Активно"] },
    ]}
    filters={[{ column: "status", value: ["Активно"] }]}
    onRowClick={(n) => this.props.history.push(`/entity/edit/` + n.id)}
    sort={[{ column: "name", dir: "desc" }]}
    columns={columns}
    onDownloadUrl={"api/Controller/Download"}
/>

Server-side

  1. showLoader: function() — функция для отображения глобальной загрузки во время запроса к серверу
  2. stopLoader: function() — функция для скрытия глобальной загрузки во время запроса к серверу
  3. downloadWithFilters: bool — если true, то для получения Blob будет выполнен POST запрос с передачей опций таблицы в теле запроса
  4. data: string — URL для выполнения POST запроса с передачей опций в теле запроса, в ответ ожидает массив вида
 [
    { id: 1, name: 'name 1', date: '2021-03-02T12:00:00' },
    { id: 2, name: 'name 2', date: '2021-03-03T15:00:00' },
 ]
  1. filterList: string — URL для выполнения GET запроса к серверу для получения массива доступных фильтров

Example server

<Table
    showLoader={this.props.showLoader}
    stopLoader={this.props.stopLoader}
    data="api/Controller/List"
    onDownloadUrl="api/Controller/Download"
    filterList="api/Controller/GetFilters"
    downloadWithFilters
    columns={columns}
    onRowClick={(n) => this.props.history.push("/entity/edit/" + n.id)}
/>

Column properties

  1. name: string — наименование колонки в массиве data таблицы
  2. label: string — отображение наименования колонки
  3. options — свойства колоки
  • customBodyRender: function(value, row) — рендер значения колонки, опираясь на её значение и строку в целом
customBodyRender: value => <div style={{ fontWeight: "bold" }}>
        {value}
    </div>
  • customHeadRender: function() — рендер заголовка колонки
customHeadRender: () => <Box display="flex" alignItems="center">
                Статус
                <Tooltip title='Подсказка'><HelpOutline /></Tooltip>
            </Box>
  • type: "array" — если задан, то по колонке будет производится поиск и фильтрация как по массиву
  • filterType: "and" || "or" — если задан type = array, то определить "И" или "ИЛИ" фильтрация будет производиться по массиву, значение по умолчанию "OR"
  • trasformData: function(value) — если задано, то по колонке будет производится поиск, сортировка и фильтрация как значениям, которые возвращает функция
options: {
    customBodyRender: v => v === null ? "Нет" : ToDateString(v, true),
    transformData: v => v === null ? "Нет" : "Да",
},
  • sort: bool — включение вортировки по колонке, значение по умолчанию true
  • display: bool — отоборажение колонки, значение по умолчанию true
  • section: number — номер секции к которой будет привязан столбец, значение по умолчанию null
  • sectionFilterLabel: string — наименование секции, которое будет отображаться в фильтре секций (указывается только один раз в любом столбце каждой секции), значение по умолчанию null

Custom actions and Redux compatability

  1. search (string) — текущий поиск по таблице
  2. onSearchChanged (function(search: string)) — если функция задана вместе с search, таблица для поиска значений будет использовать searh и возвращать результат изменения поискового значения в родительский компоненет
<Table
    search={this.props.search}
    onSearchChanged={(searchVal) => this.props.changeSearch(searchVal)}
/>
  1. filters (arrayOf(Filter)) — текущие фильтры по таблице
  2. onFilterChanged (function(filters: arrayOf(Filter))) — если функция задана вместе с filters, таблица для поиска значений будет использовать filters для каждого обновления и возвращать результат изменения фильтрации значения в родительский компоненет
<Table
    filters={this.props.filter}
    onFilterChanged={(filter) => this.props.changeFilters(filter)}
/>
  1. sort (arrayOf(Sort)) — текущая сортировка таблицы
  2. onSortingChanged (function(sort: arrayOf(Sort))) — если функция задана вместе с sort, таблица для сортировки значений будет использовать sort для каждого обновления и возвращать результат изменения сортировки значения в родительский компоненет
<Table
    sort={this.props.sort}
    onSortingChanged={(sorting) => this.props.changeSorting(sorting)}
/>

Additional classes

Table options

  • rowsPerPage: number — количество строк на странице
  • page: number — текущая страница
  • search: string — поисковый запрос
  • sort: arrayOf(Sort) — фильтрация
  • filters: arrayOf(Filter) — текущая фильтрация
  • columns: arrayOf(string) — текущие отображаемые колонки
  • headRows: arrayOf(string) — текущие отображаемые строки заголовка

File

  • name — наименование
  • file — бинарные данные

Filter

  • name: string — наименование колонки
  • value: arrayOf(string) — значения фильтра
  • inToolbar: bool — отобразить фильтр в тулбаре, по умолчанию false
{
    column: "status",
    value: ["В работе", "Новый"]
}

Sort

  • column: string — наименование колонки
  • dir: "asc" || "desc" — направление сортировки
{
    column: "date",
    dir: "desc"
}

Context option

  • name: string — наименование пункта меню
  • action: function(id, row) — действие по нажатию
  • hidden: bool — скрывать пункт для строки
  • options: arrayOf(Context option) — вложенное суб-меню
[
    {
        name: "Show row Id ",
        action: (id, row) => alert(id),
        hidden: row => row.id % 2 === 0,
    },
    {
        name: "Show inner menu",
        options: [
            {
                name: "Show row column 'name'",
                action: (id, row) => alert(row[name])
            }
        ]
    }
]

itn_controls's People

Contributors

jediarit avatar karelovd avatar rucosmonaut avatar ostgerman avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.