public NodeViewModel(BatProject project, BatNode batNode, NavigationService navigationService, ProjectViewModel parentViewModel) { _project = project; _batNode = batNode; _navigationService = navigationService; EditNodeCommand = new AsyncCommand(EditNode, parentViewModel); }
private async Task AddLog() { FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.List; openPicker.SuggestedStartLocation = PickerLocationId.Desktop; openPicker.FileTypeFilter.Add(".dat"); IReadOnlyList <StorageFile> files = ImmutableArray <StorageFile> .Empty; await DispatcherHelper.ExecuteOnUIThreadAsync(async() => { files = await openPicker.PickMultipleFilesAsync(); }); if (files.Count > 0) { Busy.MaxProgressValue = files.Count; Busy.ProgressValue = 0; foreach (StorageFile file in files) { Busy.Message = $"Importiere Datei {file.Name}"; BatNode node = await _batProjectManager.AddNode(_project, file); await DispatcherHelper.ExecuteOnUIThreadAsync(() => { _logs.Add(new NodeViewModel(_project, node, _navigationService, this)); }); Busy.ProgressValue++; } } }
public async Task AnalyzeNode(BatProject project, BatNode node) { StorageFolder projectFolder = await GetProjectFolder(project); if (node.NodeData == null) { await LoadNodeData(project, node); } StorageFile rawDataFile = await projectFolder.GetFileAsync(Path.Combine(node.FolderName, RawFileName)); await AnalyzeNode(project, node, rawDataFile); }
public async Task LoadNodeData(BatProject project, BatNode node) { if (node.NodeData != null) { return; } StorageFolder projectFolder = await GetProjectFolder(project); StorageFile nodeFile = await projectFolder.GetFileAsync(Path.Combine(node.FolderName, NodeFileName)); node.NodeData = await DeserializeJson <BatNodeData>(nodeFile); }
public async Task <BatNode> AddNode(BatProject project, IStorageFile rawDataFile) { BatNode newNode = new BatNode(); newNode.NodeData = new BatNodeData(); project.AddNode(newNode); StorageFolder projectFolder = await GetProjectFolder(project); StorageFolder nodeFolder = await projectFolder.CreateFolderAsync(newNode.FolderName, CreationCollisionOption.FailIfExists); await rawDataFile.CopyAsync(nodeFolder, RawFileName, NameCollisionOption.ReplaceExisting); await AnalyzeNode(project, newNode, rawDataFile); StorageFile nodeFile = await nodeFolder.CreateFileAsync(NodeFileName, CreationCollisionOption.ReplaceExisting); await SerializeJson(newNode.NodeData, nodeFile); await UpdateProjectFile(project); return(newNode); }
public void Analyze(BatProject project, BatNode node, RawNodeData rawNodeData) { BatNodeData nodeData = node.NodeData; node.IsDirty = true; node.NodeId = rawNodeData.NodeId; node.LogStart = rawNodeData.LogStart; nodeData.Calls.Clear(); List <RawCall> rawCallsToMerge = new List <RawCall>(); BatCall currentCallData = new BatCall(); nodeData.Calls.Add(currentCallData); uint endCallTime = 0; foreach (RawCall call in rawNodeData.Calls) { if (endCallTime + 50 >= call.StartTimeMs || rawCallsToMerge.Count == 0) { rawCallsToMerge.Add(call); } else { nodeData.Calls.Add(Merge(rawCallsToMerge)); rawCallsToMerge.Clear(); } endCallTime = call.EndTimeMs; } if (rawCallsToMerge.Count > 0) { nodeData.Calls.Add(Merge(rawCallsToMerge)); } }
public TimeLogModel(BatNode node, int binCount) { _node = node; //_timeCallBins = new TimeCallBinCollection(binCount, node.LogStart, c => true); //_timeCallBins.LoadBins(node.Calls); }
private async Task AnalyzeNode(BatProject project, BatNode node, IStorageFile rawDataFile) { RawNodeData rawData = await _batNodeLogReader.Load(rawDataFile); _logAnalyzer.Analyze(project, node, rawData); }
private async Task SaveNodeData(BatNode node, IStorageFolder projectFolder) { StorageFile nodeFile = await projectFolder.CreateFileAsync(Path.Combine(node.FolderName, NodeFileName), CreationCollisionOption.ReplaceExisting); await SerializeJson(node.NodeData, nodeFile); }
private NodeDetailViewModel(BatProject project, BatNode node) { _project = project; Node = node; }
public async Task ShowNodeDetails(BatNode node, BatProject project) { await NavigateTo <NodeDetailView>(new Tuple <BatProject, BatNode>(project, node)); }