-
Notifications
You must be signed in to change notification settings - Fork 2
/
script_tabular_editor_organiza_calendario.cs
91 lines (79 loc) · 3.34 KB
/
script_tabular_editor_organiza_calendario.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Este script realiza as seguintes operações:
// 1. Faz a ordenação das colunas de texto pelas colunas numéricas
// 2. Organiza as colunas em pastas por granularidade
// 3. Aplica o formato short date para colunas do tipo data
// 4. Remove agregações das colunas numéricas
// 5. Marca a tabela como tabela de data
// Acessa a tabela calendario. O nome da tabela é case-sensitive
var calendario = Model.Tables["calendario"];
// Cria um mapeamento das colunas de texto e suas respectivas colunas numéricas para ordenação
var columnPairs = new Dictionary<string, string>
{
{"AnoAtual", "Ano"},
{"DataAtual", "Data"},
{"DiaSemanaNome", "DiaSemanaNum"},
{"DiaSemanaNomeAbrev", "DiaSemanaNum"},
{"MesNome", "MesNum"},
{"MesNomeAbrev", "MesNum"},
{"SemanaAnoIsoNome", "SemanaAnoIsoNum"},
{"SemanaAtual", "SemanaAnoIsoNum"},
{"TrimestreAnoNome", "TrimestreAnoNum"},
{"TrimestreAtual", "TrimestreAnoNum"},
{"MesAnoNome", "MesAnoNum"},
{"MesAtual", "MesAnoNum"},
{"MesFiscalNome", "MesFiscalNum"},
{"MesFiscalNomeAbrev", "MesFiscalNum"}
};
// Aplica a ordenação para cada coluna de texto
foreach (var pair in columnPairs)
{
var textColumn = calendario.Columns[pair.Key]; // Coluna de texto
var sortColumn = calendario.Columns[pair.Value]; // Coluna numérica correspondente
// Verifica se ambas as colunas existem e aplica a ordenação
if (textColumn != null && sortColumn != null)
{
textColumn.SortByColumn = sortColumn; // Ordena a coluna de texto pela coluna numérica
}
}
// Dicionário para associar as colunas às pastas correspondentes
var displayFolders = new Dictionary<string, string[]>
{
{ "Ano", new[] { "Ano", "AnoAtual", "AnoFiscal", "AnoIso" } },
{ "Dia", new[] { "Data", "DataAtual", "Dia", "DiaSemanaNome", "DiaSemanaNomeAbrev", "DiaSemanaNum" } },
{ "Dias Úteis / Feriados", new[] { "E_DiaUtil", "E_Feriado", "E_FinalSemana", "Feriado" } },
{ "Meses", new[] { "MesAnoNome", "MesAnoNum", "MesAtual", "MesFiscalNome", "MesFiscalNomeAbrev", "MesFiscalNum", "MesNome", "MesNomeAbrev", "MesNum" } },
{ "Semanas", new[] { "SemanaAnoIsoNome", "SemanaAnoIsoNum", "SemanaAtual", "SemanaIsoNum" } },
{ "Trimestres", new[] { "TrimestreAnoNome", "TrimestreAnoNum", "TrimestreAtual", "TrimestreFiscal", "TrimestreNum" } }
};
// Itera sobre as pastas e aplica o DisplayFolder a cada coluna associada
foreach (var folder in displayFolders)
{
var folderName = folder.Key;
var columns = folder.Value;
foreach (var columnName in columns)
{
var column = calendario.Columns[columnName];
if (column != null)
{
column.DisplayFolder = folderName; // Atribue as colunas à pasta correspondente
}
}
}
// Desabilitar agregações para todas as colunas da tabela
foreach (var column in calendario.Columns)
{
column.SummarizeBy = AggregateFunction.None; // Desabilitar agregação
}
// Definir o formato para as colunas do tipo Data
var dateColumns = new[] { "Data" }; // Colunas que contêm datas
foreach (var columnName in dateColumns)
{
var column = calendario.Columns[columnName];
if (column != null)
{
column.FormatString = "Short Date"; // Aplica o formato de data curta
}
}
// Marcar como uma tabela de data
calendario.DataCategory = "Time";
calendario.Columns["Data"].IsKey = true;