예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
             }
         }
     }
 }
예제 #5
0
        /// <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);
        }
예제 #6
0
 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;
         }
     }
 }
예제 #7
0
        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;
                }
            }
        }
예제 #8
0
        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);
        }
예제 #10
0
        /// <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);
        }