Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit b045533f authored by Franz KOBER josef's avatar Franz KOBER josef
Browse files

begin with job edit function

parent cd0d0b00
Branches
Tags Release/v1.3_20170601
No related merge requests found
...@@ -64,9 +64,11 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -64,9 +64,11 @@ namespace VECTO3GUI.ViewModel.Impl
private ICommand _cancelCommand; private ICommand _cancelCommand;
private ICommand _saveCommand; private ICommand _saveCommand;
protected readonly SettingsModel Settings; protected SettingsModel Settings { get; private set; }
protected JobType JobType; protected JobType JobType;
private readonly bool _editJob;
private JobEntry _currentJobEntry;
#endregion #endregion
...@@ -111,7 +113,21 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -111,7 +113,21 @@ namespace VECTO3GUI.ViewModel.Impl
#endregion #endregion
public AbstractBusJobViewModel(IKernel kernel, JobType jobType) protected AbstractBusJobViewModel(IKernel kernel, JobType jobType)
{
Init(kernel, jobType);
_editJob = false;
}
protected AbstractBusJobViewModel(IKernel kernel, JobEntry jobEntry)
{
Init(kernel, jobEntry.JobType);
SetJobEntryData(jobEntry);
_currentJobEntry = jobEntry;
_editJob = true;
}
private void Init(IKernel kernel, JobType jobType)
{ {
SecondLabelText = $"Select {JobFileType.CompletedBusFile.GetLable()}"; SecondLabelText = $"Select {JobFileType.CompletedBusFile.GetLable()}";
Settings = new SettingsModel(); Settings = new SettingsModel();
...@@ -130,6 +146,14 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -130,6 +146,14 @@ namespace VECTO3GUI.ViewModel.Impl
_secondFileType = JobFileType.CompletedBusFile; _secondFileType = JobFileType.CompletedBusFile;
} }
private void SetJobEntryData(JobEntry jobEntry)
{
FirstFilePath = jobEntry.FirstFilePath;
SecondFilePath = jobEntry.FirstFilePath;
}
protected abstract void SetFirstFileLabel();
#region Commands #region Commands
public ICommand SelectFirstFileCommand public ICommand SelectFirstFileCommand
...@@ -164,7 +188,7 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -164,7 +188,7 @@ namespace VECTO3GUI.ViewModel.Impl
} }
private void DoCancelCommand(Window window) private void DoCancelCommand(Window window)
{ {
window?.Close(); window.Close();
} }
public ICommand SaveCommand public ICommand SaveCommand
...@@ -177,7 +201,11 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -177,7 +201,11 @@ namespace VECTO3GUI.ViewModel.Impl
} }
private void DoSaveCommand(Window window) private void DoSaveCommand(Window window)
{ {
window.DialogResult = true;
if (!_editJob)
SaveJob(window); SaveJob(window);
else
UpdateJobData();
} }
#endregion #endregion
...@@ -200,6 +228,12 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -200,6 +228,12 @@ namespace VECTO3GUI.ViewModel.Impl
} }
} }
private void UpdateJobData()
{
_currentJobEntry.FirstFilePath = FirstFilePath;
_currentJobEntry.SecondFilePath = SecondFilePath;
}
private string OpenFileSelector(JobFileType jobFileType, string textPropertyName) private string OpenFileSelector(JobFileType jobFileType, string textPropertyName)
......
...@@ -10,6 +10,16 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -10,6 +10,16 @@ namespace VECTO3GUI.ViewModel.Impl
public class CompletedBusJobViewModel: AbstractBusJobViewModel public class CompletedBusJobViewModel: AbstractBusJobViewModel
{ {
public CompletedBusJobViewModel(IKernel kernel, JobType jobType):base(kernel, jobType) public CompletedBusJobViewModel(IKernel kernel, JobType jobType):base(kernel, jobType)
{
SetFirstFileLabel();
}
public CompletedBusJobViewModel(IKernel kernel, JobEntry jobEntry) : base(kernel, jobEntry)
{
SetFirstFileLabel();
}
protected sealed override void SetFirstFileLabel()
{ {
FirstLabelText = $"Select {JobFileType.PIFBusFile.GetLable()}"; FirstLabelText = $"Select {JobFileType.PIFBusFile.GetLable()}";
} }
......
...@@ -73,7 +73,6 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -73,7 +73,6 @@ namespace VECTO3GUI.ViewModel.Impl
} }
} }
[JsonIgnore]
public bool Selected public bool Selected
{ {
get { return _selected; } get { return _selected; }
...@@ -90,7 +89,6 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -90,7 +89,6 @@ namespace VECTO3GUI.ViewModel.Impl
get { return _firstFilePath; } get { return _firstFilePath; }
set { SetProperty(ref _firstFilePath, value); } set { SetProperty(ref _firstFilePath, value); }
} }
public string SecondFilePath public string SecondFilePath
{ {
get { return _secondFilePath; } get { return _secondFilePath; }
......
...@@ -145,34 +145,27 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -145,34 +145,27 @@ namespace VECTO3GUI.ViewModel.Impl
get get
{ {
return _editJobCommand ?? return _editJobCommand ??
(_editJobCommand = new RelayCommand(DoEditJob, CanEditJob)); (_editJobCommand = new RelayCommand<JobEntry>(DoEditJob, CanEditJob));
} }
} }
private void DoEditJob()
{
var entry = SelectedJobEntry;
try
{
var jobEditView = ReadJob(entry.FirstFilePath); //Kernel.Get<IJobEditViewModel>();
if (jobEditView == null)
return;
var window = OutputWindowHelper.CreateOutputWindow(Kernel, jobEditView); private bool CanEditJob(JobEntry jobEntry)
window.Show();
}
catch (Exception e)
{ {
MessageBox.Show( return jobEntry != null;
"Failed to read selected job: " + Environment.NewLine + Environment.NewLine + e.Message, "Failed reading Job",
MessageBoxButton.OK);
}
} }
private bool CanEditJob()
private void DoEditJob(JobEntry jobEntry)
{ {
return SelectedJobEntry != null; var viewModel = GetBusJobViewModel(jobEntry.JobType, jobEntry);
var window = CreateBusJobOutputWindow(viewModel, jobEntry.JobType);
if(window.ShowDialog() != true)
ResetBusJobEntries();
else
_jobListModel.SaveJobList(_jobs);
} }
public ICommand CreateNewJob public ICommand CreateNewJob
{ {
get get
...@@ -244,6 +237,7 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -244,6 +237,7 @@ namespace VECTO3GUI.ViewModel.Impl
var window = OutputWindowHelper.CreateOutputWindow(Kernel, viewModel, "Settings", 440, 200, var window = OutputWindowHelper.CreateOutputWindow(Kernel, viewModel, "Settings", 440, 200,
ResizeMode.NoResize); ResizeMode.NoResize);
window.ShowDialog(); window.ShowDialog();
} }
public ICommand ExitMainCommand public ICommand ExitMainCommand
...@@ -267,24 +261,11 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -267,24 +261,11 @@ namespace VECTO3GUI.ViewModel.Impl
(_addBusJobCommand = new RelayCommand<JobType>(DoAddBusJobCommand)); (_addBusJobCommand = new RelayCommand<JobType>(DoAddBusJobCommand));
} }
} }
private void DoAddBusJobCommand(JobType jobtype) private void DoAddBusJobCommand(JobType jobType)
{ {
object viewModel = null; var viewModel = GetBusJobViewModel(jobType);
var window = CreateBusJobOutputWindow(viewModel, jobType);
switch (jobtype) { if(window.ShowDialog() == true)
case JobType.SingleBusJob:
viewModel = new SingleBusJobViewModel(Kernel, jobtype);
break;
case JobType.CompletedBusJob:
viewModel = new CompletedBusJobViewModel(Kernel, jobtype);
break;
}
var window = OutputWindowHelper.CreateOutputWindow(Kernel, viewModel, $"Create {jobtype.GetLabel()}",
460, 200, ResizeMode.NoResize);
window.ShowDialog();
AddBusJobEntry(((IBusJobViewModel)viewModel)?.SavedJobEntry); AddBusJobEntry(((IBusJobViewModel)viewModel)?.SavedJobEntry);
} }
...@@ -298,64 +279,99 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -298,64 +279,99 @@ namespace VECTO3GUI.ViewModel.Impl
#endregion #endregion
private void AddBusJobEntry(JobEntry jobEntry)
{
if (jobEntry == null)
return;
_jobs.Add(jobEntry);
}
private IJobEditViewModel ReadJob(string jobFile)
{
if (jobFile == null)
return null;
var ext = Path.GetExtension(jobFile); private object GetBusJobViewModel(JobType jobType, JobEntry jobEntry = null)
if (ext == Constants.FileExtensions.VectoXMLDeclarationFile)
{ {
var currentJobType = jobEntry?.JobType ?? jobType;
var localName = GetLocalName(jobFile); object viewModel = null;
var xmlInputReader = Kernel.Get<IXMLInputDataReader>();
using (var reader = XmlReader.Create(jobFile))
{
if (localName == XMLNames.VectoPrimaryVehicleReport)
return CreatePrimaryBusVehicleViewModel(xmlInputReader.Create(reader));
if (localName == XMLNames.VectoInputDeclaration) switch (currentJobType)
{ {
var readerResult = xmlInputReader.Create(reader) as IDeclarationInputDataProvider; case JobType.SingleBusJob:
if(readerResult?.JobInputData.Vehicle is XMLDeclarationCompletedBusDataProviderV26) viewModel = jobEntry == null
return CreateCompleteBusVehicleViewModel(readerResult); ? new SingleBusJobViewModel(Kernel, jobType)
} : new SingleBusJobViewModel(Kernel, jobEntry);
} break;
case JobType.CompletedBusJob:
viewModel = jobEntry == null
? new CompletedBusJobViewModel(Kernel, jobType)
: new CompletedBusJobViewModel(Kernel, jobEntry);
break;
} }
return null; return viewModel;
} }
private string GetLocalName(string jobFilePath) private OutputWindow CreateBusJobOutputWindow(object viewModel, JobType jobType)
{ {
var doc = XDocument.Load(jobFilePath); return OutputWindowHelper.CreateOutputWindow(Kernel, viewModel, $"Create {jobType.GetLabel()}",
return doc.Root?.Name.LocalName; 460, 200, ResizeMode.NoResize);
} }
private void AddBusJobEntry(JobEntry jobEntry)
private IJobEditViewModel CreateCompleteBusVehicleViewModel(IDeclarationInputDataProvider dataProvider)
{ {
_messages.Add(new MessageEntry { if (jobEntry == null)
Message = "Edit File" return;
}); _jobs.Add(jobEntry);
return dataProvider == null ? null : new CompleteVehicleBusJobViewModel(Kernel, dataProvider);
} }
private void ResetBusJobEntries()
private IJobEditViewModel CreatePrimaryBusVehicleViewModel(IInputDataProvider inputData)
{ {
var dataProvider = inputData as IPrimaryVehicleInformationInputDataProvider; SetJobEntries();
return dataProvider == null ? null : new PrimaryVehicleBusJobViewModel(Kernel, dataProvider);
} }
//private IJobEditViewModel ReadJob(string jobFile)
//{
// if (jobFile == null)
// return null;
// var ext = Path.GetExtension(jobFile);
// if (ext == Constants.FileExtensions.VectoXMLDeclarationFile)
// {
// var localName = GetLocalName(jobFile);
// var xmlInputReader = Kernel.Get<IXMLInputDataReader>();
// using (var reader = XmlReader.Create(jobFile))
// {
// if (localName == XMLNames.VectoPrimaryVehicleReport)
// return CreatePrimaryBusVehicleViewModel(xmlInputReader.Create(reader));
// if (localName == XMLNames.VectoInputDeclaration)
// {
// var readerResult = xmlInputReader.Create(reader) as IDeclarationInputDataProvider;
// if(readerResult?.JobInputData.Vehicle is XMLDeclarationCompletedBusDataProviderV26)
// return CreateCompleteBusVehicleViewModel(readerResult);
// }
// }
// }
// return null;
//}
//private string GetLocalName(string jobFilePath)
//{
// var doc = XDocument.Load(jobFilePath);
// return doc.Root?.Name.LocalName;
//}
//private IJobEditViewModel CreateCompleteBusVehicleViewModel(IDeclarationInputDataProvider dataProvider)
//{
// _messages.Add(new MessageEntry {
// Message = "Edit File"
// });
// return dataProvider == null ? null : new CompleteVehicleBusJobViewModel(Kernel, dataProvider);
//}
//private IJobEditViewModel CreatePrimaryBusVehicleViewModel(IInputDataProvider inputData)
//{
// var dataProvider = inputData as IPrimaryVehicleInformationInputDataProvider;
// return dataProvider == null ? null : new PrimaryVehicleBusJobViewModel(Kernel, dataProvider);
//}
} }
......
...@@ -10,6 +10,16 @@ namespace VECTO3GUI.ViewModel.Impl ...@@ -10,6 +10,16 @@ namespace VECTO3GUI.ViewModel.Impl
public class SingleBusJobViewModel : AbstractBusJobViewModel public class SingleBusJobViewModel : AbstractBusJobViewModel
{ {
public SingleBusJobViewModel(IKernel kernel, JobType jobType): base(kernel, jobType) public SingleBusJobViewModel(IKernel kernel, JobType jobType): base(kernel, jobType)
{
SetFirstFileLabel();
}
public SingleBusJobViewModel(IKernel kernel, JobEntry jobEntry) : base(kernel, jobEntry)
{
SetFirstFileLabel();
}
protected sealed override void SetFirstFileLabel()
{ {
FirstLabelText = $"Select {JobFileType.PrimaryBusFile.GetLable()}"; FirstLabelText = $"Select {JobFileType.PrimaryBusFile.GetLable()}";
} }
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<Grid Grid.Row="1" Grid.Column="1" Margin="10"> <Grid Grid.Row="1" Grid.Column="1" Margin="10">
<DataGrid ItemsSource="{Binding Jobs}" <DataGrid x:Name="JobList" ItemsSource="{Binding Jobs}"
SelectedValue="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}" SelectedValue="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
Style="{DynamicResource AzureDataGrid}" BorderThickness="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow" Style="{DynamicResource AzureDataGrid}" BorderThickness="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow"
IsReadOnly="False" HeadersVisibility="All" RowHeaderWidth="5" > IsReadOnly="False" HeadersVisibility="All" RowHeaderWidth="5" >
...@@ -84,10 +84,15 @@ ...@@ -84,10 +84,15 @@
<Grid Grid.Row="1" Grid.Column="2" Margin="0,0,10,0"> <Grid Grid.Row="1" Grid.Column="2" Margin="0,0,10,0">
<StackPanel Orientation="Vertical" Margin="0,30,0,0"> <StackPanel Orientation="Vertical" Margin="0,30,0,0">
<Button Margin="0,5,0,0" Command="{Binding AddBusJob}" Content="Add Bus Job"/> <Button Margin="0,5,0,0" Content="Edit Job"
Command="{Binding EditJob}"
CommandParameter="{Binding ElementName=JobList, Path=SelectedItem}"/>
<!--<Button Margin="0,5,0,0" Command="{Binding AddBusJob}" Content="Add Bus Job"/>
<Button Margin="0,5,0,0" Command="{Binding EditJob}" Content="Edit File" /> <Button Margin="0,5,0,0" Command="{Binding EditJob}" Content="Edit File" />
<Button Margin="0,5,0,0" Command="{Binding CreateNewJob}" Content="New File" /> <Button Margin="0,5,0,0" Command="{Binding CreateNewJob}" Content="New File" />
<Button Margin="0,5,0,0" Command="{Binding RemoveJob}" Content="Remove File" /> <Button Margin="0,5,0,0" Command="{Binding RemoveJob}" Content="Remove File" />-->
</StackPanel> </StackPanel>
</Grid> </Grid>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment