예제 #1
0
        private bool DoCalculate(OlapControl Grid, ICubeAddress Address, out object Value,
                                 out CellFormattingProperties Formatted)
        {
            var fEvent = new CalcMemberArgs();

            fEvent.fEvaluator = new Evaluator(Grid, Address);
            if (Address.IsCalculatedByExpression)
            {
                Value = DoCalculateExpression(Grid, Address, fEvent.fEvaluator);
                fEvent.ReturnValue = Address.Measure.FormatValue(Value, Address.Measure.DefaultFormat);

                Formatted = new CellFormattingProperties(fEvent.ReturnValue, fEvent.ReturnBackColor,
                                                         fEvent.ReturnForeColor,
                                                         fEvent.fFontStyle, fEvent.fFontName, fEvent.fFontSize);

                return(Value != null);
            }

            fEvent.fValue = null;
            Grid.EventCalcMember(fEvent);

            Formatted = new CellFormattingProperties(fEvent.ReturnValue, fEvent.ReturnBackColor, fEvent.ReturnForeColor,
                                                     fEvent.fFontStyle, fEvent.fFontName, fEvent.fFontSize);

            Value = fEvent.ReturnData;
            return(Value != null);
        }
예제 #2
0
 internal ClientDimension(Dimension d, OlapControl grid)
 {
     DisplayName = d.DisplayName;
     Description = d.Description;
     Hierarchies = d.Hierarchies.Where(item => item.Visible).Select(item => new ClientHierarchy(item, grid))
                   .ToArray();
 }
예제 #3
0
        public ICubeAddress(OlapControl AGrid, IList <Member> AMembers)
        {
            FMeasureID        = string.Empty;
            FModeID           = 0;
            FLevelsAndMembers = CreateSortedList();
            FGrid             = AGrid;
            var L = AMembers.Count;

            foreach (var m in AMembers)
            {
                if (m.FMemberType == MemberType.mtMeasure)
                {
                    FMeasureID = m.UniqueName;
                }
                else
                {
                    if (m.FMemberType == MemberType.mtMeasureMode)
                    {
                        FModeID = m.Parent.Children.IndexOf(m);
                    }
                    else
                    {
                        FLevelsAndMembers.Add(m.FLevel.ID, m);
                    }
                }
            }
            var M = AGrid.FEngine.GetMetaline(FLevelsAndMembers.Keys);

            FLineID  = M.fID;
            FLineIdx = M.GetLineIdx(FLevelsAndMembers.Values);
            FHierID  = M.GetHierID(FLevelsAndMembers.Values);
        }
예제 #4
0
        internal HistoryManager(OlapControl grid)
        {
            fGrid = grid;

            Updater            = new Updater(this);
            Updater.UpdateEnd += Updater_UpdateEnd;
        }
예제 #5
0
        internal GenericFilterGrid(OlapControl grid)
        {
            ActionString            = RadarUtils.GetResStr("rsActions");
            ItemString              = RadarUtils.GetResStr("rsItem");
            FilterDescriptionString = RadarUtils.GetResStr("rsFilterDescription");
            EditFilterString        = RadarUtils.GetResStr("rsEditFilter");
            ResetFilterString       = RadarUtils.GetResStr("repResetFilter");

            if (grid.Active)
            {
                foreach (var m in grid.Measures)
                {
                    if (m.Filter != null)
                    {
                        Items.Add(new GenericFilterGridItem(m));
                    }
                }

                foreach (var d in grid.Dimensions)
                {
                    foreach (var h in d.Hierarchies)
                    {
                        var s = h.FilterDescription;
                        if (!string.IsNullOrEmpty(s))
                        {
                            Items.Add(new GenericFilterGridItem(h));
                        }
                    }
                }
            }
        }
예제 #6
0
        internal static JsonDialog RenderMassage(OlapControl Grid, Exception E)
        {
            var result = new JsonDialog();

            result.title = RadarUtils.GetResStr("rsErrorMessage");

            var buttons = new List <JsonDialogButton>();

            if (!string.IsNullOrEmpty(Grid.SupportEMail))
            {
                buttons.Add(new JsonDialogButton
                {
                    text = "Refresh",             //RadarUtils.GetResStr("rsSendToSupport"),
                    code = "window.location = window.location.pathname; " +
                           "RadarSoft.$(this).dialog('close');"
                });
            }

            buttons.Add(new JsonDialogButton
            {
                text = RadarUtils.GetResStr("rsClose"),
                code = "RadarSoft.$(this).dialog('close')"
            });

            result.data = "<div width='500'>" +
                          "<div style='width:490px;margin:5px;overflow:auto;border:2px inset #C0C0C0;;color:#404040;;height:90px;'>" +
                          E.Message.Replace("\n", "<br />") +
                          "</div>" +
                          "</div>";
            result.buttons = buttons.ToArray();
            return(result);
        }
 protected OlapAxisLayoutSerializer(OlapControl grid, bool OnlyGraphicalPart)
     : this()
 {
     // OLAPWINFORM
     fGrid = grid;
     LoadFrom(grid);
 }
예제 #8
0
        internal MetaLine(OlapControl AGrid, IList <int> LevelIndexes)
            : this()
        {
            FGrid   = AGrid;
            fLevels = new List <Level>(LevelIndexes.Count);
            var b = 1;

            fIdxArray  = new List <long>(LevelIndexes.Count);
            fHierArray = new List <int>(LevelIndexes.Count);
            fLines     = new SortedList <string, Line>();
            if (LevelIndexes.Count == 0)
            {
                return;
            }

            for (var i = 0; i < LevelIndexes.Count; i++)
            {
                var L = AGrid.FEngine.FLevelsList[LevelIndexes[i]];
                fLevels.Add(L);
                fIdxArray.Add(FLimit);
                fHierArray.Add(b);
                FLimit *= L.CompleteMembersCount;
                b      *= L.FDepth;
            }
            fID = RadarUtils.Join('.', LevelIndexes);
#if DEBUG
            if (fID == "5")
            {
            }
#endif
        }
예제 #9
0
        public ErrorData(Exception E, OlapControl grid)
        {
            try
            {
                Message = E.Message;

                GridVersion = grid.GetType().Name + ": " + grid.GetType().GetTypeInfo().Assembly.GetName().Version;
                if (grid.Cube != null)
                {
                    CubeVersion = grid.Cube.GetType().Name + ": " +
                                  grid.Cube.GetType().GetTypeInfo().Assembly.GetName().Version;
                }
                else
                {
                    CubeVersion = "Cube is not connected.";
                }
                if (grid.callbackExceptionData != null)
                {
                    foreach (var item in grid.callbackExceptionData)
                    {
                        RequestInfo = item.Key + ": " + item.Value;
                    }
                }
                StackTrace = E.StackTrace;
                Support    = grid.SupportEMail;
            }
            catch (Exception eee)
            {
                Message    = eee.Message;
                StackTrace = eee.StackTrace;
            }
        }
        internal void Init(OlapControl grid)
        {
            var cube = grid.Cube;

            if (cube != null)
            {
                cube.InitSessionData(grid);
            }
            CubeID = grid.Cube != null ? grid.Cube.ID : "";

            var tmp = new MemoryStream();
            var bw  = new BinaryWriter(tmp);

            (grid as IStreamedObject).WriteStream(bw, null);

            length = Convert.ToInt32(tmp.Length);
            var b = tmp.ToArray();

            tmp = null;
            ms  = new MemoryStream();
            using (var ds = new DeflateStream(ms, CompressionMode.Compress, true))
            {
                ds.Write(b, 0, b.Length);
            }
        }
예제 #11
0
 internal void RestoreAfterSerialization(OlapControl grid)
 {
     FGrid = grid;
     foreach (var d in this)
     {
         d.RestoreAfterSerialization(grid);
     }
 }
        internal virtual void Restore(OlapControl grid)
        {
            if (grid.IsRestored)
            {
                return;
            }

            var rc = grid.Cube;

            if (rc == null)
            {
                return;
            }

            rc.RestoreCube();
            grid.Cube = rc;

            grid.BeginUpdate();
            try
            {
                ms.Position = 0;
                var ds  = new DeflateStream(ms, CompressionMode.Decompress);
                var b   = new byte[length + 4096];
                var br  = ReadAllBytesFromStream(ds, b);
                var tmp = new MemoryStream(b);
                tmp.Position = 0;
                var reader = new BinaryReader(tmp);

                (grid as IStreamedObject).ReadStream(reader, null);

                grid.FLayout.fGrid = grid;
                if (grid.FCellSet != null)
                {
                    grid.FCellSet.FGrid = grid;
                    grid.FCellSet.RestoreAfterSerialization(grid);
                }

                if (grid.FCellSet != null)
                {
                    var i = grid.CellSet.FValueSortedColumn;
                    if (i >= 0)
                    {
                        grid.CellSet.Rebuild();
                        grid.CellSet.ValueSortedColumn = i;
                    }
                }
                grid.IsRestored = true;
            }
#if DEBUG
            catch (Exception e)
            {
            }
#endif
            finally
            {
                grid.EndUpdate();
            }
        }
예제 #13
0
 internal ChartCellDetails(OlapControl grid, List <Level> clue, int[] memberIDs)
 {
     fGrid   = grid;
     Address = new ICubeAddress(fGrid);
     for (var i = 0; i < clue.Count; i++)
     {
         Address.AddMember(clue[i].GetMemberByID(memberIDs[i]));
     }
 }
        internal virtual void LoadTo(OlapControl aGrid)
        {
            DebugLogging.WriteLine("OlapAxisLayoutSerializer.LoadTo");

            if (!aGrid.Active)
            {
                return;
            }

            aGrid.FEmptyDataString      = EmptyDataString;
            aGrid.FCurrencyFormatString = CurrencyFormatString;


            aGrid.BeginUpdate();

            Clear(aGrid);

            if (AxesLayout != null)
            {
                aGrid.FLayout.fMeasureLayout              = AxesLayout.MeasureLayout;
                aGrid.FLayout.fMeasurePosition            = AxesLayout.MeasurePosition;
                aGrid.FLayout.fHideMeasureIfPossible      = AxesLayout.HideMeasureIfPossible;
                aGrid.FLayout.fHideMeasureModesIfPossible = AxesLayout.HideMeasureModesIfPossible;

                aGrid.FCellSet.FSortingDirection = AxesLayout.ValueSortingDirection;
                aGrid.FCellSet.ValueSortedColumn = AxesLayout.ValueSortedColumn;
            }

            var assignedMeasures = aGrid.Measures.Where(item => item.Visible).ToList();

            LoadMeasuresXandY(aGrid, assignedMeasures);
            LoadHierarchies(aGrid, assignedMeasures);

            aGrid.FCellSet.Rebuild();

            LoadMeasures(aGrid);

            assignedMeasures = aGrid.Measures.Where(item => item.Visible).ToList();

            aGrid.FCellSet.Rebuild();

            if (AxesLayout != null)
            {
                aGrid.FCellSet.FSortingDirection = AxesLayout.ValueSortingDirection;
                aGrid.FCellSet.ValueSortedColumn = AxesLayout.ValueSortedColumn;
            }

            foreach (var item in assignedMeasures)
            {
                aGrid.Pivoting(item, LayoutArea.laRow, null, LayoutArea.laNone);
            }
            LoadComments(aGrid);
            LoadColumnsWidth(aGrid);

            aGrid.EndUpdate();
        }
예제 #15
0
 public ICubeAddress(OlapControl AGrid)
 {
     FGrid             = AGrid;
     FLineID           = string.Empty;
     FLineIdx          = 0;
     FHierID           = 0;
     FMeasureID        = string.Empty;
     FModeID           = 0;
     FLevelsAndMembers = CreateSortedList();
 }
        private void SaveCubeData(OlapControl grid)
        {
            //var ms = new MemoryStream();
            //grid.SaveCompressed(ms, StreamContent.CubeData);
            //ms.Position = 0;
            //var b = new byte[ms.Length];
            //ms.Read(b,  0, (int)ms.Length);

            //_StreamData = Convert.ToBase64String(b, Base64FormattingOptions.None);
        }
        public MvcJsonSettings(OlapControl grid)
            : base(grid)
        {
            var olapAnalysis = grid as OlapAnalysis;

            callbackController = olapAnalysis.CallbackController;
            callbackAction     = olapAnalysis.CallbackAction;
            exportController   = olapAnalysis.ExportController;
            exportAction       = olapAnalysis.ExportAction;
            filterClientId     = olapAnalysis.Filter.ClientID;
        }
 private void LoadComments(OlapControl grid)
 {
     grid.FCellSet.fComments.Clear();
     if (CommentStrings != null)
     {
         for (var i = 0; i < CommentStrings.Length; i++)
         {
             var a = CommentAddresses[i].GetCubeAddress(grid);
             grid.FCellSet.fComments.Add(a, CommentStrings[i]);
         }
     }
 }
