// 如果内存中有数据,就从内存中取,否则尝试加载一个,并放入容器 public void Retrieve(IDType id, Action <T> cb) { DataItemWrapper w = Get(id); if (!w != null) { if (cb != null) { cb(!w); } } else { data.Remove(id); Load(id, (T d) => { w = Get(id); if (d != null && !w == null) { w = new DataItemWrapper(d); data[d.ID] = w; } if (cb != null) { cb(!w); } }); } }
public void ThreeRowsSimple() { var definitionC = new NodeDefinition { Name = "C", DependsOn = new List <string> { "B" } }; var definitionB = new NodeDefinition { Name = "B", DependsOn = new List <string> { "A" } }; var definitionA = new NodeDefinition { Name = "A" }; var counterWrapper = new TestCounterWrapper(); var nodeRegistry = new NodeRegistry <string>(); nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p => { if (p.Number < 3) { p.Item = $"AAA{counterWrapper.Counter++}"; } else { p.Stop(); } }), definitionA)); nodeRegistry.Register("B", new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "BBB"; }), definitionB)); nodeRegistry.Register("C", new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC)); var provider = new NodeDefinitionProvider("C"); provider.Register("C", definitionC); provider.Register("B", definitionB); provider.Register("A", definitionA); var runner = new DataNodeRunner <string>(provider, nodeRegistry); var wrapper = new DataItemWrapper <string>(); runner.Step(wrapper); Assert.AreEqual("AAA0BBBCCC", wrapper.Item); runner.Step(wrapper); Assert.AreEqual("AAA1BBBCCC", wrapper.Item); runner.Step(wrapper); Assert.AreEqual("AAA2BBBCCC", wrapper.Item); }
internal BeforeEventRenderEventArgs(Event e) { this.Id = e.Id; this.Start = e.Start; this.End = e.End; this.Text = e.Text; DataItem = new DataItemWrapper(e.Source); }
internal ConflictEvent(EventPart e) { this.Start = e.Event.Start; this.End = e.Event.End; this.Value = e.Event.Id; this.Position = e.EvColumn.Number; this.DataItem = new DataItemWrapper(e.Event.Source); }
internal BeforeEventRenderEventArgs(Event e) { this.Value = e.PK; this.Start = e.Start; this.End = e.End; this.Text = e.Name; this.ColumnId = e.Resource; DataItem = new DataItemWrapper(e.Source); }
internal BeforeEventRenderArgs(Event e) { Id = e.Id; Text = e.Text; Start = e.Start; End = e.End; DataItem = new DataItemWrapper(e.Source); }
internal BeforeEventRenderEventArgs(Event e) { this.Value = e.Id; this.Start = e.Start; this.Arrival = e.Arrival; this.End = e.End; this.Departure = e.Departure; this.Text = e.Text; this.ResourceId = e.Resource; DataItem = new DataItemWrapper(e.Source); }
// 新增数据 public void AddNew(T it) { if (data.ContainsKey(it.ID)) { throw new Exception(it.ID + " already exists in data container"); } DataItemWrapper w = new DataItemWrapper(it); w.Fix(); data[it.ID] = w; it.Status.NewAdd = true; it.Status.Modified = false; }
public void ABBCSimpleWhenANodeShouldntBeCalledTwice() { var definitionC = new NodeDefinition { Name = "C", DependsOn = new List <string> { "B", "A" } }; var definitionB = new NodeDefinition { Name = "B", DependsOn = new List <string> { "A" } }; var definitionA = new NodeDefinition { Name = "A" }; var nodeRegistry = new NodeRegistry <string>(); nodeRegistry.Register("A", new BaseNode <string>(new TestActionProcess(p => { p.Item = "AAA"; }), definitionA)); nodeRegistry.Register("B", new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "BBB"; }), definitionB)); nodeRegistry.Register("C", new BaseNode <string>(new TestActionProcess(p => { p.Item = p.Item += "CCC"; }), definitionC)); var provider = new NodeDefinitionProvider("C"); provider.Register("C", definitionC); provider.Register("B", definitionB); provider.Register("A", definitionA); var runner = new DataNodeRunner <string>(provider, nodeRegistry); var wrapper = new DataItemWrapper <string>(); runner.Step(wrapper); Assert.AreEqual("AAABBBCCC", wrapper.Item); }
protected void DayPilotScheduler1_BeforeResHeaderRender(object sender, BeforeHeaderRenderEventArgs e) { DataItemWrapper task = e.DataItem; string name = (string)task["AssignmentNote"]; int id = Convert.ToInt32(task["AssignmentId"]); string resource = Convert.ToString(task["ResourceName"]); string status = Convert.ToString(task["AssignmentStatus"]); TimeSpan duration = TimeSpan.FromMinutes(Convert.ToInt32(task["AssignmentDuration"])); string durationString = duration.ToHourMinuteString(); string spentString = Binder.Get(task, "AssignmentDurationReal").IsNotNull ? Binder.Get(task, "AssignmentDurationReal").TimeSpanFromMinutes.ToHourMinuteString() : String.Empty; e.InnerHTML = TaskLink(name, id, status); e.Columns[0].InnerHTML = "<div style='text-align:right'>" + durationString + "</div>"; e.Columns[1].InnerHTML = "<div style='text-align:right'>" + spentString + "</div>"; e.Columns[2].InnerHTML = resource; }