/// <summary> /// Заполняет поля на форме значениями. Берёт данные из полей таймлайнера. /// </summary> public void fillDataFromTask(TimelinerTask Task) { CompletionTextBox.Text = Task.User1; UnitsComboBox.Text = Task.User2; maxCompletionTextBox.Text = Task.User3; if (string.IsNullOrEmpty(maxCompletionTextBox.Text)) checkMaxCompletionAndUnits(); }
public inputForm(TimelinerTask Task, string ID, UIform parent) { this.Task = Task; this.UniqueID = ID; this.thisParent = parent; InitializeComponent(); Dictionary<string,string> data = Core.Self.filesDB.Select(ID); if (data != null) { this.textBox1.Text = data["Value"]; } }
bool hasDataAttached(TimelinerTask task) { if (string.IsNullOrEmpty(task.User1)) return false; else return true; }
/// <summary> /// Пересчитывает данные из БД и сохраняет в таск. /// </summary> public void CalculateTaskSummaryProgress(TimelinerTask Task) { if (Task.Selection.HasSelectionSources) { ModelItemCollection items = Task.Selection.GetSelectedItems(nDoc); List<double> values = new List<double>(); foreach (ModelItem item in items.DescendantsAndSelf) { string UniqueID = Core.Self.GetElementUniqueID(item); Dictionary<string, string> qResult = Core.Self.filesDB.Select(UniqueID); if (qResult != null) { double value = qResult["Value"].ToDouble(); double maxValue = qResult["MaxValue"].ToDouble(); if (maxValue != 0) { values.Add(value / maxValue); } } } //среднее арифметическое if (values.Count > 0) { double Sum = 0; foreach (double val in values) { Sum += val; } double percent = Sum * 100 / values.Count; string result = percent.ToString("G", System.Globalization.CultureInfo.CurrentCulture); this.WriteCompletionToTask(timeliner.TaskCreateIndexPath(Task), result, "%", null, percent); } } }
/// <summary> /// Рекурсивный обход дерева тасков и сбор всех тасков в один массив. /// </summary> void getChildren(TimelinerTask rootTask) { foreach (TimelinerTask child in rootTask.Children) { Collection<int> index = timeliner.TaskCreateIndexPath(child); TaskContainer Task = new TaskContainer(child.DisplayName, index); this.tasks.Add(Task); getChildren(Task); } }
/// <summary> /// Подсвечивает ноду дерева в зависимости от того, назначен ли таску набор и введены ли данные. /// </summary> public void setNodeFontAndColor(TreeNode node, TimelinerTask task) { if (!task.Selection.IsClear) { node.BackColor = System.Drawing.Color.Green; if(hasDataAttached(task)) { node.NodeFont = new Font(TreeView.DefaultFont, FontStyle.Bold | FontStyle.Underline); } } else if(hasDataAttached(task)) { node.ForeColor = System.Drawing.Color.SkyBlue; node.NodeFont = new Font(TreeView.DefaultFont, FontStyle.Bold | FontStyle.Underline); } }
/// <summary> /// Показывает на модели только выборку элементов, остальное прячет. /// </summary> /// <param name="task">Таск, выборка которого отображается на модели.</param> public void HideAllExceptTaskSelection(TimelinerTask task, TextBox textbox = null) { try { if (!task.Selection.IsClear) { #region Способ из мануала, работает медленно и неправильно //ModelItemCollection hidden = new ModelItemCollection(); //ModelItemCollection visible = new ModelItemCollection(); //ModelItemCollection taskItems = task.Selection.GetSelectedItems(nDoc); //foreach (ModelItem item in taskItems) //{ //if (item.AncestorsAndSelf != null) // visible.AddRange(item.AncestorsAndSelf); //if (item.Descendants != null) // visible.AddRange(item.Descendants); //} ////mark as invisible all the siblings of the visible items as well as the visible items //foreach (ModelItem toShow in visible) //{ // if (toShow.Parent != null) // { // hidden.AddRange(toShow.Parent.Children); // } //} ////remove the visible items from the collection //foreach (ModelItem toShow in visible) //{ // hidden.Remove(toShow); //} ////hide the remaining items //nDoc.Models.SetHidden(hidden, true); #endregion MakeAllModelItemsVisible(); ModelItemCollection taskItems = task.Selection.GetSelectedItems(nDoc); taskItems.Invert(nDoc); //nDoc.Models.OverridePermanentTransparency(nDoc.CurrentSelection.SelectedItems, 1); nDoc.Models.SetHidden(taskItems, true); //nDoc.Models.OverridePermanentTransparency(task.Selection.GetSelectedItems(nDoc), 0); } else { MakeAllModelItemsVisible(); if(textbox != null) textbox.Text += " /не назначена выбрка/"; } } catch (Exception Ex) { MessageBox.Show(Ex.Message); } }
/// <summary> /// Поиск имени набора, прикреплённого к таску. /// </summary> /// <param name="Task">Таск, к которому привязан искомый набор</param> /// <returns>Имя списка выбора, который выбирает указанный селекшн</returns> public string FindSelectionSetName(TimelinerTask Task) { if (Task.Selection.HasSelectionSources) { SelectionSource sSource = Task.Selection.SelectionSources[0]; SavedItem sSet = nDoc.SelectionSets.ResolveSelectionSource(sSource); return sSet.DisplayName; } return null; }
/// <summary> /// Удаляет из базы все данные об элементах, присвоенных таску. /// </summary> /// <param name="Task"></param> public void ClearTaskItemsFromDB(TimelinerTask Task) { if (Task.Selection.HasSelectionSources) { ModelItemCollection items = Task.Selection.GetSelectedItems(nDoc); foreach (ModelItem item in items) { string UniqueID = Core.Self.GetElementUniqueID(item); this.filesDB.Remove(UniqueID); } } }