コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="d"></param>
        /// <param name="changeCount"></param>
        private ModelDashboards UpdateDashboard(ModelDashboard d, int changeCount)
        {
            var copies = new ModelDashboards();

            copies.Add(d.Duplicate());

            for (int i = 0; i < changeCount; ++i)
            {
                TestFactory.Update(d, false);

                //d.Data = TestFactory.GetRandomString( 100 );

                d.Bag.Message = $"change message #{i + 1}";
                d.Bag.Version = i + 1;

                copies.Add(d.Duplicate());

                Assert.False(GetRepo <DashboardRepository>()
                             .ForActiveOrg(d)
                             .Update(d)
                             .HasError);
            }

            return(copies);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="f"></param>
        public void Update(DataContext dc, ModelDashboard d)
        {
            Title    = d.Title;
            FolderId = d.FolderId;
            Data     = d.Data;

            Tags = new List <EntityTag>();

            if (null != d.Tags && d.Tags.Count() > 0)
            {
                Tags = d
                       .Tags
                       .Select(x => new EntityTag()
                {
                    Term = x
                })
                       .ToList();
            }

            if (!string.IsNullOrEmpty(d.Uid))
            {
                Uid = d.Uid;
            }

            Versions.Add(new DashboardVersion(d));

            DashboardAnalyzer.UpdateAlerts(dc, d, this);
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static ModelDashboardPermissions GetDefault(ModelDashboard db)
        {
            var list = new ModelDashboardPermissions();

            var editor = new ModelDashboardPermission()
            {
                Role       = Security.Role.Editor,
                Permission = Security.Permission.Edit,
                Dashboard  = db,
            };

            var viewer = new ModelDashboardPermission()
            {
                Role       = Security.Role.Viewer,
                Permission = Security.Permission.View,
                Dashboard  = db,
            };

            editor.Bag.Created     = editor.Bag.Updated =
                viewer.Bag.Created = viewer.Bag.Updated = DateTime.Now;

            list.Add(editor);
            list.Add(viewer);

            return(list);
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        public static EntityDashboard   ToEntity(this ModelDashboard d, DataContext dc)
        {
            var e = new EntityDashboard()
            {
                Id       = d.Id,
                OrgId    = d.OrgId,
                Title    = d.Title,
                Uid      = d.Uid,
                Data     = d.Data,
                FolderId = d.FolderId
            };

            if (null != d.Tags)
            {
                e.Tags = d
                         .Tags
                         .Select(x => new DashboardTag()
                {
                    Term = x
                })
                         .ToList();
            }

            if (string.IsNullOrEmpty(e.Uid))
            {
                e.Uid = TestFactory.GetUid();
            }

            DashboardAnalyzer.UpdateAlerts(dc, d, e);

            return(e);
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        public ModelDashboard ToModel()
        {
            var md = new ModelDashboard()
            {
                OrgId    = OrgId,
                Id       = Id,
                Title    = Title,
                Uid      = Uid,
                HasAcl   = HasAcl,
                Data     = Data,
                FolderId = FolderId,
                Tags     = Tags
                           .Select(x => x.Term)
                           .ToList(),
                Stars = Stars
                        .Select(x => x.UserId)
                        .ToList()
            };

            md.Bag.FolderUid   = Folder?.Uid;
            md.Bag.FolderTitle = Folder?.Title;
            md.Bag.FolderUrl   = Folder?.ToModel().Url;

            return(md);
        }
コード例 #6
0
        /// <summary>
        ///
        /// </summary>
        public static void UpdateAlerts(DataContext dc,
                                        ModelDashboard model, EntityDashboard entity)
        {
            if (null == model.Data)
            {
                return;
            }

            var an    = new DashboardAnalyzer(dc, model);
            var rules = an.ExtractAlerts();

            var alerts = new List <Alert>();

            foreach (var r in rules)
            {
                var alert = entity
                            .Alerts?
                            .FirstOrDefault(x => x.PanelId == r.PanelId);

                if (null == alert)
                {
                    alert = r.ToEntity();
                }
                else
                {
                    alert.Update(r);
                }

                alert.OrgId = dc.ActiveOrgId;
                alerts.Add(alert);
            }

            entity.Alerts = alerts;
        }
コード例 #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="d"></param>
 /// <returns></returns>
 private ModelVersions GetVersions(ModelDashboard d)
 {
     return(GetRepo <DashboardRepository>()
            .ForActiveOrg(d)
            .GetVersions(d.Id)
            .Value
            .ToList());
 }
コード例 #8
0
        public void Should_CreateDashboard_WhenEmptyInput()
        {
            var model = new ModelDashboard();
            var res   = _repo.Create(model);

            Assert.False(res.HasError);

            model.Uid = res.Value.Uid;

            Assert.True(res.Value.Equals(model));
        }
コード例 #9
0
        /// <summary>
        ///
        /// </summary>
        public static AlertRule ExtractAlert(DataContext dc, ModelDashboard db, int panelId)
        {
            var rule = ExtractAlerts(dc, db)
                       .FirstOrDefault(x => x.PanelId == panelId);

            if (null == rule)
            {
                AlertValidationException.ThrowBadPanel();
            }

            return(rule);
        }
コード例 #10
0
        /// <summary>
        ///
        /// </summary>
        public DashboardVersion(ModelDashboard d)
        {
            DashboardId = d.Id;

            var version = ExpandoHelper.GetProperty <int>(d, "Version");
            var userId  = ExpandoHelper.GetProperty <int>(d, "UserId");

            var message = ExpandoHelper.HasProperty(d, "Message") ?
                          d.Bag.Message : string.Empty;

            Version       = version + 1;
            ParentVersion = version;
            RestoredFrom  = 0;

            Message = (string.IsNullOrEmpty(d.Uid)) ? "Initial save" : message;
            Data    = d.Data;

            UserId = userId;
        }
コード例 #11
0
            /// <summary>
            ///
            /// </summary>
            /// <returns></returns>
            public EvaluationContext ToContext(DataContext dc)
            {
                var model = new ModelDashboard()
                {
                    Id    = Dashboard.Id.HasValue ? Dashboard.Id.Value : 0,
                    Title = Dashboard.Title,
                    Uid   = Dashboard.Uid,
                    Tags  = Dashboard.Tags,
                    Data  = Dashboard.Data?.ToString(),
                    OrgId = dc.ActiveOrgId
                };

                return(new EvaluationContext()
                {
                    IsTestRun = true,
                    IsDebug = true,

                    Dashboard = model,
                    PanelId = PanelId,
                    DataContext = dc
                });
            }
コード例 #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="d"></param>
 /// <returns></returns>
 public static object GetDataAsJsonElement(this ModelDashboard d)
 {
     return(GetDataAsJsonElement(d.Data));
 }
コード例 #13
0
 /// <summary>
 ///
 /// </summary>
 public static AlertRules ExtractAlerts(DataContext dc, ModelDashboard db)
 => new DashboardAnalyzer(dc, db).ExtractAlerts();
コード例 #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="dc"></param>
 /// <param name="db"></param>
 public DashboardAnalyzer(DataContext dc, ModelDashboard db)
 {
     Dashboard   = db;
     DataContext = dc;
 }