Выделение цветом минимального и максимального значения в таблице

В аналитических таблицах удобно сразу видеть минимальное и максимальное значение в колонках или строках таблицы.

Важно. В учет берутся только данные, которые есть в данный момент на странице (т.е. пагинация не учитывается). 

Как это работает? 

В SELECT 3 в параметре ProcessOptions мы указываем JSON, описывающий действия с таблицей после ее рендеринга. 

Параметр colorMinMaxRow находит в каждой строке min и max и добавляем ячейкам класс minClass и maxClass (поля этого объекта).  

Альтернативно можно указать в colorMinMaxRow "gradientMaxColor": "#373" или "colorMinMaxRow ": "#373" -  тогда будут работать полутона указанного цвета (в первом случае max значение будет самым темным, а во втором случае минимальное число будет самым темным). 

Параметр colorMinMaxCols содержит массив колонок. Система находит в каждой колонке min и max и добавляем ячейкам класс minClass и maxClass (поля объекта колонки).  

По аналогии для colorMinMaxCols также можно указать значения градаций цветов для колонок "gradientMinColor": "#833" или "gradientMaxColor": "#833". 

Таблица 1. Градиент цветов по строкам таблицы 

GetItems таблицы: 

CREATE PROCEDURE [dbo].[crud_watch_colorRowGradient_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select top 10 
    	'Некая строка #' + cast(id as nvarchar) name,
        ABS(CHECKSUM(NewId())) % 1000 f1,
        ABS(CHECKSUM(NewId())) % 1000 f2,
        ABS(CHECKSUM(NewId())) % 1000 f3,
        ABS(CHECKSUM(NewId())) % 1000 f4,
        ABS(CHECKSUM(NewId())) % 1000 f5,
        ABS(CHECKSUM(NewId())) % 1000 f6
    from as_trace 	
	
	
    -- SELECT 2
	select 1

	-- SELECT 3
	select 1 Compact, 1 HideTitleCount, 'h4' headerTag,   
    	'{ "colorMinMaxRow": { "minClass1": "text-danger", "maxClass1": "text-success", "gradientMaxColor": "#373" }
        }' ProcessOptions
END

Таблица 2. Градиент цветов таблицы по выбранным столбцам

GetItems таблицы: 

CREATE PROCEDURE [dbo].[crud_watch_colorColGradient_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
		-- SELECT 1
	select top 10 
    	'Некая строка #' + cast(id as nvarchar) name,
        ABS(CHECKSUM(NewId())) % 1000 f1,
        ABS(CHECKSUM(NewId())) % 1000 f2,
        ABS(CHECKSUM(NewId())) % 1000 f3,
        ABS(CHECKSUM(NewId())) % 1000 f4,
        ABS(CHECKSUM(NewId())) % 1000 f5,
        ABS(CHECKSUM(NewId())) % 1000 f6
    from as_trace 	
	
	
    -- SELECT 2
	select 1

	-- SELECT 3
	select 1 Compact, 1 HideTitleCount, 'h4' headerTag,   
    	'{ 
        	"colorMinMaxCols": [
            	{ "code": "f1",  "minClass1": "text-danger", "maxClass1": "text-success", "gradientMinColor": "#833" },
                { "code": "f2",  "minClass1": "text-danger", "maxClass1": "text-success", "gradientMaxColor": "#393"}
            ]
        }' ProcessOptions

END

Таблица 3. Как реализовать выделение максимуму и минимума по строкам

 GetItems таблицы:  

CREATE PROCEDURE [dbo].[crud_watch_colorRow_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select top 10 
    	'Некая строка #' + cast(id as nvarchar) name,
        ABS(CHECKSUM(NewId())) % 1000 f1,
        ABS(CHECKSUM(NewId())) % 1000 f2,
        ABS(CHECKSUM(NewId())) % 1000 f3,
        ABS(CHECKSUM(NewId())) % 1000 f4,
        ABS(CHECKSUM(NewId())) % 1000 f5,
        ABS(CHECKSUM(NewId())) % 1000 f6
    from as_trace 	
	
    -- SELECT 2
	select 1

	-- SELECT 3
	select 1 Compact, 1 HideTitleCount, 'h4' headerTag, 
    	'{ "colorMinMaxRow": { "minClass": "text-danger", "maxClass": "text-success" }
        }' ProcessOptions	
END

Таблица 4. Как реализовать выделение min max для выбранных колонок

GetItems таблицы: 

CREATE PROCEDURE [dbo].[crud_watch_colorCol_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	-- SELECT 1
	select top 10 
    	'Некая строка #' + cast(id as nvarchar) name,
        ABS(CHECKSUM(NewId())) % 1000 f1,
        ABS(CHECKSUM(NewId())) % 1000 f2,
        ABS(CHECKSUM(NewId())) % 1000 f3,
        ABS(CHECKSUM(NewId())) % 1000 f4,
        ABS(CHECKSUM(NewId())) % 1000 f5,
        ABS(CHECKSUM(NewId())) % 1000 f6
    from as_trace 	
	
    -- SELECT 2
	select 1

	-- SELECT 3
	select 1 Compact, 1 HideTitleCount, 'h4' headerTag, 
    	'{ 
        "colorMinMaxCols": [
            	{ "code": "f1",  "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
                { "code": "f3",  "minClass": "text-danger font-weight-bold", "maxClass": "text-success  font-weight-bold" },
                { "code": "f5",  "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" }
            ]        
        }' ProcessOptions	
END

 

Другие модули

Последние обновления

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства