// This function looks for the master measure most similar to MeasureName
        public QSMasterItem GetMasterMeasure(string MeasureName)
        {
            // Look for a measure in the app master measures, and return the name used in the app
            QSMasterItem meas = MasterMeasures.Find(m => m.Name.ToLower().Trim() == MeasureName.ToLower().Trim());

            if (meas == null)
            {
                // If not an exact match, try to find a master measure that contains the measure searched
                meas = MasterMeasures.Find(m => m.Name.ToLower().Trim().Contains(MeasureName.ToLower().Trim()));
            }
            if (meas == null)
            {
                // Search based on similarity, using the Levenshteing algorithm, from the NinjaNye.SearchExtensions library
                var result = MasterMeasures.LevenshteinDistanceOf(m => m.Name)
                             .ComparedTo(MeasureName)
                             .OrderBy(m => m.Distance);
                if (result.Count() > 0)
                {
                    meas = (QSMasterItem)result.First().Item;
                }
            }

            if (meas != null)
            {
                // Evaluate and return the master measure expression
                LastMeasure = meas;
                return(meas);
            }
            else
            {
                return(null);
            }
        }
Beispiel #2
0
        public QSMasterItem GetMasterDimensions(string DimensionName)
        {
            // Look for a dimension in the app master dimensions, and return the name used in the app
            QSMasterItem dim = MasterDimensions.Find(m => m.Name.ToLower().Trim() == DimensionName.ToLower().Trim());

            if (dim == null)
            {
                // If not an exact match, try to find a master dimension that contains the dimension searched
                dim = MasterDimensions.Find(m => m.Name.ToLower().Trim().Contains(DimensionName.ToLower().Trim()));
            }
            if (dim == null)
            {
                // Search based on similarity, using the Levenshteing algorithm, from the NinjaNye.SearchExtensions library
                var result = MasterDimensions.LevenshteinDistanceOf(m => m.Name)
                             .ComparedTo(DimensionName)
                             .OrderBy(m => m.Distance);
                if (result.Count() > 0)
                {
                    dim = (QSMasterItem)result.First().Item;
                }
            }

            if (dim != null)
            {
                // Evaluate and return the master dimension expression
                LastDimension = dim;
                return(dim);
            }
            else
            {
                return(null);
            }
        }
Beispiel #3
0
        public string PrepareMasterVisualizationDirectLink(QSMasterItem vis)
        {
            //single/?appid=62905416-3e48-4267-aafe-797014fe2675&obj=dcksUYY&opt=nointeraction
            string url = qsSingleServer + "/single/?appid=" + qsSingleApp + "&obj=" + vis.Id + "&opt=nointeraction";

            return(url);
        }
        public string GetMeasureFormattedValue(string MeasureName, ref string FoundMeasure)
        {
            // Same as GetExpressionFormattedValue(), but for a specific Master Measure
            QSMasterItem Measure = GetMasterMeasure(MeasureName);

            if (Measure == null)
            {
                return(MeasureName + " has not been found in Measures");
            }
            else
            {
                FoundMeasure = Measure.Name;
                return(Measure.FormattedExpression); // Get the total value directly from the Measure object
            }
        }
        private void QSReadMasterItems()
        {
            // Get all the Master Visualizations
            MasterVisualizations.Clear();
            try
            {
                var allMasterObjects = qsApp.GetMasterObjectList().Items?.Select(item => qsApp.GetObject <MasterObject>(item.Info.Id));

                foreach (IMasterObject mo in allMasterObjects)
                {
                    QSMasterItem mi         = new QSMasterItem();
                    var          properties = mo.Properties;
                    mi.Id   = properties.Info.Id;
                    mi.Name = properties.MetaDef.Title;
                    mi.Tags = mo.MetaAttributes.Tags;
                    MasterVisualizations.Add(mi);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("QSEasy Error in QSReadMasterItems: {0} Exception caught.", e);
            }

            // Get all the Master Measures
            MasterMeasures.Clear();
            try
            {
                // Get all the Master Measures
                var allMeasures = qsApp.GetMeasureList().Items;

                foreach (IMeasureObjectViewListContainer mm in allMeasures)
                {
                    QSMasterItem         mi = new QSMasterItem();
                    INxLibraryMeasureDef md = qsApp.GetMeasure(mm.Info.Id).NxLibraryMeasureDef;
                    mi.Id         = mm.Info.Id;
                    mi.Name       = md.Label;
                    mi.Expression = md.Def;
                    // In FormattedExpression I get the total value already calculated
                    mi.FormattedExpression = GetExpressionFormattedValue(Expression: mi.Expression, Label: mi.Name);
                    MasterMeasures.Add(mi);
                }
                LastMeasure = MasterMeasures.Count > 0 ? MasterMeasures.First() : null;
            }
            catch (Exception e)
            {
                Console.WriteLine("QSEasy Error in QSReadMasterItems: {0} Exception caught.", e);
            }

            // Get all the Master Dimensions
            MasterDimensions.Clear();
            try
            {
                // Get all the Master Dimensions
                var allDimensions = qsApp.GetDimensionList().Items;

                foreach (DimensionObjectViewListContainer md in allDimensions)
                {
                    if (md.Data.Grouping == NxGrpType.GRP_NX_NONE)  // This is to avoid drill-down dimensions, I only use single dimensions
                    {
                        QSMasterItem mi = new QSMasterItem();

                        INxLibraryDimensionDef dd = qsApp.GetDimension(md.Info.Id).NxLibraryDimensionDef;
                        mi.Id         = md.Info.Id;
                        mi.Name       = md.Data.Title;
                        mi.Expression = dd.FieldDefs.First();
                        MasterDimensions.Add(mi);
                    }
                }
                LastDimension = MasterDimensions.Count > 0 ? MasterDimensions.First() : null;
            }
            catch (Exception e)
            {
                Console.WriteLine("QSEasy Error in QSReadMasterItems: {0} Exception caught.", e);
            }
        }