2021-07-18PX Added storage for CSV selected export fields, not fully working yet
This commit is contained in:
parent
342511f03a
commit
a1c4512f2c
|
@ -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!
|
||||
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue