2021-07-18PX Added storage for CSV selected export fields, not fully working yet

This commit is contained in:
phantomix 2021-07-18 16:21:42 +02:00
parent 342511f03a
commit a1c4512f2c
4 changed files with 60 additions and 26 deletions

View File

@ -30,6 +30,8 @@ namespace dezentrale.model
[XmlElement("AttachmentsColumn")]public List<ConfigLVColumn> AttachmentsColumns{ get; set; } = new List<ConfigLVColumn>();
[XmlElement("SelectFieldsColumn")]public List<ConfigLVColumn> SelectFieldsColumns{ get; set; } = new List<ConfigLVColumn>();
public List<string> MemberCsvExportFields { get; set; } = new List<string>();
[XmlElement] public List<KeyValue> MoneyTransferRegEx { get; set; } = new List<KeyValue>(); //This doesn't belong here! Move to new file within db-data!
[XmlElement] public DateTime LastCronjobRun { get; set; } = DateTime.Now; //This doesn't belong here! Move to new file within db-data!

View File

@ -224,6 +224,14 @@ namespace dezentrale.view
return ret;
}
public bool ItemSelection(T entry, bool selected)
{
foreach (ListViewItem lvi in this.Items)
if (lvi.Tag.Equals(entry))
lvi.Selected = selected;
return false;
}
public MenuItem AddMenuItem(string text, EventHandler handler = null, MenuItem parent = null, bool enabled = true)
{
MenuItem mi = new MenuItem() { Text = text };

View File

@ -8,13 +8,15 @@ namespace dezentrale.view
{
public class frmExportCsv<T> : FormWithActionButtons
{
private List<T> list;
private LvSelectFields lv;
private List<T> entities;
private LvSelectFields lv;
public List<string> SelectedProperties { get; set; } = new List<string>();
private bool ExportCsv(List<string> properties)
private bool ExportCsv()
{
SaveFileDialog sfd = new SaveFileDialog(){
FileName = $"{typeof(T)}_{list.Count}_items.csv",
FileName = $"{typeof(T)}_{entities.Count}_items.csv",
Filter = "Comma-Separated-Value files (*.csv)|*.csv"
};
DialogResult dr = sfd.ShowDialog();
@ -28,12 +30,12 @@ namespace dezentrale.view
};
//Build headline
csv.FileContents.Add(properties);
csv.FileContents.Add(SelectedProperties);
foreach (T t in list)
foreach (T t in entities)
{
List<string> t_csv = new List<string>();
foreach (string p in properties)
foreach (string p in SelectedProperties)
{
//Get propertyinfo from T
PropertyInfo pi = typeof(T).GetProperty(p);
@ -58,9 +60,11 @@ namespace dezentrale.view
}
return true;
}
private void BuildGui()
private void FormLoad(object sender, System.EventArgs e)
{
this.Text = $"Export {list.Count} of \"{typeof(T).ToString()}\"";
this.Text = $"Export {entities.Count} entities of type \"{typeof(T).ToString()}\"";
this.Controls.Add(lv = new LvSelectFields()
{
@ -75,27 +79,38 @@ namespace dezentrale.view
{
lv.AddEntry(p.Name);
}
List<string> failToSelect = new List<string>();
foreach(string s in SelectedProperties)
{
if (!lv.ItemSelection(s, true)) {
failToSelect.Add(s);
}
}
foreach (string s in failToSelect) {
SelectedProperties.Remove(s);
}
this.AddButton("All fields", (sender, e) => {
List<string> all = lv.GetAllItems();
if (ExportCsv(all)) this.Close();
this.AddButton("All fields", (se, ev) => {
SelectedProperties = lv.GetAllItems();
if (ExportCsv()) this.Close();
});
this.AddButton("Selected fields", (sender, e) => {
List<string> selected = lv.GetSelectedItems();
if (ExportCsv(selected)) this.Close();
this.AddButton("Selected fields", (se, ev) => {
SelectedProperties = lv.GetSelectedItems();
if (ExportCsv()) this.Close();
});
this.AddButton("Cancel", (sender, e) => { this.Close(); });
this.AddButton("Cancel", (se, ev) => { this.Close(); });
}
public frmExportCsv(T t)
{
list = new List<T> { t };
BuildGui();
entities = new List<T> { t };
this.Load += FormLoad;
}
public frmExportCsv(List<T> l)
{
list = l;
BuildGui();
entities = l;
this.Load += FormLoad;
}
}
}

View File

@ -397,15 +397,24 @@ namespace dezentrale.view
{
MessageBox.Show(new MemberReport().Body);
}
private void MemberCsvExport(List<Member> list)
{
frmExportCsv<Member> frmCsv = new frmExportCsv<Member>(list)
{
SelectedProperties = Program.config.MemberCsvExportFields,
};
frmCsv.ShowDialog();
Program.config.MemberCsvExportFields = frmCsv.SelectedProperties;
XmlData.SaveToFile(Program.ConfigFile, Program.config);
}
private void lstMembers_mnuMain_Members_CSV_selected(object sender, EventArgs e)
{
frmExportCsv<Member> frmCsv = new frmExportCsv<Member>(lstMembers.GetSelectedItems());
frmCsv.ShowDialog();
{
MemberCsvExport(lstMembers.GetSelectedItems());
}
private void lstMembers_mnuMain_Members_CSV_all(object sender, EventArgs e)
{
frmExportCsv<Member> frmCsv = new frmExportCsv<Member>(Program.members.Entries);
frmCsv.ShowDialog();
{
MemberCsvExport(Program.members.Entries);
}
private void mnuMain_Payments_Add(object sender, EventArgs e)