//internal static string GetSortExpr(PerformMemberActionArgs args) //{ // List<string> sortExpr = new List<string>(); // string lasthier = args.Member.HierarchyUniqueName; // for (int i = 0; i < args.Ascendants.Count; i++) // { // var member = args.Ascendants[i]; // if (lasthier != member.HierarchyUniqueName) // { // lasthier = member.HierarchyUniqueName; // sortExpr.Insert(0, member.UniqueName); // } // } // sortExpr.Add(args.Member.UniqueName); // return "("+string.Join(",",sortExpr.ToArray())+")"; //} internal void SortByValue(PerformMemberActionArgs args) { var tuple = args.Member.GetAxisTuple(); var measuresSort=MeasuresSort as SortByValueDescriptor; if (measuresSort == null) { measuresSort = new SortByValueDescriptor(); measuresSort.Tuple=tuple; MeasuresSort = measuresSort; } else if (!measuresSort.CompareByTuple(tuple)) { measuresSort.Tuple = tuple; measuresSort.Type = SortTypes.None; } if (MeasuresSort.Type == SortTypes.None) MeasuresSort.Type = SortTypes.Ascending; else if (MeasuresSort.Type == SortTypes.Ascending) MeasuresSort.Type = SortTypes.Descending; else if (MeasuresSort.Type == SortTypes.Descending) MeasuresSort.Type = SortTypes.None; }
//internal static string GetSortExpr(PerformMemberActionArgs args) //{ // List<string> sortExpr = new List<string>(); // string lasthier = args.Member.HierarchyUniqueName; // for (int i = 0; i < args.Ascendants.Count; i++) // { // var member = args.Ascendants[i]; // if (lasthier != member.HierarchyUniqueName) // { // lasthier = member.HierarchyUniqueName; // sortExpr.Insert(0, member.UniqueName); // } // } // sortExpr.Add(args.Member.UniqueName); // return "("+string.Join(",",sortExpr.ToArray())+")"; //} internal void SortByValue(PerformMemberActionArgs args) { var tuple = args.Member.GetAxisTuple(); var measuresSort = MeasuresSort as SortByValueDescriptor; if (measuresSort == null) { measuresSort = new SortByValueDescriptor(); measuresSort.Tuple = tuple; MeasuresSort = measuresSort; } else if (!measuresSort.CompareByTuple(tuple)) { measuresSort.Tuple = tuple; measuresSort.Type = SortTypes.None; } if (MeasuresSort.Type == SortTypes.None) { MeasuresSort.Type = SortTypes.Ascending; } else if (MeasuresSort.Type == SortTypes.Ascending) { MeasuresSort.Type = SortTypes.Descending; } else if (MeasuresSort.Type == SortTypes.Descending) { MeasuresSort.Type = SortTypes.None; } }
internal void SortByValue(int axisIndex, PerformMemberActionArgs args) { AxisInfo ai = (axisIndex == 0) ^ RotateAxes ? RowsActionChain : ColumnsActionChain; ai.SortByValue(args); }
public CellSetData PerformMemberAction(PerformMemberActionArgs args) { if (args != null) { switch (args.Action) { case MemberActionType.Expand: case MemberActionType.Collapse: case MemberActionType.DrillDown: case MemberActionType.DrillUp: // Удаляем все элементы истории, стоящие за текущим History.CutRight(); HistoryItem clone = null; if (History.CurrentHistoryItem != null) { // Клонируем текущий элемент истории чтобы действие добавлялось уже в клон clone = (HistoryItem)(History.CurrentHistoryItem.Clone()); } else { // Добавляем пустой элемент истории HistoryItem first = new HistoryItem(); History.AddHistoryItem(first); clone = new HistoryItem(); } History.AddHistoryItem(clone); break; } switch (args.Action) { case MemberActionType.Expand: ExpandMember(args); break; case MemberActionType.Collapse: CollapseMember(args); break; case MemberActionType.DrillDown: DrillDownMember(args); break; case MemberActionType.DrillUp: DrillUpMember(args); break; } } return(RefreshQuery()); }
public static PerformMemberActionArgs CreatePerformMemberActionArgs( MemberInfo member, int axisIndex, MemberActionType action, List <MemberInfo> ascendants) { PerformMemberActionArgs args = new PerformMemberActionArgs(); args.Member = member; args.AxisIndex = axisIndex; args.Action = action; args.Ascendants = ascendants; return(args); }
public MemberActionCollapse(PerformMemberActionArgs args) : base(args) { }
protected virtual void ExecuteMemberAction(MdxQueryArgs query_args, PerformMemberActionArgs args) { if (args != null && query_args != null) { IsWaiting = true; LogManager.LogInformation(this, this.Name + String.Format(" - {0} member {1}", args.Action.ToString(), args.Member != null ? args.Member.UniqueName : "<null>")); OlapDataLoader.LoadData(query_args, args); } }
void DrillUpMember(PerformMemberActionArgs args) { //using (WaitCursor wc = new WaitCursor()) { IList<DrillActionContainer> actions = null; if (!RotateAxes) { actions = args.AxisIndex == 0 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } else { actions = args.AxisIndex == 1 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } DrillActionContainer previous = null; DrillActionContainer container = null; // Действия над элементами из этой же иерархии IList<DrillActionContainer> actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(actions, args.Member.HierarchyUniqueName); if (actionsToHierarchy != null) { // Все действия зануляем foreach (DrillActionContainer action in actionsToHierarchy) { action.Action = null; } } // Родители if (args.Ascendants != null) { for (int i = args.Ascendants.Count - 1; i >= 0; i--) { MemberInfo mi = args.Ascendants[i]; container = History.CurrentHistoryItem.FindDrillActionContainer(actions, mi.UniqueName); if (container == null) { container = new DrillActionContainer(mi.UniqueName, mi.HierarchyUniqueName); if (previous == null) actions.Add(container); else previous.Children.Add(container); } previous = container; } } // Сам элемент container = History.CurrentHistoryItem.FindDrillActionContainer(actions, args.Member.UniqueName); if (container == null) { container = new DrillActionContainer(args.Member.UniqueName, args.Member.HierarchyUniqueName); container.Action = new MdxDrillUpAction(args.Member.UniqueName, args.Member.HierarchyUniqueName, args.Member.LevelDepth); if (previous == null) actions.Add(container); else previous.Children.Add(container); } else { // Удаляем все вложенные экшены для данной иерархии IList<DrillActionContainer> child_actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(container.Children, args.Member.HierarchyUniqueName); if (child_actionsToHierarchy != null) { // Все действия зануляем foreach (DrillActionContainer action in child_actionsToHierarchy) { action.Action = null; } } container.Action = new MdxDrillUpAction(args.Member.UniqueName, args.Member.HierarchyUniqueName, args.Member.LevelDepth); } } /*using (WaitCursor wc = new WaitCursor()) { IList<DrillActionContainer> actions = args.AxisIndex == 0 ? ColumnsActionChain : RowsActionChain; actions.Clear(); DrillActionContainer container = new DrillActionContainer(args.Member.UniqueName); container.Action = new MdxDrillUpAction(args.Member.UniqueName); actions.Add(container); this.RefreshQuery(); }*/ }
void CollapseMember(PerformMemberActionArgs args) { //using (WaitCursor wc = new WaitCursor()) { IList<DrillActionContainer> actions = null; if (!RotateAxes) { actions = args.AxisIndex == 0 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } else { actions = args.AxisIndex == 1 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } DrillActionContainer previous = null; DrillActionContainer container = null; // Родители if (args.Ascendants != null) { for (int i = args.Ascendants.Count - 1; i >= 0; i--) { MemberInfo mi = args.Ascendants[i]; container = History.CurrentHistoryItem.FindDrillActionContainer(actions, mi.UniqueName); if (container == null) { container = new DrillActionContainer(mi.UniqueName, mi.HierarchyUniqueName); if (previous == null) actions.Add(container); else previous.Children.Add(container); } previous = container; } } // Сам элемент container = History.CurrentHistoryItem.FindDrillActionContainer(actions, args.Member.UniqueName); if (container == null) { container = new DrillActionContainer(args.Member.UniqueName, args.Member.HierarchyUniqueName); container.Action = new MdxCollapseAction(args.Member.UniqueName); if (previous == null) actions.Add(container); else previous.Children.Add(container); } else { // Удалем все дочерние - тем самым как бы схлопываем элемент // Удаляем все вложенные экшены для данной иерархии IList<DrillActionContainer> actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(container.Children, args.Member.HierarchyUniqueName); if (actionsToHierarchy != null) { // Все действия зануляем foreach (DrillActionContainer action in actionsToHierarchy) { action.Action = null; } } container.Action = new MdxCollapseAction(args.Member.UniqueName); } } }
private void ExpandMember(PerformMemberActionArgs args) { //using (WaitCursor wc = new WaitCursor()) { IList<DrillActionContainer> actions = null; if (!RotateAxes) { actions = args.AxisIndex == 0 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } else { actions = args.AxisIndex == 1 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } DrillActionContainer previous = null; DrillActionContainer container = null; // Родители if (args.Ascendants != null) { for (int i = args.Ascendants.Count - 1; i >= 0; i--) { MemberInfo mi = args.Ascendants[i]; container = History.CurrentHistoryItem.FindDrillActionContainer(actions, mi.UniqueName); if (container == null) { container = new DrillActionContainer(mi.UniqueName, mi.HierarchyUniqueName); if (previous == null) actions.Add(container); else previous.Children.Add(container); } previous = container; } } MdxDrillDownAction skip_container = null; // Сам элемент container = History.CurrentHistoryItem.FindDrillActionContainer(actions, args.Member.UniqueName); if (container == null) { container = new DrillActionContainer(args.Member.UniqueName, args.Member.HierarchyUniqueName); container.Action = new MdxExpandAction(args.Member.UniqueName); if (previous == null) actions.Add(container); else previous.Children.Add(container); } else { // Если по данному элементу уже дедался дриллдаун - то дриллдаун остается в силе. А раскрытие - прокидываем skip_container = container.Action as MdxDrillDownAction; if (skip_container == null) container.Action = new MdxExpandAction(args.Member.UniqueName); } // Вложенные действия над элементами из этой же иерархии IList<DrillActionContainer> actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(actions, args.Member.HierarchyUniqueName); if (actionsToHierarchy != null) { // Все DrillUp и DrillDown операции зануляем если уровень у них глубже foreach (DrillActionContainer action in actionsToHierarchy) { MdxDrillDownAction drillDownAction = action.Action as MdxDrillDownAction; if (drillDownAction != null && drillDownAction.LevelDepth >= args.Member.LevelDepth) { if (skip_container != null && skip_container == drillDownAction) continue; action.Action = null; } MdxDrillUpAction drillUpAction = action.Action as MdxDrillUpAction; if (drillUpAction != null && drillUpAction.LevelDepth >= args.Member.LevelDepth) { action.Action = null; } } } } }
public String PerformMemberAction(PerformMemberActionArgs args) { if (args != null) { switch (args.Action) { case MemberActionType.Expand: case MemberActionType.Collapse: case MemberActionType.DrillDown: case MemberActionType.DrillUp: // Удаляем все элементы истории, стоящие за текущим History.CutRight(); HistoryItem clone = null; if (History.CurrentHistoryItem != null) { // Клонируем текущий элемент истории чтобы действие добавлялось уже в клон clone = (HistoryItem)(History.CurrentHistoryItem.Clone()); } else { // Добавляем пустой элемент истории HistoryItem first = new HistoryItem(); History.AddHistoryItem(first); clone = new HistoryItem(); } History.AddHistoryItem(clone); break; } switch (args.Action) { case MemberActionType.Expand: ExpandMember(args); break; case MemberActionType.Collapse: CollapseMember(args); break; case MemberActionType.DrillDown: DrillDownMember(args); break; case MemberActionType.DrillUp: DrillUpMember(args); break; } } return RefreshQuery(); }
public MemberActionDrillDown(PerformMemberActionArgs args, DrillDownMode DrillDownMode) : base(args) { this.DrillDownMode = DrillDownMode; }
public MemberActionExpand(PerformMemberActionArgs args) : base(args) { }
public static PerformMemberActionArgs CreatePerformMemberActionArgs( MemberInfo member, int axisIndex, MemberActionType action, List<MemberInfo> ascendants) { PerformMemberActionArgs args = new PerformMemberActionArgs(); args.Member = member; args.AxisIndex = axisIndex; args.Action = action; args.Ascendants = ascendants; return args; }
void DrillUpMember(PerformMemberActionArgs args) { //using (WaitCursor wc = new WaitCursor()) { IList <DrillActionContainer> actions = null; if (!RotateAxes) { actions = args.AxisIndex == 0 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } else { actions = args.AxisIndex == 1 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } DrillActionContainer previous = null; DrillActionContainer container = null; // Действия над элементами из этой же иерархии IList <DrillActionContainer> actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(actions, args.Member.HierarchyUniqueName); if (actionsToHierarchy != null) { // Все действия зануляем foreach (DrillActionContainer action in actionsToHierarchy) { action.Action = null; } } // Родители if (args.Ascendants != null) { for (int i = args.Ascendants.Count - 1; i >= 0; i--) { ShortMemberInfo mi = args.Ascendants[i]; container = History.CurrentHistoryItem.FindDrillActionContainer(actions, mi.UniqueName); if (container == null) { container = new DrillActionContainer(mi.UniqueName, mi.HierarchyUniqueName); if (previous == null) { actions.Add(container); } else { previous.Children.Add(container); } } previous = container; } } // Сам элемент container = History.CurrentHistoryItem.FindDrillActionContainer(actions, args.Member.UniqueName); if (container == null) { container = new DrillActionContainer(args.Member.UniqueName, args.Member.HierarchyUniqueName); container.Action = new MdxDrillUpAction(args.Member.UniqueName, args.Member.HierarchyUniqueName, args.Member.LevelDepth); if (previous == null) { actions.Add(container); } else { previous.Children.Add(container); } } else { // Удаляем все вложенные экшены для данной иерархии IList <DrillActionContainer> child_actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(container.Children, args.Member.HierarchyUniqueName); if (child_actionsToHierarchy != null) { // Все действия зануляем foreach (DrillActionContainer action in child_actionsToHierarchy) { action.Action = null; } } container.Action = new MdxDrillUpAction(args.Member.UniqueName, args.Member.HierarchyUniqueName, args.Member.LevelDepth); } } /*using (WaitCursor wc = new WaitCursor()) * { * IList<DrillActionContainer> actions = args.AxisIndex == 0 ? ColumnsActionChain : RowsActionChain; * * actions.Clear(); * * DrillActionContainer container = new DrillActionContainer(args.Member.UniqueName); * container.Action = new MdxDrillUpAction(args.Member.UniqueName); * * actions.Add(container); * * this.RefreshQuery(); * }*/ }
void CollapseMember(PerformMemberActionArgs args) { //using (WaitCursor wc = new WaitCursor()) { IList <DrillActionContainer> actions = null; if (!RotateAxes) { actions = args.AxisIndex == 0 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } else { actions = args.AxisIndex == 1 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } DrillActionContainer previous = null; DrillActionContainer container = null; // Родители if (args.Ascendants != null) { for (int i = args.Ascendants.Count - 1; i >= 0; i--) { ShortMemberInfo mi = args.Ascendants[i]; container = History.CurrentHistoryItem.FindDrillActionContainer(actions, mi.UniqueName); if (container == null) { container = new DrillActionContainer(mi.UniqueName, mi.HierarchyUniqueName); if (previous == null) { actions.Add(container); } else { previous.Children.Add(container); } } previous = container; } } // Сам элемент container = History.CurrentHistoryItem.FindDrillActionContainer(actions, args.Member.UniqueName); if (container == null) { container = new DrillActionContainer(args.Member.UniqueName, args.Member.HierarchyUniqueName); container.Action = new MdxCollapseAction(args.Member.UniqueName); if (previous == null) { actions.Add(container); } else { previous.Children.Add(container); } } else { // Удалем все дочерние - тем самым как бы схлопываем элемент // Удаляем все вложенные экшены для данной иерархии IList <DrillActionContainer> actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(container.Children, args.Member.HierarchyUniqueName); if (actionsToHierarchy != null) { // Все действия зануляем foreach (DrillActionContainer action in actionsToHierarchy) { action.Action = null; } } container.Action = new MdxCollapseAction(args.Member.UniqueName); } } }
private void ExpandMember(PerformMemberActionArgs args) { //using (WaitCursor wc = new WaitCursor()) { IList <DrillActionContainer> actions = null; if (!RotateAxes) { actions = args.AxisIndex == 0 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } else { actions = args.AxisIndex == 1 ? History.CurrentHistoryItem.ColumnsActionChain : History.CurrentHistoryItem.RowsActionChain; } DrillActionContainer previous = null; DrillActionContainer container = null; // Родители if (args.Ascendants != null) { for (int i = args.Ascendants.Count - 1; i >= 0; i--) { ShortMemberInfo mi = args.Ascendants[i]; container = History.CurrentHistoryItem.FindDrillActionContainer(actions, mi.UniqueName); if (container == null) { container = new DrillActionContainer(mi.UniqueName, mi.HierarchyUniqueName); if (previous == null) { actions.Add(container); } else { previous.Children.Add(container); } } previous = container; } } MdxDrillDownAction skip_container = null; // Сам элемент container = History.CurrentHistoryItem.FindDrillActionContainer(actions, args.Member.UniqueName); if (container == null) { container = new DrillActionContainer(args.Member.UniqueName, args.Member.HierarchyUniqueName); container.Action = new MdxExpandAction(args.Member.UniqueName); if (previous == null) { actions.Add(container); } else { previous.Children.Add(container); } } else { // Если по данному элементу уже дедался дриллдаун - то дриллдаун остается в силе. А раскрытие - прокидываем skip_container = container.Action as MdxDrillDownAction; if (skip_container == null) { container.Action = new MdxExpandAction(args.Member.UniqueName); } } // Вложенные действия над элементами из этой же иерархии IList <DrillActionContainer> actionsToHierarchy = History.CurrentHistoryItem.FindDrillActionContainersByHierarchy(actions, args.Member.HierarchyUniqueName); if (actionsToHierarchy != null) { // Все DrillUp и DrillDown операции зануляем если уровень у них глубже foreach (DrillActionContainer action in actionsToHierarchy) { MdxDrillDownAction drillDownAction = action.Action as MdxDrillDownAction; if (drillDownAction != null && drillDownAction.LevelDepth >= args.Member.LevelDepth) { if (skip_container != null && skip_container == drillDownAction) { continue; } action.Action = null; } MdxDrillUpAction drillUpAction = action.Action as MdxDrillUpAction; if (drillUpAction != null && drillUpAction.LevelDepth >= args.Member.LevelDepth) { action.Action = null; } } } } }
public MemberAction(PerformMemberActionArgs args) { this.args = args; }