We appreciate you taking the time to vote and add your suggestions to make our products awesome! Your request will be submitted to the community for review and inclusion into the backlog.

We recommend reviewing what is submitted before posting, in case your idea has already been submitted by another community member. If it has been submitted, vote for that existing feature request (by clicking the up arrow) to increase its opportunity of being added to Cireson solutions.

For more information around feature requests in the Cireson Community click here.

Ability to Add Custom Fields Grid Views/Searches Within the Cireson Portal

Jonathan_BolesJonathan_Boles Customer Ninja IT Monkey ✭✭✭✭

As we have added quite a few custom fields, it would be helpful to allow those fields to be added to the various Grid views within the Cireson Portal. In the meantime, we've used OOB fields that weren't otherwise being utilized and "renamed" them using the localization override. While this works somewhat, it's limited by the small amount of available fields that can be re-purposed.

46
46 votes

Duplicate · Last Updated

This is actually a singular duplicate of https://community.cireson.com/discussion/182 and https://community.cireson.com/discussion/657

Comments

  • Dennis_de_JagerDennis_de_Jager Customer IT Monkey ✭
    Just the ability to search on support groups in Change Requests would be nice for instance. You have my vote.
  • Leigh_KildayLeigh_Kilday Member Ninja IT Monkey ✭✭✭✭

    I've worked around this by updating to v6 and using a SQL Table Widget. With this I can join to the ServiceManger db's class extension tables and add whatever I need. The only issue I've encountered so far is that they don't automatically refresh like regular grids.

    One thing to keep in mind is that the widget doesn't read T-SQL as well as SSMS, and some fields are automatically renamed. For example, SELECT LastModified as [Last Modified] shows no results, but if you remove the "as [LastModified]" part, it returns results and places the space character in the column header.

  • John_VrabelJohn_Vrabel Customer IT Monkey ✭
    Adding custom fields to the "My Work", "My Team Work" and "Active Work" would be nice.  I have created custom fields that show the "Current Activity" or "Affected/Related CI", but I'm not able to add those to those views.
  • Geoff_RossGeoff_Ross Cireson Consultant Super IT Monkey ✭✭✭✭✭
  • John_VrabelJohn_Vrabel Customer IT Monkey ✭
    @Geoff_Ross I submitted SR24651 for this feature request back on 9/2/2015.  Since then I've updated that request 5 times, and finally got a response from an analyst that this thread was the one that needed to be upvoted.. I'll also upvote that existing thread, and use this community forum from now on to request/vote on feature requests. It's been over a year now, so hopefully me adding 1 vote to a thread will give it more visibility?
  • Geoff_RossGeoff_Ross Cireson Consultant Super IT Monkey ✭✭✭✭✭
    @John_Vrabel As per my comment on that thread, you have been heard as you can now do this in v6.
  • John_VrabelJohn_Vrabel Customer IT Monkey ✭
    @Geoff_Ross. I don't want to create custom views.  I have already created Custom Views, but even in Custom Views, I can't use Tokens such as [me] or [group] (if that's correct). I want the ability to add custom columns to the "My Work", "My Team Work" and "Active Work" views.  If this is in Version 6, that's awesome!  I am going to move our DEV environment to Version 6 soon anyways, so i'll see if that new versions has what I need... but based on what I read, I don't think it does.  Thanks for your comments by the way!
  • Adrian_PaechAdrian_Paech Customer Advanced IT Monkey ✭✭✭

    I second John Varbel.

    Custom Views are "ok". But I really feel this functionality should be built into all of the default views (My Work) of the portal.

    I would also like to see this solution complemented with the ability to add the "same" extended class attributes available in the Grid View into the Search Criteria under the search functionality of the portal.

    Cheers,

    Adrian

  • Conrad_ShealyConrad_Shealy Customer IT Monkey ✭
    I would like to add to this request.  We have quite a few extensions that contain important information that would be extremely useful to see in the various views and the search within the portal.
  • Adrian_MataiszAdrian_Mataisz Customer Advanced IT Monkey ✭✭✭
    Anyone came with a custom solution to add custom columns based on class extensions?
  • Jerry_VeldhuisJerry_Veldhuis Customer Advanced IT Monkey ✭✭✭
    @Jonathan_Boles and I came up with a rather creative solution.

    Created a SQL database next to the ServiceManagement database, called Dashboard, then used powershell to pull out all in-progress SRs and create a table called ServiceRequest with basic Id, LastModified,Title etc fields along with some custom extended fields (in our case Office Location). 

    This allowed us to use the database as  source for SQL Tables and SQL Charts and then following https://support.cireson.com/KnowledgeBase/View/1245#/ with some basic kendo knowledge and simple ajax call to provide the data, a kendo grid could be created and embedded in the Cireson Portal.

    Other than some minor kendo tweeks it works fine in both v4.10 and v7.3 of the Cireson Portal.

    Now polishing up a bit more complicated runbook that monitors for recently modified SR/IR and MAs and merges them into Dashboard db which will give us basically real-time updates to the grid view as well as the dashboard charts.

  • Matt_Strachan1Matt_Strachan1 Member IT Monkey ✭
    The grid for Team Requests does not display the SupportGroup (Tier). Is there a simple kendo tweek you could provide that would allow the Tier to be displayed in that specific grid? I have been studing the Assign to Me task on the grid solution to see how it is done but am not finding where the column is added, since Assigned To User is not in the OOB grid. I see how to get the grid object but after that I get lost. I just want to be able to display the Tier. 

            var url = window.location.href;
            // Verify we are on team work or active work page with a gridview.
            if(url.indexOf("f94d43eb-eb42-4957-8c48-95b9b903c631") > -1 || url.indexOf("62f452d5-66b5-429b-b2b1-b32d5562092b") > -1 || url.indexOf("9a06b0af-2910-4783-a857-ba9e0ccb711a") > -1) { 
                //The navigation node doesn't load immediately. Get the main div that definitely exists.
                var mainPageNode = document.getElementById('main_wrapper');
                
                // create an observer instance
                var assignToMeObserver = new MutationObserver(function(mutations) {
                    //The page changed. See if our title exists. If it does, then our gridview should also exist.
                    var titleElement = $(".page_title"); //The title always exists. If this page has a gridview, then it also exists as soon as the title does.
                    
                    if (titleElement.length > 0) { //An element with class of page_title exists.
                        var gridElement = $('[data-role=grid]') // Get the grid object
                        if (gridElement.length > 0) {
                            AddAssignEventHandlersOnGridDataSourceChange(gridElement);
                        }
                        
                        //We are done observing.
                        assignToMeObserver.disconnect();
                    }
                    
                });
                
                // configure the observer and start the instance.
                var observerConfig = { attributes: true, childList: true, subtree: true, characterData: true };
                assignToMeObserver.observe(mainPageNode, observerConfig);
            }
        });

        var AddAssignEventHandlersOnGridDataSourceChange = function(gridElement) {

            var kendoGridElement = gridElement.data('kendoGrid'); //...as a kendo widget
            
            //Whenever the data changes, add assign button again.
            kendoGridElement.bind("dataBound", AddAssignEventHandlers); 
            //Note to self. the dataBound fires after the rows are returned, and dataBinding fires before. 
        }

        var AddAssignEventHandlers = function() {
            //find column index with assigned user
            $('thead > tr > th').each(function(index) {
                var link = $(this).find('a').next('a');
                if(link.text() === "Assigned User") {

                    // add assign to me button
                    $('tbody > tr').each(function(index2) {
                        //Don't add button to Review Activities
                        if (!($(this).children('td').eq(1).text().indexOf("RA") > -1)) {
                            var assignedElem = $(this).children('td').eq(index);
                            if (!(assignedElem.text() == session.user.Name)) {              
                                assignedElem.append('<a onclick="AssignToMe(this)" title="Assign to me" class="pull-right"><img src="/Content/Images/Icons/ActionLogIcons/recordassigned.png" /></a>');
                            }                   
                        }
                        
                    })

                    return false;
                }
            });
        }
    })(); // the parentese here cause the anonymous function to execute and return
This discussion has been closed.