Import von Bastis Zonen, Laden und Speichern, Reihenfolge der Zonen (Sequence) ändern
This commit is contained in:
parent
ad37e2da50
commit
dbdb3b9e47
61
AIS/AISAdmin/Main.Designer.cs
generated
61
AIS/AISAdmin/Main.Designer.cs
generated
@ -35,14 +35,13 @@
|
|||||||
this.buttonDeleteGroup = new System.Windows.Forms.Button();
|
this.buttonDeleteGroup = new System.Windows.Forms.Button();
|
||||||
this.groupBoxZones = new System.Windows.Forms.GroupBox();
|
this.groupBoxZones = new System.Windows.Forms.GroupBox();
|
||||||
this.checkBoxZoneActive = new System.Windows.Forms.CheckBox();
|
this.checkBoxZoneActive = new System.Windows.Forms.CheckBox();
|
||||||
this.buttonSaveZone = new System.Windows.Forms.Button();
|
|
||||||
this.textBoxZone = new System.Windows.Forms.TextBox();
|
this.textBoxZone = new System.Windows.Forms.TextBox();
|
||||||
this.buttonDeleteZone = new System.Windows.Forms.Button();
|
this.buttonDeleteZone = new System.Windows.Forms.Button();
|
||||||
this.buttonEditZone = new System.Windows.Forms.Button();
|
this.buttonEditZone = new System.Windows.Forms.Button();
|
||||||
this.buttonImportZone = new System.Windows.Forms.Button();
|
|
||||||
this.buttonZoneDown = new System.Windows.Forms.Button();
|
this.buttonZoneDown = new System.Windows.Forms.Button();
|
||||||
this.buttonZoneUp = new System.Windows.Forms.Button();
|
this.buttonZoneUp = new System.Windows.Forms.Button();
|
||||||
this.listBoxZones = new System.Windows.Forms.ListBox();
|
this.listBoxZones = new System.Windows.Forms.ListBox();
|
||||||
|
this.buttonImportZone = new System.Windows.Forms.Button();
|
||||||
this.groupBoxAssignments = new System.Windows.Forms.GroupBox();
|
this.groupBoxAssignments = new System.Windows.Forms.GroupBox();
|
||||||
this.textBoxGroup = new System.Windows.Forms.TextBox();
|
this.textBoxGroup = new System.Windows.Forms.TextBox();
|
||||||
this.buttonSaveGroup = new System.Windows.Forms.Button();
|
this.buttonSaveGroup = new System.Windows.Forms.Button();
|
||||||
@ -64,7 +63,7 @@
|
|||||||
this.comboBoxGroup.FormattingEnabled = true;
|
this.comboBoxGroup.FormattingEnabled = true;
|
||||||
this.comboBoxGroup.Location = new System.Drawing.Point(63, 11);
|
this.comboBoxGroup.Location = new System.Drawing.Point(63, 11);
|
||||||
this.comboBoxGroup.Name = "comboBoxGroup";
|
this.comboBoxGroup.Name = "comboBoxGroup";
|
||||||
this.comboBoxGroup.Size = new System.Drawing.Size(137, 23);
|
this.comboBoxGroup.Size = new System.Drawing.Size(180, 23);
|
||||||
this.comboBoxGroup.TabIndex = 1;
|
this.comboBoxGroup.TabIndex = 1;
|
||||||
this.comboBoxGroup.SelectedIndexChanged += new System.EventHandler(this.comboBoxGroup_SelectedIndexChanged);
|
this.comboBoxGroup.SelectedIndexChanged += new System.EventHandler(this.comboBoxGroup_SelectedIndexChanged);
|
||||||
//
|
//
|
||||||
@ -92,11 +91,9 @@
|
|||||||
// groupBoxZones
|
// groupBoxZones
|
||||||
//
|
//
|
||||||
this.groupBoxZones.Controls.Add(this.checkBoxZoneActive);
|
this.groupBoxZones.Controls.Add(this.checkBoxZoneActive);
|
||||||
this.groupBoxZones.Controls.Add(this.buttonSaveZone);
|
|
||||||
this.groupBoxZones.Controls.Add(this.textBoxZone);
|
this.groupBoxZones.Controls.Add(this.textBoxZone);
|
||||||
this.groupBoxZones.Controls.Add(this.buttonDeleteZone);
|
this.groupBoxZones.Controls.Add(this.buttonDeleteZone);
|
||||||
this.groupBoxZones.Controls.Add(this.buttonEditZone);
|
this.groupBoxZones.Controls.Add(this.buttonEditZone);
|
||||||
this.groupBoxZones.Controls.Add(this.buttonImportZone);
|
|
||||||
this.groupBoxZones.Controls.Add(this.buttonZoneDown);
|
this.groupBoxZones.Controls.Add(this.buttonZoneDown);
|
||||||
this.groupBoxZones.Controls.Add(this.buttonZoneUp);
|
this.groupBoxZones.Controls.Add(this.buttonZoneUp);
|
||||||
this.groupBoxZones.Controls.Add(this.listBoxZones);
|
this.groupBoxZones.Controls.Add(this.listBoxZones);
|
||||||
@ -110,27 +107,18 @@
|
|||||||
// checkBoxZoneActive
|
// checkBoxZoneActive
|
||||||
//
|
//
|
||||||
this.checkBoxZoneActive.AutoSize = true;
|
this.checkBoxZoneActive.AutoSize = true;
|
||||||
this.checkBoxZoneActive.Location = new System.Drawing.Point(237, 27);
|
this.checkBoxZoneActive.Location = new System.Drawing.Point(401, 29);
|
||||||
this.checkBoxZoneActive.Name = "checkBoxZoneActive";
|
this.checkBoxZoneActive.Name = "checkBoxZoneActive";
|
||||||
this.checkBoxZoneActive.Size = new System.Drawing.Size(59, 19);
|
this.checkBoxZoneActive.Size = new System.Drawing.Size(59, 19);
|
||||||
this.checkBoxZoneActive.TabIndex = 11;
|
this.checkBoxZoneActive.TabIndex = 11;
|
||||||
this.checkBoxZoneActive.Text = "Active";
|
this.checkBoxZoneActive.Text = "Active";
|
||||||
this.checkBoxZoneActive.UseVisualStyleBackColor = true;
|
this.checkBoxZoneActive.UseVisualStyleBackColor = true;
|
||||||
//
|
this.checkBoxZoneActive.CheckedChanged += new System.EventHandler(this.checkBoxZoneActive_CheckedChanged);
|
||||||
// buttonSaveZone
|
|
||||||
//
|
|
||||||
this.buttonSaveZone.Enabled = false;
|
|
||||||
this.buttonSaveZone.Image = global::AISAdmin.Properties.Resources.disk_blue;
|
|
||||||
this.buttonSaveZone.Location = new System.Drawing.Point(733, 22);
|
|
||||||
this.buttonSaveZone.Name = "buttonSaveZone";
|
|
||||||
this.buttonSaveZone.Size = new System.Drawing.Size(37, 31);
|
|
||||||
this.buttonSaveZone.TabIndex = 10;
|
|
||||||
this.buttonSaveZone.UseVisualStyleBackColor = true;
|
|
||||||
this.buttonSaveZone.Click += new System.EventHandler(this.buttonSaveZone_Click);
|
|
||||||
//
|
//
|
||||||
// textBoxZone
|
// textBoxZone
|
||||||
//
|
//
|
||||||
this.textBoxZone.Location = new System.Drawing.Point(525, 27);
|
this.textBoxZone.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.textBoxZone.Location = new System.Drawing.Point(568, 25);
|
||||||
this.textBoxZone.Name = "textBoxZone";
|
this.textBoxZone.Name = "textBoxZone";
|
||||||
this.textBoxZone.ReadOnly = true;
|
this.textBoxZone.ReadOnly = true;
|
||||||
this.textBoxZone.Size = new System.Drawing.Size(202, 23);
|
this.textBoxZone.Size = new System.Drawing.Size(202, 23);
|
||||||
@ -138,9 +126,10 @@
|
|||||||
//
|
//
|
||||||
// buttonDeleteZone
|
// buttonDeleteZone
|
||||||
//
|
//
|
||||||
|
this.buttonDeleteZone.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.buttonDeleteZone.Enabled = false;
|
this.buttonDeleteZone.Enabled = false;
|
||||||
this.buttonDeleteZone.Image = global::AISAdmin.Properties.Resources.delete;
|
this.buttonDeleteZone.Image = global::AISAdmin.Properties.Resources.delete;
|
||||||
this.buttonDeleteZone.Location = new System.Drawing.Point(482, 22);
|
this.buttonDeleteZone.Location = new System.Drawing.Point(525, 20);
|
||||||
this.buttonDeleteZone.Name = "buttonDeleteZone";
|
this.buttonDeleteZone.Name = "buttonDeleteZone";
|
||||||
this.buttonDeleteZone.Size = new System.Drawing.Size(37, 31);
|
this.buttonDeleteZone.Size = new System.Drawing.Size(37, 31);
|
||||||
this.buttonDeleteZone.TabIndex = 8;
|
this.buttonDeleteZone.TabIndex = 8;
|
||||||
@ -149,30 +138,21 @@
|
|||||||
//
|
//
|
||||||
// buttonEditZone
|
// buttonEditZone
|
||||||
//
|
//
|
||||||
|
this.buttonEditZone.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.buttonEditZone.Enabled = false;
|
this.buttonEditZone.Enabled = false;
|
||||||
this.buttonEditZone.Image = global::AISAdmin.Properties.Resources.pencil;
|
this.buttonEditZone.Image = global::AISAdmin.Properties.Resources.pencil;
|
||||||
this.buttonEditZone.Location = new System.Drawing.Point(439, 22);
|
this.buttonEditZone.Location = new System.Drawing.Point(482, 20);
|
||||||
this.buttonEditZone.Name = "buttonEditZone";
|
this.buttonEditZone.Name = "buttonEditZone";
|
||||||
this.buttonEditZone.Size = new System.Drawing.Size(37, 31);
|
this.buttonEditZone.Size = new System.Drawing.Size(37, 31);
|
||||||
this.buttonEditZone.TabIndex = 6;
|
this.buttonEditZone.TabIndex = 6;
|
||||||
this.buttonEditZone.UseVisualStyleBackColor = true;
|
this.buttonEditZone.UseVisualStyleBackColor = true;
|
||||||
this.buttonEditZone.Click += new System.EventHandler(this.buttonEditZone_Click);
|
this.buttonEditZone.Click += new System.EventHandler(this.buttonEditZone_Click);
|
||||||
//
|
//
|
||||||
// buttonImportZone
|
|
||||||
//
|
|
||||||
this.buttonImportZone.Image = global::AISAdmin.Properties.Resources.import2;
|
|
||||||
this.buttonImportZone.Location = new System.Drawing.Point(396, 22);
|
|
||||||
this.buttonImportZone.Name = "buttonImportZone";
|
|
||||||
this.buttonImportZone.Size = new System.Drawing.Size(37, 31);
|
|
||||||
this.buttonImportZone.TabIndex = 5;
|
|
||||||
this.buttonImportZone.UseVisualStyleBackColor = true;
|
|
||||||
this.buttonImportZone.Click += new System.EventHandler(this.buttonImportZone_Click);
|
|
||||||
//
|
|
||||||
// buttonZoneDown
|
// buttonZoneDown
|
||||||
//
|
//
|
||||||
this.buttonZoneDown.Enabled = false;
|
this.buttonZoneDown.Enabled = false;
|
||||||
this.buttonZoneDown.Image = global::AISAdmin.Properties.Resources.arrow_down_green;
|
this.buttonZoneDown.Image = global::AISAdmin.Properties.Resources.arrow_down_green;
|
||||||
this.buttonZoneDown.Location = new System.Drawing.Point(194, 145);
|
this.buttonZoneDown.Location = new System.Drawing.Point(358, 145);
|
||||||
this.buttonZoneDown.Name = "buttonZoneDown";
|
this.buttonZoneDown.Name = "buttonZoneDown";
|
||||||
this.buttonZoneDown.Size = new System.Drawing.Size(37, 31);
|
this.buttonZoneDown.Size = new System.Drawing.Size(37, 31);
|
||||||
this.buttonZoneDown.TabIndex = 4;
|
this.buttonZoneDown.TabIndex = 4;
|
||||||
@ -183,7 +163,7 @@
|
|||||||
//
|
//
|
||||||
this.buttonZoneUp.Enabled = false;
|
this.buttonZoneUp.Enabled = false;
|
||||||
this.buttonZoneUp.Image = global::AISAdmin.Properties.Resources.arrow_up_green;
|
this.buttonZoneUp.Image = global::AISAdmin.Properties.Resources.arrow_up_green;
|
||||||
this.buttonZoneUp.Location = new System.Drawing.Point(194, 22);
|
this.buttonZoneUp.Location = new System.Drawing.Point(358, 22);
|
||||||
this.buttonZoneUp.Name = "buttonZoneUp";
|
this.buttonZoneUp.Name = "buttonZoneUp";
|
||||||
this.buttonZoneUp.Size = new System.Drawing.Size(37, 31);
|
this.buttonZoneUp.Size = new System.Drawing.Size(37, 31);
|
||||||
this.buttonZoneUp.TabIndex = 3;
|
this.buttonZoneUp.TabIndex = 3;
|
||||||
@ -197,8 +177,19 @@
|
|||||||
this.listBoxZones.ItemHeight = 15;
|
this.listBoxZones.ItemHeight = 15;
|
||||||
this.listBoxZones.Location = new System.Drawing.Point(6, 22);
|
this.listBoxZones.Location = new System.Drawing.Point(6, 22);
|
||||||
this.listBoxZones.Name = "listBoxZones";
|
this.listBoxZones.Name = "listBoxZones";
|
||||||
this.listBoxZones.Size = new System.Drawing.Size(182, 154);
|
this.listBoxZones.Size = new System.Drawing.Size(346, 154);
|
||||||
this.listBoxZones.TabIndex = 0;
|
this.listBoxZones.TabIndex = 0;
|
||||||
|
this.listBoxZones.SelectedIndexChanged += new System.EventHandler(this.listBoxZones_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// buttonImportZone
|
||||||
|
//
|
||||||
|
this.buttonImportZone.Image = global::AISAdmin.Properties.Resources.import2;
|
||||||
|
this.buttonImportZone.Location = new System.Drawing.Point(702, 6);
|
||||||
|
this.buttonImportZone.Name = "buttonImportZone";
|
||||||
|
this.buttonImportZone.Size = new System.Drawing.Size(37, 31);
|
||||||
|
this.buttonImportZone.TabIndex = 5;
|
||||||
|
this.buttonImportZone.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonImportZone.Click += new System.EventHandler(this.buttonImportZone_Click);
|
||||||
//
|
//
|
||||||
// groupBoxAssignments
|
// groupBoxAssignments
|
||||||
//
|
//
|
||||||
@ -221,7 +212,7 @@
|
|||||||
//
|
//
|
||||||
this.buttonSaveGroup.Enabled = false;
|
this.buttonSaveGroup.Enabled = false;
|
||||||
this.buttonSaveGroup.Image = global::AISAdmin.Properties.Resources.disk_blue;
|
this.buttonSaveGroup.Image = global::AISAdmin.Properties.Resources.disk_blue;
|
||||||
this.buttonSaveGroup.Location = new System.Drawing.Point(501, 6);
|
this.buttonSaveGroup.Location = new System.Drawing.Point(745, 6);
|
||||||
this.buttonSaveGroup.Name = "buttonSaveGroup";
|
this.buttonSaveGroup.Name = "buttonSaveGroup";
|
||||||
this.buttonSaveGroup.Size = new System.Drawing.Size(37, 31);
|
this.buttonSaveGroup.Size = new System.Drawing.Size(37, 31);
|
||||||
this.buttonSaveGroup.TabIndex = 5;
|
this.buttonSaveGroup.TabIndex = 5;
|
||||||
@ -238,6 +229,7 @@
|
|||||||
this.Controls.Add(this.groupBoxAssignments);
|
this.Controls.Add(this.groupBoxAssignments);
|
||||||
this.Controls.Add(this.groupBoxZones);
|
this.Controls.Add(this.groupBoxZones);
|
||||||
this.Controls.Add(this.buttonDeleteGroup);
|
this.Controls.Add(this.buttonDeleteGroup);
|
||||||
|
this.Controls.Add(this.buttonImportZone);
|
||||||
this.Controls.Add(this.buttonNewGroup);
|
this.Controls.Add(this.buttonNewGroup);
|
||||||
this.Controls.Add(this.comboBoxGroup);
|
this.Controls.Add(this.comboBoxGroup);
|
||||||
this.Controls.Add(this.label1);
|
this.Controls.Add(this.label1);
|
||||||
@ -266,7 +258,6 @@
|
|||||||
private Button buttonZoneUp;
|
private Button buttonZoneUp;
|
||||||
private TextBox textBoxGroup;
|
private TextBox textBoxGroup;
|
||||||
private Button buttonSaveGroup;
|
private Button buttonSaveGroup;
|
||||||
private Button buttonSaveZone;
|
|
||||||
private TextBox textBoxZone;
|
private TextBox textBoxZone;
|
||||||
private Button buttonDeleteZone;
|
private Button buttonDeleteZone;
|
||||||
private Button buttonEditZone;
|
private Button buttonEditZone;
|
||||||
|
|||||||
@ -7,8 +7,7 @@ namespace AISAdmin
|
|||||||
public partial class Main : Form
|
public partial class Main : Form
|
||||||
{
|
{
|
||||||
private AIS_SQLiteStorage? _storage;
|
private AIS_SQLiteStorage? _storage;
|
||||||
private BindingList<MonitorGroup>? _monitorGroups = new BindingList<MonitorGroup>();
|
private BindingList<MonitorGroup>? _monitorGroups = new();
|
||||||
private BindingList<MonitorZone>? _monitorZones;
|
|
||||||
private MonitorGroup? _currentGroup;
|
private MonitorGroup? _currentGroup;
|
||||||
|
|
||||||
public Main()
|
public Main()
|
||||||
@ -19,39 +18,50 @@ namespace AISAdmin
|
|||||||
|
|
||||||
private void buttonZoneUp_Click(object sender, EventArgs e)
|
private void buttonZoneUp_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
MonitorZone mz = (MonitorZone)this.listBoxZones.SelectedItem;
|
||||||
|
int i = this.listBoxZones.SelectedIndex;
|
||||||
|
BindingList<MonitorZone> zones = (BindingList<MonitorZone>)this.listBoxZones.DataSource;
|
||||||
|
if (mz != null && (i > 0))
|
||||||
|
{
|
||||||
|
MonitorZone prevZone = zones[i - 1];
|
||||||
|
mz.Sequence -= 1;
|
||||||
|
prevZone.Sequence += 1;
|
||||||
|
zones[i - 1] = mz;
|
||||||
|
zones[i] = prevZone;
|
||||||
|
this.listBoxZones.SelectedIndex = i - 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonZoneDown_Click(object sender, EventArgs e)
|
private void buttonZoneDown_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
MonitorZone mz = (MonitorZone)this.listBoxZones.SelectedItem;
|
||||||
|
int i = this.listBoxZones.SelectedIndex;
|
||||||
|
BindingList<MonitorZone> zones = (BindingList<MonitorZone>) this.listBoxZones.DataSource;
|
||||||
|
if (mz != null && (i < (zones.Count - 1)))
|
||||||
|
{
|
||||||
|
MonitorZone nextZone = zones[i + 1];
|
||||||
|
mz.Sequence += 1;
|
||||||
|
nextZone.Sequence -= 1;
|
||||||
|
zones[i + 1] = mz;
|
||||||
|
zones[i] = nextZone;
|
||||||
|
this.listBoxZones.SelectedIndex = i + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonImportZone_Click(object sender, EventArgs e)
|
private void buttonImportZone_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
using (OpenFileDialog ofd = new OpenFileDialog())
|
using OpenFileDialog ofd = new();
|
||||||
|
ofd.Filter = "Google Earth KML files (*.kml)|*.kml|All files (*.*)|*.*";
|
||||||
|
ofd.RestoreDirectory = true;
|
||||||
|
ofd.Multiselect = false;
|
||||||
|
if (ofd.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
ofd.Filter = "Google Earth KML files (*.kml)|*.kml|All files (*.*)|*.*";
|
_monitorGroups = new BindingList<MonitorGroup>(MonitorGroup.LoadGroups(ofd.FileName));
|
||||||
ofd.RestoreDirectory = true;
|
this.comboBoxGroup.DataSource = _monitorGroups;
|
||||||
ofd.Multiselect = true;
|
if (_monitorGroups.Count > 0)
|
||||||
if (ofd.ShowDialog() == DialogResult.OK)
|
this.comboBoxGroup.SelectedIndex = 0;
|
||||||
{
|
this.buttonSaveGroup.Enabled = _monitorGroups.Count > 0;
|
||||||
for (int i = 0, seq = this._monitorGroups.Count; i < ofd.FileNames.Length; i++, seq++)
|
this.listBoxZones.Enabled = _monitorGroups.Count > 0;
|
||||||
{
|
|
||||||
MonitorZone mz = MonitorZone.ImportFromKML(ofd.FileNames[i]);
|
|
||||||
if(mz != null)
|
|
||||||
{
|
|
||||||
mz.MonitorGroupId = this._currentGroup.Id;
|
|
||||||
mz.Sequence = seq;
|
|
||||||
_storage.Save(mz);
|
|
||||||
foreach(GeoPoint gp in mz.Vertices)
|
|
||||||
{
|
|
||||||
gp.MonitorZoneId = mz.Id;
|
|
||||||
_storage.Save(gp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,11 +75,6 @@ namespace AISAdmin
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonSaveZone_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void buttonNewGroup_Click(object sender, EventArgs e)
|
private void buttonNewGroup_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.textBoxGroup.ReadOnly = false;
|
this.textBoxGroup.ReadOnly = false;
|
||||||
@ -85,18 +90,19 @@ namespace AISAdmin
|
|||||||
|
|
||||||
private void buttonSaveGroup_Click(object sender, EventArgs e)
|
private void buttonSaveGroup_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if(this.textBoxGroup.Text != null)
|
// save everything
|
||||||
|
foreach(MonitorGroup mg in this._monitorGroups)
|
||||||
{
|
{
|
||||||
string groupName = this.textBoxGroup.Text.Trim();
|
this._storage?.Save(mg);
|
||||||
if(groupName.Length > 0)
|
foreach(MonitorZone mz in mg.Zones)
|
||||||
{
|
{
|
||||||
_currentGroup.Name = groupName;
|
if (mz.MonitorGroupId < 1) mz.MonitorGroupId = mg.Id;
|
||||||
if(_storage.Save(_currentGroup))
|
this._storage?.Save(mz);
|
||||||
{
|
|
||||||
if ((bool)!(_monitorGroups?.Contains(_currentGroup)))
|
|
||||||
this._monitorGroups.Add(_currentGroup);
|
|
||||||
|
|
||||||
this.comboBoxGroup.SelectedItem = _currentGroup;
|
foreach(GeoPoint vertex in mz.Vertices)
|
||||||
|
{
|
||||||
|
if(vertex.MonitorZoneId < 1) vertex.MonitorZoneId = mz.Id;
|
||||||
|
this._storage?.Save(vertex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,11 +112,21 @@ namespace AISAdmin
|
|||||||
{
|
{
|
||||||
_storage = new AIS_SQLiteStorage(null);
|
_storage = new AIS_SQLiteStorage(null);
|
||||||
_monitorGroups = new BindingList<MonitorGroup>(_storage.LoadGroups());
|
_monitorGroups = new BindingList<MonitorGroup>(_storage.LoadGroups());
|
||||||
_monitorZones = new BindingList<MonitorZone>(_storage.LoadMonitorZones());
|
List<MonitorZone> zones = _storage.LoadMonitorZones();
|
||||||
|
foreach(MonitorGroup mg in _monitorGroups)
|
||||||
|
{
|
||||||
|
foreach(MonitorZone mz in zones)
|
||||||
|
{
|
||||||
|
if (mz.MonitorGroupId == mg.Id)
|
||||||
|
mg.Zones.Add(mz);
|
||||||
|
}
|
||||||
|
}
|
||||||
this.comboBoxGroup.DataSource = _monitorGroups;
|
this.comboBoxGroup.DataSource = _monitorGroups;
|
||||||
this.comboBoxGroup.DisplayMember = "Name";
|
this.comboBoxGroup.DisplayMember = "Name";
|
||||||
if (_monitorGroups.Count > 0)
|
if (_monitorGroups.Count > 0)
|
||||||
this.comboBoxGroup.SelectedIndex = 0;
|
this.comboBoxGroup.SelectedIndex = 0;
|
||||||
|
this.buttonSaveGroup.Enabled = _monitorGroups.Count > 0;
|
||||||
|
this.listBoxZones.Enabled = _monitorGroups.Count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void comboBoxGroup_SelectedIndexChanged(object sender, EventArgs e)
|
private void comboBoxGroup_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
@ -118,15 +134,8 @@ namespace AISAdmin
|
|||||||
_currentGroup = (MonitorGroup) this.comboBoxGroup.SelectedItem;
|
_currentGroup = (MonitorGroup) this.comboBoxGroup.SelectedItem;
|
||||||
if (_currentGroup != null)
|
if (_currentGroup != null)
|
||||||
{
|
{
|
||||||
this.textBoxGroup.Text = _currentGroup.Name;
|
_currentGroup.Zones.Sort();
|
||||||
List<MonitorZone> groupZones = new List<MonitorZone>();
|
this.listBoxZones.DataSource = new BindingList<MonitorZone>(_currentGroup.Zones);
|
||||||
foreach(MonitorZone mZone in _monitorZones)
|
|
||||||
{
|
|
||||||
if (mZone.MonitorGroupId == _currentGroup.Id)
|
|
||||||
groupZones.Add(mZone);
|
|
||||||
}
|
|
||||||
groupZones.Sort();
|
|
||||||
this.listBoxZones.DataSource = groupZones;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -135,6 +144,27 @@ namespace AISAdmin
|
|||||||
this.buttonSaveGroup.Enabled = false;
|
this.buttonSaveGroup.Enabled = false;
|
||||||
this.textBoxGroup.ReadOnly = true;
|
this.textBoxGroup.ReadOnly = true;
|
||||||
}
|
}
|
||||||
|
this.buttonZoneDown.Enabled = (this._currentGroup != null) && (this._currentGroup.Zones.Count > 1);
|
||||||
|
this.buttonZoneUp.Enabled = (this._currentGroup != null) && (this._currentGroup.Zones.Count > 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkBoxZoneActive_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MonitorZone mz = (MonitorZone)this.listBoxZones.SelectedItem;
|
||||||
|
if (mz != null)
|
||||||
|
{
|
||||||
|
mz.Active = this.checkBoxZoneActive.Checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void listBoxZones_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
MonitorZone mz = (MonitorZone) this.listBoxZones.SelectedItem;
|
||||||
|
if(mz != null)
|
||||||
|
{
|
||||||
|
this.checkBoxZoneActive.Checked = mz.Active;
|
||||||
|
this.textBoxZone.Text = mz.Name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
@ -80,7 +80,7 @@ namespace bsmd.AIS2Service
|
|||||||
{
|
{
|
||||||
lvCmd.Parameters.Clear();
|
lvCmd.Parameters.Clear();
|
||||||
lvCmd.Parameters.AddWithValue("@ID", mz.Id);
|
lvCmd.Parameters.AddWithValue("@ID", mz.Id);
|
||||||
SQLiteDataReader lvReader = lvCmd.ExecuteReader();
|
reader = lvCmd.ExecuteReader();
|
||||||
if(reader.HasRows)
|
if(reader.HasRows)
|
||||||
{
|
{
|
||||||
while(reader.Read())
|
while(reader.Read())
|
||||||
@ -92,7 +92,7 @@ namespace bsmd.AIS2Service
|
|||||||
mz.Vertices.Add(gp);
|
mz.Vertices.Add(gp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lvReader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
lvCmd.Dispose();
|
lvCmd.Dispose();
|
||||||
|
|
||||||
@ -101,9 +101,9 @@ namespace bsmd.AIS2Service
|
|||||||
SQLiteCommand laCmd = new SQLiteCommand(loadAssignmentsString, _connection);
|
SQLiteCommand laCmd = new SQLiteCommand(loadAssignmentsString, _connection);
|
||||||
foreach (MonitorZone mz in monitorZones)
|
foreach (MonitorZone mz in monitorZones)
|
||||||
{
|
{
|
||||||
lvCmd.Parameters.Clear();
|
laCmd.Parameters.Clear();
|
||||||
lvCmd.Parameters.AddWithValue("@ID", mz.Id);
|
laCmd.Parameters.AddWithValue("@ID", mz.Id);
|
||||||
SQLiteDataReader lvReader = laCmd.ExecuteReader();
|
reader = laCmd.ExecuteReader();
|
||||||
if (reader.HasRows)
|
if (reader.HasRows)
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
@ -115,7 +115,7 @@ namespace bsmd.AIS2Service
|
|||||||
mz.Assignments.Add(ma);
|
mz.Assignments.Add(ma);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lvReader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
laCmd.Dispose();
|
laCmd.Dispose();
|
||||||
|
|
||||||
@ -284,7 +284,7 @@ namespace bsmd.AIS2Service
|
|||||||
public bool Save(GeoPoint geoPoint)
|
public bool Save(GeoPoint geoPoint)
|
||||||
{
|
{
|
||||||
if (geoPoint == null) return false;
|
if (geoPoint == null) return false;
|
||||||
string saveGeoPointString = $"INSERT INTO zone_vertex (monitor_zone_id, latitude, longitude) VALUES ({geoPoint.MonitorZoneId}, {geoPoint.Lat}, {geoPoint.Lon})";
|
string saveGeoPointString = $"INSERT INTO zone_vertex (monitor_zone_id, latitude, longitude) VALUES ({geoPoint.MonitorZoneId}, {geoPoint.Lat.ToDotString()}, {geoPoint.Lon.ToDotString()})";
|
||||||
SQLiteCommand cmd = new SQLiteCommand(saveGeoPointString, _connection);
|
SQLiteCommand cmd = new SQLiteCommand(saveGeoPointString, _connection);
|
||||||
int insertedRows = cmd.ExecuteNonQuery();
|
int insertedRows = cmd.ExecuteNonQuery();
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
|
|||||||
@ -12,6 +12,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web.UI.WebControls;
|
using System.Web.UI.WebControls;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
namespace bsmd.AIS2Service
|
namespace bsmd.AIS2Service
|
||||||
{
|
{
|
||||||
@ -37,6 +38,9 @@ namespace bsmd.AIS2Service
|
|||||||
|
|
||||||
public class MonitorGroup : DBEntity
|
public class MonitorGroup : DBEntity
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private static ILog _log = LogManager.GetLogger(typeof(MonitorGroup));
|
||||||
|
|
||||||
#region fields
|
#region fields
|
||||||
|
|
||||||
private string _name;
|
private string _name;
|
||||||
@ -60,13 +64,79 @@ namespace bsmd.AIS2Service
|
|||||||
public string Name { get { return _name; } set { _name = value; } }
|
public string Name { get { return _name; } set { _name = value; } }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region public static methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Da Basti nun eine Datei mit allen Elementen exportiert gibt es eine einzelne Funktion, die alles
|
||||||
|
/// importiert
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filename"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static List<MonitorGroup> LoadGroups(string filename)
|
||||||
|
{
|
||||||
|
List<MonitorGroup> groups = new List<MonitorGroup>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (File.Exists(filename))
|
||||||
|
{
|
||||||
|
XDocument kml = XDocument.Load(filename);
|
||||||
|
XNamespace ns = "http://www.opengis.net/kml/2.2";
|
||||||
|
|
||||||
|
foreach(XElement rootFolderNode in kml.Root.Element(ns + "Document").Element(ns + "Folder").Elements(ns + "Folder"))
|
||||||
|
{
|
||||||
|
MonitorGroup mg = new MonitorGroup(-1, rootFolderNode.Element(ns + "name").Value);
|
||||||
|
int sequence = 1;
|
||||||
|
foreach(XElement placemark in rootFolderNode.Elements(ns + "Placemark"))
|
||||||
|
{
|
||||||
|
MonitorZone mz = new MonitorZone(-1, placemark.Element(ns + "name").Value);
|
||||||
|
mz.Active = true;
|
||||||
|
mz.Sequence = sequence;
|
||||||
|
// now add all vertices
|
||||||
|
string[] vertices = placemark.Element(ns + "Polygon").Element(ns + "outerBoundaryIs").Element(ns + "LinearRing").Element(ns + "coordinates").Value.Split(' ');
|
||||||
|
for (int i = 0; i < vertices.Length - 1; i++)
|
||||||
|
{
|
||||||
|
string[] pointElems = vertices[i].Trim().Split(',');
|
||||||
|
if (pointElems.Length != 3) continue;
|
||||||
|
GeoPoint gp = new GeoPoint(-1);
|
||||||
|
gp.Lon = Double.Parse(pointElems[0], System.Globalization.NumberFormatInfo.InvariantInfo);
|
||||||
|
gp.Lat = Double.Parse(pointElems[1], System.Globalization.NumberFormatInfo.InvariantInfo);
|
||||||
|
mz.Vertices.Add(gp);
|
||||||
|
}
|
||||||
|
|
||||||
|
mg.Zones.Add(mz);
|
||||||
|
sequence++;
|
||||||
|
}
|
||||||
|
|
||||||
|
groups.Add(mg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception ex)
|
||||||
|
{
|
||||||
|
_log.Error(ex.ToString());
|
||||||
|
}
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region public methods
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return this.Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region class MonitorZone
|
#region class MonitorZone
|
||||||
|
|
||||||
public class MonitorZone : DBEntity
|
public class MonitorZone : DBEntity, IComparable<MonitorZone>
|
||||||
{
|
{
|
||||||
|
|
||||||
#region fields
|
#region fields
|
||||||
@ -100,6 +170,10 @@ namespace bsmd.AIS2Service
|
|||||||
|
|
||||||
public long MonitorGroupId { get; set; }
|
public long MonitorGroupId { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region public static methods
|
||||||
|
|
||||||
public static MonitorZone ImportFromKML(string filename)
|
public static MonitorZone ImportFromKML(string filename)
|
||||||
{
|
{
|
||||||
MonitorZone result = null;
|
MonitorZone result = null;
|
||||||
@ -150,6 +224,16 @@ namespace bsmd.AIS2Service
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int CompareTo(MonitorZone other)
|
||||||
|
{
|
||||||
|
return this.Sequence.CompareTo(other.Sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return String.Format("{0} (Seq.:{1} #Vert.:{2}", this.Name, this.Sequence, this.Vertices.Count);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -25,5 +26,10 @@ namespace bsmd.AIS2Service
|
|||||||
else
|
else
|
||||||
flags = (T)(object)(flagsValue & (~flagValue));
|
flags = (T)(object)(flagsValue & (~flagValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ToDotString(this double value)
|
||||||
|
{
|
||||||
|
return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user