РуководстваОснова Falcon SpaceОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилитиЛендингиУниверсальный APIИнтеграцииКаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моментыСистемное администрированиеHOWTOТаблицы
Как сделать таблицу в модальном окне (открывается в диалоговом окне)Как реализовать подтаблицу (вложенная таблица), подформу в таблицеКак связать 2 таблицы Загрузка таблицы по ссылкеКак связать таблицу и редактирование сущности (зависимая страница)Как использовать комментарии в таблицахКак добавить в фильтре значение Не выбрано со значениемКак установить ширину колонки в таблице Как добавить диапазон даты или чисел (слайдер) в фильтрКак сделать операции только для некоторых строкКак делать различный набор столбцов одной таблицы для разных ролейКак убрать показ количества строк результата в заголовке таблицы? Как сделать сортировку в таблицеКак сделать Editable для галочки (Да/Нет) в AS CRUDКак редактировать колонку с датойКак скрыть строчные операции в таблице для определенных строкКак добавить коллбек после загрузки таблицыОтображение таблиц на смартфонеКак работать с галочками в таблицеЧастые ошибки при настройке таблицы (почему не работает таблица)Как обновить подтаблицу после выполнения некой операцииКак обрабатывать групповые операции через модальную формуКак создать предустановленные фильтры для таблицыКак сделать сворачивание таблицы (collapse table)Как убрать старые dict процедуры в формах и таблицахКак сделать фильтр с деревом галочекКак отключить сохранение состояния таблицы (фильтры)Как сделать ссылку на всю строку таблицыКак передать через URL значение фильтраКак сделать обрезание ячеек таблицыСортировка строк в таблицеСоздание сущности с учетом значений фильтровОптимизация запроса SQL - извлечение данных для таблицыКастомная разметка в таблицеРежим кастом вывода через JS (custom)Как настроить дополнительные шапку и подвал у таблицыКак сделать зависимые фильтры в таблицеИмпорт данных в формате файлов txt, csv через таблицуКак гибко управлять видимостью столбцов таблицыКак сделать раскрытие подстроки через любую ссылкуРежим быстрой фильтрации строк без обращения на серверВыпадающая панель рядом с названием таблицы dropdownPanelКак убрать при загрузке установку фокуса ввода на фильтр (data-nofocus)?Как сделать аналитику по периодам (таблица с интервалами дат)Кастомизация вида операций таблицыСтилизация фильтров таблицы
ФормыПоля формыЗагрузка файлов, картинокHOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как сделать аналитику по периодам (таблица с интервалами дат)
Создаем такой отчет по периодам:
Для этого указываем столбцы таблицы date, p1 ... p5 (выводимые метрики), hide_invervalType (фильтр Выбор радио) с процедурой dict:
select 'day' Value, 'Дни' Text, '' Color, 1 ord
union
select 'week' Value, 'Недели' Text, '' Color, 2 ord
union
select 'month' Value, 'Месяцы' Text, '' Color, 3 ord
union
select 'quarter' Value, 'Кварталы' Text, '' Color, 4 ord
union
select 'year' Value, 'Года' Text, '' Color, 5 ord
Процедура getitems таблицы:
CREATE PROCEDURE [dbo].[crud_qa-stat_getItems]
@filters CRUDFilterParameter READONLY,
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
declare @isAdmin bit = dbo.sec_isUserInRole(@username, 'admin')
declare @filterIntervalType nvarchar(128) = (select Value from @filters where [Key] = 'hide_intervalType')
set datefirst 1;
declare @periods int = 30
if(@filterIntervalType='week') begin
set @periods=12
end
if(@filterIntervalType='month') begin
set @periods=15
end
if(@filterIntervalType='quarter') begin
set @periods=6
end
if(@filterIntervalType='year') begin
set @periods=4
end
declare @result table(num int, name nvarchar(max), date1 datetime, date2 datetime, p1 int, p2 int, p3 int, p4 int, p5 int)
insert into @result(num, name, date1, date2, p1, p2,p3,p4,p5)
select num, name , date1, date2,
1 p1, 2 p2, 3 p3, 4 p4, 5 p5
from [dbo].[as_periods] (@filterIntervalType, @periods, '', '')
-- SELECT 3
select *, name date, @filterIntervalType hide_intervalType,
'x1' colTitle_p1, 'x2' colTitle_p2, 'x3' colTitle_p3, 'x4' colTitle_p4, 'x5' colTitle_p5
from @result order by num
-- 2 SELECT - кол-во в таблице
select 1
-- 3 SELECT Дополнительные настройки таблицы
select 1 Compact, '16px' FontSize, 1 InstantFilter, 1 HideTitleCount, 'h2' headerTag, '' Subtitle,
'{
"colorMinMaxCols": [
{ "code": "p1", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p2", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p3", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p4", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p5", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p6", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p7", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p8", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" },
{ "code": "p9", "minClass": "text-danger font-weight-bold", "maxClass": "text-success font-weight-bold" }
]
}' ProcessOptions
-- SELECT 4
select 'ИТОГО' name,
(select sum(p1) from @result) p1,
(select sum(p2) from @result) p2,
(select sum(p3) from @result) p3,
(select sum(p4) from @result) p4,
(select sum(p5) from @result) p5,
1 isHead
END
Ключевая особенность - использование функции as_periods, которая выдает таблицу периодов.
Остается лишь правильно написать подзапросы при заполнении @result (там где стоят параметры p1..p5), а также поменять названия столбцов в SELECT 1.
В SELECT 4 выводятся агрегированные значения по таблице @result.
Примечание. Если в базе нет функции as_periods, то ее можно добавить вручную:
ALTER FUNCTION [dbo].[as_periods]
(
@type varchar(128),
@cnt int,
@format
nvarchar(128) = '',
@langCode nvarchar(10) = ''
)
RETURNS
@res TABLE (num int, date1 date, date2 date, name nvarchar(128))
AS
BEGIN
if(@langCode='') set @langCode = 'ru-ru'
declare @startDate date = getdate()
declare @wwekStart date = DATEADD(dd, -(DATEPART(dw, @startDate)-1), @startDate)
declare @monthStart date = DATEADD(month, DATEDIFF(month, 0,@startDate), 0)
declare @quarterStart date = DATEADD(quarter, DATEDIFF(quarter, 0,@startDate), 0)
declare @yearStart date = DATEADD(year, DATEDIFF(year, 0,@startDate), 0)
--set datefirst 1
;WITH nums(num) AS
(
SELECT 1
UNION ALL
SELECT num+1
FROM nums
WHERE num < @cnt
)
insert into @res
SELECT num,
case @type
when 'day' then dateadd(day, -num+1, @startDate)
when 'week' then dateadd(week, -num+1, @wwekStart)
when 'month' then dateadd(month, -num+1, @monthStart)
when 'quarter' then dateadd(quarter, -num+1, @quarterStart)
when 'year' then dateadd(year, -num+1, @yearStart)
else getdate()
end date1,
case @type
when 'day' then dateadd(day, -num+2, @startDate)
when 'week' then dateadd(week, -num+2, @wwekStart)
when 'month' then dateadd(month, -num+2, @monthStart)
when 'quarter' then dateadd(quarter, -num+2, @quarterStart)
when 'year' then dateadd(year, -num+2, @yearStart)
else getdate()
end date2,
case @type
when 'day' then format(dateadd(day, -num+1, @startDate), iif(@format<>'', @format, 'dd.MM.yyyy'), @langCode)
when 'week' then replace(
format(dateadd(week, -num+1, @wwekStart), iif(@format<>'', @format,'ww неделя yyyy'), @langCode),
'ww', datepart(week, dateadd(week, -num+1, @wwekStart)) )
when 'month' then format(dateadd(month, -num+1, @monthStart), iif(@format<>'', @format,'MMMM yyyy'), @langCode)
when 'quarter' then replace(
format(dateadd(quarter, -num+1, @quarterStart), iif(@format<>'', @format,'qq квартал yyyy'), @langCode),
'qq', datepart(quarter, dateadd(quarter, -num+1, @quarterStart)) )
when 'year' then format(dateadd(year, -num+1, @yearStart), iif(@format<>'', @format,'yyyy'), @langCode)
else ''
end name
FROM nums
RETURN
END
Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Google поиск по нашей документации
Нужна бесплатная консультация?
Планируете делать веб-проект?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта