예제 #1
0
        void OpenLinkRequest(Database.LinkRequestTable link, bool focus)
        {
            //TODO this code is the same as the one inSpreadsheetPane, should be put together
            UIElementsHelper.SetVisibility(VisualElements[2], m_ActiveMode.snapshot.nativeAllocationSites.Count > 0 && m_CurrentTableView == TableDisplayMode.Allocations);

            var tableRef = new Database.TableReference(link.LinkToOpen.TableName, link.Parameters);
            var table    = m_ActiveMode.SchemaToDisplay.GetTableByReference(tableRef);

            if (table == null)
            {
                UnityEngine.Debug.LogError("No table named '" + link.LinkToOpen.TableName + "' found.");
                return;
            }
            if (link.LinkToOpen.RowWhere != null && link.LinkToOpen.RowWhere.Count > 0)
            {
                Database.Table filteredTable = table;
                if (table.GetMetaData().defaultFilter != null)
                {
                    filteredTable = table.GetMetaData().defaultFilter.CreateFilter(table);
                }
                Database.Operation.ExpressionParsingContext expressionParsingContext = null;
                if (link.SourceView != null)
                {
                    expressionParsingContext = link.SourceView.ExpressionParsingContext;
                }
                var whereUnion = new Database.View.WhereUnion(link.LinkToOpen.RowWhere, null, null, null, null, m_ActiveMode.SchemaToDisplay, filteredTable, expressionParsingContext);
                var indices    = whereUnion.GetMatchingIndices(link.SourceRow);
                var newTab     = new Database.Operation.IndexedTable(table, new ArrayRange(indices));
                OpenTable(tableRef, newTab, focus);
            }
            else
            {
                OpenTable(tableRef, table, new Database.CellPosition(0, 0), focus);
            }
        }
예제 #2
0
 protected Database.Table CreateGroupTable(Database.Operation.GroupedTable table, Database.Operation.GroupedTable.Group g, long groupIndex)
 {
     if (SubGroupFilter != null)
     {
         return(SubGroupFilter.CreateFilter(table.m_table, g.m_GroupIndice));
     }
     Database.Operation.IndexedTable subTable = new Database.Operation.IndexedTable(table.m_table, g.m_GroupIndice);
     return(subTable);
 }
예제 #3
0
 public override Database.Table CreateFilter(Database.Table tableIn, ArrayRange range)
 {
     Database.Operation.IndexedTable subTable = new Database.Operation.IndexedTable(tableIn, range);
     return(CreateFilter(subTable));
 }