public bool AddBlankRow(IDataListItem selectedItem, out int indexToSelect) { indexToSelect = 1; var itemsAdded = false; if (selectedItem != null && selectedItem.CanHaveMutipleRows) { var recordset = DataList.RecordSets.FirstOrDefault(set => set.Name == selectedItem.Recordset); if (recordset != null) { var recsetCols = new List <IScalar>(); foreach (var column in recordset.Columns) { recsetCols.AddRange(column.Value); } var numberOfRows = WorkflowInputs.Where(c => c.Recordset == selectedItem.Recordset); var lastItem = numberOfRows.Last(); var indexToInsertAt = WorkflowInputs.IndexOf(lastItem); var indexString = lastItem.Index; var indexNum = Convert.ToInt32(indexString) + 1; indexToSelect = indexToInsertAt + 1; itemsAdded = AddBlankRowToRecordset(selectedItem, recsetCols, indexToInsertAt, indexNum); } } return(itemsAdded); }
void AddRow(IDataListItem itemToAdd, IRecordSet recordset) { var recsetCols = new List <IScalar>(); foreach (var column in recordset.Columns) { var cols = column.Value.Where(scalar => scalar.IODirection == enDev2ColumnArgumentDirection.Input || scalar.IODirection == enDev2ColumnArgumentDirection.Both); recsetCols.AddRange(cols); } var numberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToAdd.Recordset); IEnumerable <IDataListItem> dataListItems = numberOfRows as IDataListItem[] ?? numberOfRows.ToArray(); var lastItem = dataListItems.Last(); var indexToInsertAt = WorkflowInputs.IndexOf(lastItem); var indexString = lastItem.Index; var indexNum = Convert.ToInt32(indexString) + 1; var lastRow = dataListItems.Where(c => c.Index == indexString); var addRow = false; foreach (var item in lastRow) { if (item.Value != string.Empty) { addRow = true; } } if (addRow) { AddBlankRowToRecordset(itemToAdd, recsetCols, indexToInsertAt, indexNum); } }
public void SetXmlData(bool includeBlank) { var dataListObject = new JObject(); var objects = WorkflowInputs.Where(item => item.IsObject); var recSets = WorkflowInputs.Where(item => item.CanHaveMutipleRows && !item.IsObject); var scalars = WorkflowInputs.Where(item => !item.CanHaveMutipleRows && !item.IsObject); AddScalarsToObject(scalars, dataListObject); AddRecordsetsToObject(recSets, dataListObject, includeBlank); AddObjectsToObject(objects, dataListObject); var dataListString = dataListObject.ToString(Formatting.Indented); JsonData = dataListString; var xml = JsonConvert.DeserializeXNode(dataListString, @"DataList", true); try { if (xml.Descendants().Count() == 1) { xml = XDocument.Parse(@"<DataList></DataList>"); } XmlData = XElement.Parse(xml.ToString()).ToString(); } catch (Exception e) { XmlData = @"Invalid characters entered"; Dev2Logger.Error(e.StackTrace, e, "Warewolf Error"); } }
/// <summary> /// Used for intelligently determining if a extra row should be added for the selected recordset /// </summary> /// <param name="itemToAdd">The item that is currently selected</param> public void AddRow(IDataListItem itemToAdd) { if (itemToAdd != null && itemToAdd.IsRecordset) { string error; IBinaryDataListEntry recordset; DataList.TryGetEntry(itemToAdd.Recordset, out recordset, out error); if (recordset != null) { IList <Dev2Column> recsetCols = recordset.Columns.Where(cc => cc.ColumnIODirection == enDev2ColumnArgumentDirection.Input || cc.ColumnIODirection == enDev2ColumnArgumentDirection.Both).ToList(); var numberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToAdd.Recordset); IEnumerable <IDataListItem> dataListItems = numberOfRows as IDataListItem[] ?? numberOfRows.ToArray(); var lastItem = dataListItems.Last(); var indexToInsertAt = WorkflowInputs.IndexOf(lastItem); var indexString = lastItem.RecordsetIndex; var indexNum = Convert.ToInt32(indexString) + 1; var lastRow = dataListItems.Where(c => c.RecordsetIndex == indexString); var dontAddRow = true; foreach (var item in lastRow) { if (item.Value != string.Empty) { dontAddRow = false; } } if (!dontAddRow) { AddBlankRowToRecordset(itemToAdd, recsetCols, indexToInsertAt, indexNum); } } } }
/// <summary> /// Used for removing a row for the collection /// </summary> /// <param name="itemToRemove">The item that will be removed from the collection</param> /// <param name="indexToSelect"></param> public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect) { indexToSelect = 1; var itemsRemoved = false; if (itemToRemove != null && itemToRemove.CanHaveMutipleRows) { var numberOfRows = WorkflowInputs.Count(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field); List <IDataListItem> listToRemove = WorkflowInputs.Where(c => c.Index == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList(); if (numberOfRows == 2) { IEnumerable <IDataListItem> firstRow = WorkflowInputs.Where(c => c.Index == @"1" && c.Recordset == itemToRemove.Recordset); bool removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value)); if (removeRow) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.Index == @"2" && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } } else if (numberOfRows > 2) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.Index == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } } return(itemsRemoved); }
void RemoveRows(IDataListItem itemToRemove, ref int indexToSelect, ref bool itemsRemoved, List <IDataListItem> listToRemove, int numberOfRows) { if (numberOfRows > 2) { var listToChange = WorkflowInputs.Where(c => c.Index == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } }
void RemoveRow(IDataListItem itemToRemove, ref int indexToSelect, ref bool itemsRemoved, List <IDataListItem> listToRemove) { var firstRow = WorkflowInputs.Where(c => c.Index == @"1" && c.Recordset == itemToRemove.Recordset); var removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value)); if (removeRow) { var listToChange = WorkflowInputs.Where(c => c.Index == @"2" && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } }
public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect) { indexToSelect = 1; var itemsRemoved = false; if (itemToRemove != null && itemToRemove.CanHaveMutipleRows) { var numberOfRows = WorkflowInputs.Count(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field); var listToRemove = WorkflowInputs.Where(c => c.Index == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList(); if (numberOfRows == 2) { RemoveRow(itemToRemove, ref indexToSelect, ref itemsRemoved, listToRemove); } else { RemoveRows(itemToRemove, ref indexToSelect, ref itemsRemoved, listToRemove, numberOfRows); } } return(itemsRemoved); }
/// <summary> /// Used for just adding a blank row to a recordset /// </summary> /// <param name="selectedItem">The item that is currently selected</param> /// <param name="indexToSelect"></param> public bool AddBlankRow(IDataListItem selectedItem, out int indexToSelect) { indexToSelect = 1; bool itemsAdded = false; if (selectedItem != null && selectedItem.IsRecordset) { string error; IBinaryDataListEntry recordset; DataList.TryGetEntry(selectedItem.Recordset, out recordset, out error); if (recordset != null) { IList <Dev2Column> recsetCols = recordset.Columns; IEnumerable <IDataListItem> numberOfRows = WorkflowInputs.Where(c => c.Recordset == selectedItem.Recordset); IDataListItem lastItem = numberOfRows.Last(); int indexToInsertAt = WorkflowInputs.IndexOf(lastItem); string indexString = lastItem.RecordsetIndex; int indexNum = Convert.ToInt32(indexString) + 1; indexToSelect = indexToInsertAt + 1; itemsAdded = AddBlankRowToRecordset(selectedItem, recsetCols, indexToInsertAt, indexNum); } } return(itemsAdded); }
/// <summary> /// Used for removing a row for the collection /// </summary> /// <param name="itemToRemove">The item that will be removed from the collection</param> /// <param name="indexToSelect"></param> public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect) { indexToSelect = 1; var itemsRemoved = false; if (itemToRemove != null && itemToRemove.IsRecordset) { // ReSharper disable InconsistentNaming IEnumerable <IDataListItem> NumberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field); // ReSharper restore InconsistentNaming var numberOfRows = NumberOfRows.Count(); List <IDataListItem> listToRemove = WorkflowInputs.Where(c => c.RecordsetIndex == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList(); if (numberOfRows == 2) { IEnumerable <IDataListItem> firstRow = WorkflowInputs.Where(c => c.RecordsetIndex == "1" && c.Recordset == itemToRemove.Recordset); bool removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value)); if (removeRow) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.RecordsetIndex == "2" && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (itemToRemove.RecordsetIndex == item.RecordsetIndex) { IDataListItem item1 = item; indexToSelect = WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset)); } else { indexToSelect = WorkflowInputs.IndexOf(itemToRemove); } itemsRemoved = true; } } } else if (numberOfRows > 2) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.RecordsetIndex == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (itemToRemove.RecordsetIndex == item.RecordsetIndex) { IDataListItem item1 = item; indexToSelect = WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset)); } else { indexToSelect = WorkflowInputs.IndexOf(itemToRemove); } itemsRemoved = true; } } } return(itemsRemoved); }