Beispiel #1
0
 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);
        }
Beispiel #6
0
        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));
            }
        }
Beispiel #7
0
 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));
 }