예제 #19
0
 internal ICubeAddress(OlapControl AGrid, string ALineID, int AHierID,
                       long ALineIdx, string AMeasureID, int AModeID)
 {
     FLevelsAndMembers = CreateSortedList();
     FGrid             = AGrid;
     FLineID           = ALineID;
     FHierID           = AHierID;
     FLineIdx          = ALineIdx;
     FMeasureID        = AMeasureID;
     FModeID           = AModeID;
     SilentInit();
 }
예제 #20
0
 internal void RestoreAfterSerialization(OlapControl grid)
 {
     ClearCache();
     FGrid = grid;
     foreach (var m in this)
     {
         m.RestoreAfterSerialization(grid);
     }
     if (FLevel != null)
     {
         FLevel.RestoreAfterSerialization(grid);
     }
 }
예제 #21
0
        public virtual void InitControlData(CellSet.CellSet cs, OlapControl grid)
        {
            if (grid.callbackException != null)
            {
                exception = SessionTimeoutDialog.RenderMassage(grid, grid.callbackException);
                return;
            }

            Cellset      = new RCellset(cs, grid.MaxTextLength);
            Layout       = new ClientLayout(grid.AxesLayout);
            chartsType   = grid.ChartsType;
            analysisType = "grid";
        }
예제 #22
0
        internal void JScriptCorrection(OlapControl grid)
        {
            var s = "javascript:{RadarSoft.$('#" + grid.ClientID + "').data('grid')}";

            if (MenuItemValue.StartsWith(s))
            {
                MenuItemValue = MenuItemValue.Substring(s.Length);
            }
            MenuItemValue = MenuItemValue.Replace("javascript:olapgrid_manager", "");
            foreach (var mi in ChildItems)
            {
                mi.JScriptCorrection(grid);
            }
        }
예제 #23
0
        internal void Restore(OlapControl grid, List <Measure> assignedMeasures)
        {
            MeasureGroup mg = null;

            foreach (var s in Measures)
            {
                var m = grid.Measures.Find(s);
                if (m != null)
                {
                    mg = grid.Pivoting(m, LayoutArea.laRow, mg, null);
                    assignedMeasures.Remove(m);
                }
            }
        }
예제 #24
0
 internal ChartCellDetails(ChartCellDetails source)
 {
     fGrid                = source.fGrid;
     Address              = source.Address.Clone();
     _XValue              = source.XValue;
     _YValue              = source.YValue;
     _XValueFormatted     = source.XValueFormatted;
     _YValueFormatted     = source.YValueFormatted;
     _SizeValue           = source.SizeValue;
     _SizeValueFormatted  = source.SizeValueFormatted;
     _ShapeValue          = source.ShapeValue;
     _ShapeValueFormatted = source.ShapeValueFormatted;
     _ColorValue          = source.ColorValue;
     _ColorValueFormatted = source.ColorValueFormatted;
     fSeries              = source.fSeries;
     _descr               = source._descr;
 }
예제 #25
0
        private FileStreamResult SaveSettings(string fileName)
        {
            string tempFile = Cube.SessionState.WorkingDirectoryName + fileName + ".dat";

            using (FileStream fileStream = File.Create(tempFile))
            {
                OlapControl.SaveCompressed(fileStream, StreamContent.All);
            }

            FileStream fS  = File.Open(tempFile, FileMode.Open);
            var        res = new FileStreamResult(fS, "application/octet-stream")
            {
                FileDownloadName = fileName + ".dat"
            };

            return(res);
        }
