/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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; }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <returns></returns> private ModelVersions GetVersions(ModelDashboard d) { return(GetRepo <DashboardRepository>() .ForActiveOrg(d) .GetVersions(d.Id) .Value .ToList()); }
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)); }
/// <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); }
/// <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; }
/// <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 }); }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <returns></returns> public static object GetDataAsJsonElement(this ModelDashboard d) { return(GetDataAsJsonElement(d.Data)); }
/// <summary> /// /// </summary> public static AlertRules ExtractAlerts(DataContext dc, ModelDashboard db) => new DashboardAnalyzer(dc, db).ExtractAlerts();
/// <summary> /// /// </summary> /// <param name="dc"></param> /// <param name="db"></param> public DashboardAnalyzer(DataContext dc, ModelDashboard db) { Dashboard = db; DataContext = dc; }