예제 #26
0
        void IStreamedObject.ReadStream(BinaryReader reader, object options)
        {
            FGrid = (OlapControl)options;
            StreamUtils.CheckTag(reader, Tags.tgEngine);
            for (var exit = false; !exit;)
            {
                var tag = StreamUtils.ReadTag(reader);
                int c;
                switch (tag)
                {
                case Tags.tgEngine_Levels:
                    c           = StreamUtils.ReadInt32(reader);
                    FLevelsList = new List <Level>(c);
                    for (var i = 0; i < c; i++)
                    {
                        var l = FGrid.Dimensions.FindLevel(StreamUtils.ReadString(reader));
                        FLevelsList.Add(l);
                    }
                    break;

                case Tags.tgEngine_Metalines:
                    c          = StreamUtils.ReadInt32(reader);
                    FMetaLines = new SortedList <string, MetaLine>(c);
                    for (var i = 0; i < c; i++)
                    {
                        var s = StreamUtils.ReadString(reader);
                        StreamUtils.ReadTag(reader);     // skip Tags.tgMetaLine
                        var m = (MetaLine)StreamUtils.ReadTypedStreamedObject(reader, FGrid);
                        FMetaLines.Add(s, m);
                    }
                    break;

                case Tags.tgEngine_EOT:
                    exit = true;
                    break;

                default:
                    StreamUtils.SkipValue(reader);
                    break;
                }
            }
        }
        private void LoadMeasuresXandY(OlapControl grid, List <Measure> assignedMeasures)
        {
            if (!string.IsNullOrEmpty(AxesLayout.XMeasure))
            {
                var m = grid.Measures.Find(AxesLayout.XMeasure);
                if (m != null)
                {
                    grid.Pivoting(m, LayoutArea.laColumn, null, LayoutArea.laNone);
                    assignedMeasures.Remove(m);
                }
            }

            if (AxesLayout.YMeasures != null)
            {
                foreach (var gm in AxesLayout.YMeasures)
                {
                    gm.Restore(grid, assignedMeasures);
                }
            }
        }
예제 #28
0
        internal void RestoreAfterSerialization(OlapControl grid)
        {
            var old = grid.Engine;

            FGrid = grid;
            FCube = grid.Cube;

            FCube.FEngineList.Remove(old);
            FCube.FEngineList.Add(this);
            if (FCube.fCallbackException != null)
            {
                FGrid.callbackException = FCube.fCallbackException;
            }

            FGrid.FEngine = this;
            foreach (var m in FMetaLines.Values)
            {
                m.FGrid = grid;
            }
        }
        internal virtual void LoadFrom(OlapControl grid)
        {
            DebugLogging.WriteLine("OlapAxisLayoutSerializer.LoadFrom");

            EmptyDataString      = grid.FEmptyDataString;
            CurrencyFormatString = grid.FCurrencyFormatString;

            grid.RefreshChartsType();
            ChartsType = grid.ChartsType;
            TrendSerialize(grid);

            AxesLayout = new SerializedLayout();
            AxesLayout.Init(grid);

            var lh = new List <SerializedHierarchy>();

            foreach (var d in grid.Dimensions)
            {
                foreach (var h in d.Hierarchies)
                {
                    lh.Add(new SerializedHierarchy(h));
                }
            }
            Hierarchies = lh.ToArray();

            if (grid.FCellSet.fComments.Count > 0)
            {
                var ca = new List <SerializedICubeAddress>(grid.FCellSet.fComments.Count);
                var cs = new List <string>(grid.FCellSet.fComments.Count);

                foreach (var k in grid.FCellSet.fComments)
                {
                    ca.Add(new SerializedICubeAddress(k.Key));
                    cs.Add(k.Value);
                }

                CommentAddresses = ca.ToArray();
                CommentStrings   = cs.ToArray();
            }
            SaveCubeData(grid);
        }
예제 #30
0
        public ICubeAddress GetCubeAddress(OlapControl grid)
        {
            var a = new ICubeAddress(grid);

            if (!string.IsNullOrEmpty(MeasureUniqueName))
            {
                a.Measure = grid.Measures.Find(MeasureUniqueName);
                if (a.Measure == null)
                {
                    a.Measure = grid.Measures.FindByDisplayName(MeasureDisplayName);
                }

                if (a.Measure != null)
                {
                    a.MeasureMode = a.Measure.ShowModes.Find(MeasureMode);
                }
            }

            if (Levels != null)
            {
                for (var i = 0; i < Levels.Length; i++)
                {
                    var    l = grid.Dimensions.FindLevel(Levels[i]);
                    Member m = null;
                    if (l != null)
                    {
                        m = l.FindMember(Members[i]);
                    }
                    if (m != null)
                    {
                        a.AddMember(m);
                    }
                }
            }

            a.Tag = Tag;

            return(a);
        }