Understand basic text mode for views

Last update: 2024-02-20
  • Created for:
  • Intermediate
    User
TIP

In this video, you will learn:

  • What text mode is
  • What camel case is
  • Some basic “plug and play” text mode you can use in your views
 Transcript

Hi, welcome to Basic Text Mode for Views. In this video you’ll learn what text mode is, what camel case is, and some basic plug and play text mode you can use in report views. If you already know what text mode and camel case are, you can skip right to the Plug and Play section of this video. It starts at the Show Parent Task in a View slide. Many report writers use text mode in Adobe Workfront because they’ve exhausted their resources with the standard builder, and in some cases still don’t have the report they need or want. Although text mode is not a cure-all solution, it does allow you to get around some of the limitations that you may be experiencing through the standard builder. Let’s click on New View here. Now you’ve seen how columns and views are created in the standard builder by clicking on New Column and then using a drop-down menu to select the available field. The standard builder simplifies the reporting tool, but because of that simplification it can be limited. It actually doesn’t have all the fields that could be used in this list here. That’s why you may want to look to text mode to expand your options. The system reads the information you put into the standard builder and puts it into a code for Workfront to read. This is text mode. All of the same components are there. They just look different. The thing to keep in mind when working with text mode is that fields are written in what is called camel case. That means the field is written with a mixture of upper and lower case letters and no spaces. Workfront uses camel case to string words together in text mode. And most of the time what you find in the standard builder would be similar in camel case. For instance, this is how planned completion date looks in the standard mode. And here’s what it looks like in camel case. Here’s budget status in standard and here’s budget status in camel case. There are some fields in the standard builder that have a camel case equivalent that doesn’t follow these rules exactly. But they’re usually pretty easy to recognize and they still refer to the standard builder field. For example, duration in minutes is duration minutes in camel case. And external reference ID is X ref ID in camel case. A list of fields can be found in the API Explorer. You can learn more about the API Explorer in the advanced reporting tutorials in Experience League. And that’s a good place to go to find a link to the API Explorer. The advanced reporting tutorials teach you more about text mode than we can do here. They contain five and a half hours of video instruction and a manual that you can download. Here we’ll just show you some handy text mode code you can plug and play without having to take the advanced course. Here are a couple of plug and play text mode blocks. The first one is to show parent tasks in a view. And we’re going to create a view called for parents view. Some organizations use many levels of subtasks. In some cases, subtasks may have the same names and you can only accurately identify them by the parent tasks that they’re associated with. Suppose your boss comes to you with a request that you create a task view that will show tasks based on all the parents of the task up to four generations back. The view we will create looks like this. Now we’re going to create the view. To do that, we’ll first go here and choose new view. Now what we want to have is over to the left of task name, we want to have the parent of the task, the parent of the parent to the left of that, and going on back to the four generations. So we can either remove these other columns that we don’t need and start out with a new column. So I’m going to do that to start with. And then I’m also going to show you how to just edit these columns to change them into the columns that you want. Just to give you a little more information here. Okay, so we’re adding the first column. This is going to be the parent of the task. And the parent of the task, actually, you don’t need text mode to do that. But the reason we need the text mode is to view the parent of the parent and on up. So here, we just type parent. So you’ve got the task and then there’s the parent of the task here. So under parent, we’re going to go down to name. I’ll just type parent name. It’ll be a little easier. Make sure you get it from the parent object. And we’ll move it over here. Now we’re ready to do the next. Let’s say that we’re just going to take planned hours. Just to text mode. Click to edit and we’re just going to remove all of this text mode code. And now we need to go to Experience League and get the code block. Okay, so we’ll scroll down here. And get the parent of parent name. Copy that. Text mode code and paste it in here. Save it. And we’re going to move this over to the left. I’ll do the same again. It’s a good idea to delete all of this text mode code just so you don’t accidentally not paste over everything and have anything in here except the code that you want. If you don’t have the text mode code in here perfectly, then it just won’t work and it won’t necessarily tell you what the problem is. It will just not give you any results. Okay.

So you notice as I’m getting this last piece of code here that there’s a screenshot showing what this should look like. So we’ve got the parent name and the parent of parent, etc. There are lots of other things that you can plug and play with here. And as you can see as we scroll down there, they’re available also over here. And each group that goes together has got a screenshot with it. So hopefully it’s easy for you to browse through here and see things that will be useful for you. Copy that. Paste it. And we’ll delete these last two columns that we don’t need. Of course you can leave these other columns in here if you want or put other things in here. Columns that you create through the builder. We’re going to do this in name. And save it. Okay. We’re done. There it is. I hope you enjoy using these plug and play code blocks.

Task - 4 parents view

Create a column for the Task Name and the Parent Name first, then use the following text mode to create the other three columns.

Task - Parent of Parent Name

displayname=Parent of Parent Name
linkedname=parent
namekey=view.relatedcolumn
namekeyargkey.0=parent
namekeyargkey.1=name
querysort=parent:parent:name
textmode=true
valuefield=parent:parent:name
valueformat=HTML

Task - Parent of Parent of Parent Name

displayname=Parent of Parent of Parent Name
linkedname=parent
namekey=view.relatedcolumn
namekeyargkey.0=parent
namekeyargkey.1=name
querysort=parent:parent:parent:name
textmode=true
valuefield=parent:parent:parent:name
valueformat=HTML

Task - Parent of Parent of Parent of Parent Name

displayname=Parent of Parent of Parent of Parent Name
linkedname=parent
namekey=view.relatedcolumn
namekeyargkey.0=parent
namekeyargkey.1=name
querysort=parent:parent:parent:parent:name
textmode=true
valuefield=parent:parent:parent:parent:name
valueformat=HTML

A screen image showing the 4 parents view

User - Iterations showing lists in user views

User - All job roles

displayname=All job roles
listdelimiter=<p>
listmethod=nested(userRoles).lists
textmode=true
type=iterate
valuefield=role:name
valueformat=HTML

User - All job roles showing primary

displayname=All Job Roles showing primary
listdelimiter=<p>
listmethod=nested(userRoles).lists
textmode=true
type=iterate
valueexpression=IF({user}.{roleID}={role}.{ID},CONCAT("** ",{role}.{name}," **"),{role}.{name})
valueformat=HTML

User - All teams

displayname=All teams
listdelimiter=<p>
listmethod=nested(teams).lists
textmode=true
type=iterate
valueexpression={name}
valueformat=HTML
NOTE

There is a Team field accessible through the UI that shows all teams, comma separated, but using the text mode above will show each team on a separate line.

User - All groups

displayname=All groups
listdelimiter=<p>
listmethod=nested(userGroups).lists
textmode=true
type=iterate
valuefield=group:name
valueformat=HTML

User - All groups showing home group

displayname=All groups showing home group
listdelimiter=<p>
listmethod=nested(userGroups).lists
textmode=true
type=iterate
valueexpression=IF({user}.{homeGroupID}={group}.{ID},CONCAT("** ",{group}.{name}," **"),{group}.{name})
valueformat=HTML

User - Direct reports

displayname=Direct reports
listdelimiter=<p>
listmethod=nested(directReports).lists
textmode=true
type=iterate
valueexpression={name}
valueformat=HTML

User - Future PTO

displayname=Future PTO
listdelimiter=<br>
listmethod=nested(reservedTimes).lists
namekey=group.plural
textmode=true
type=iterate
valueexpression=IF({startDate}>$$TODAY,CONCAT({startDate}," - ",{endDate}),"")
valueformat=HTML
width=150

A screen image showing the User lists view

Task - How to display task assignments and working on status

displayname=Assignments and Status
listdelimiter=<br>
listmethod=nested(assignments).lists
namekey=group.plural
textmode=true
type=iterate
valueexpression=CONCAT({assignedTo}.{name},IF(ISBLANK({assignedTo}.{name}),"",IF({status}="AA"," - Requested",IF({status}="AD"," - Working"," - Done"))))
valueformat=HTML
width=150

A screen image showing the Assignments and Status view

Task - How to show role and allocation on multiple task assignments

Task - Role + hours

displayname=Role+hours
listdelimiter=<li>
listmethod=nested(assignments).lists
textmode=true
type=iterate
valueexpression=CONCAT({role}.{name}," (",round({workRequired}/60,2),")")
valueformat=HTML

Task - Assignment + percent allocation

displayname=Assignment+percent
valueexpression=CONCAT({assignedTo}.{name}," (",{assignmentPercent},")")
listdelimiter=<li>
listmethod=nested(assignments).lists
valueformat=HTML
textmode=true
type=iterate

A screen image showing the Assignments and Roles view

Task - Cross-project predecessors and successors

Task filter (optional)

Show me all tasks that have at least one cross-project predecessor or at least one cross-project successor on current projects

predecessorsMM:ID_Mod=notblank
predecessorsMM:projectID=FIELD:projectID
predecessorsMM:projectID_Mod=ne
project:statusEquatesWith=CUR
project:statusEquatesWith_Mod=in
OR:1:project:statusEquatesWith=CUR
OR:1:project:statusEquatesWith_Mod=in
OR:1:successorsMM:ID_Mod=notblank
OR:1:successorsMM:projectID=FIELD:projectID
OR:1:successorsMM:projectID_Mod=ne

Task - Show predecessor names and project predecessor is in

displayname=Predecessor names
listdelimiter=<br>
listmethod=nested(predecessors).lists
namekey=group.plural
textmode=true
type=iterate
valueexpression=CONCAT("TASK = ",{predecessor}.{name}," >> PROJECT = ",{predecessor}.{project}.{name})
valueformat=HTML
width=150

Task - Show successor names and project successor is in

displayname=Successor names
listdelimiter=<br>
listmethod=nested(successors).lists
namekey=group.plural
textmode=true
type=iterate
valueexpression=CONCAT("TASK = ",{successor}.{name}," >> PROJECT = ",{successor}.{project}.{name})
valueformat=HTML
width=150

Task - Show projected completion date of predecessors

displayname=Predecessor projected completion dates
valueformat=atDate
listdelimiter=
textmode=true
width=90
stretch=0
valuefield=predecessor:projectedCompletionDate
type=iterate
listmethod=nested(predecessors).lists
shortview=false

Task - Show progress status of predecessors

displayname=Predecessor progress status
listdelimiter=<br>
listmethod=nested(predecessors).lists
shortview=false
stretch=0
textmode=true
type=iterate
valueexpression=IF({predecessor}.{progressStatus}="OT","On Time",IF({predecessor}.{progressStatus}="LT","Late",IF({predecessor}.{progressStatus}="BH","Behind","At Risk")))
valueformat=HTML
width=90

Task - Show percent complete of the cross-project predecessor’s project

displayname=Predecessor project percent complete
listdelimiter=<br>
listmethod=nested(predecessors).lists
namekey=group.plural
textmode=true
type=iterate
valueexpression=IF({isCP}=true,CONCAT({predecessor}.{project}.{percentComplete},"%"),"")
valueformat=HTML
width=150

A screen image showing the cross-project predecessors and successors view

Task - Iteration showing all of the people assigned and who assigned each one

displayname=All assignees and requesters
listdelimiter=<p>
listmethod=nested(assignments).lists
textmode=true
type=iterate
valueexpression=CONCAT("Assigned To: ",{assignedTo}.{name},"; Requested By: ",{assignedBy}.{name})
valueformat=HTML

A screen image showing all of the people assigned and who assigned each one

Task/Project - Iteration showing all custom forms on a project or task

displayname=All Forms Assigned
listdelimiter=<p>
listmethod=nested(objectCategories).lists
textmode=true
type=iterate
valuefield=category:name
valueformat=HTML

A screen image showing all custom forms on a project

Project - Iteration showing all primary contacts for resolvables in project view

displayname=Requestor
listdelimiter=<br>
listmethod=nested(resolvables).lists
namekey=group.plural
textmode=true
type=iterate
valuefield=owner:name
valueformat=HTML
width=150

A screen image showing primary contacts for resolvables

Project - Iteration showing all project team members

displayname=Project Team Members
listdelimiter=<br>
listmethod=nested(projectUsers).lists
namekey=group.plural
textmode=true
type=iterate
valuefield=user:name
valueformat=HTML

A screen image showing all project team members

Project - Iteration showing the entryDate of all resolvable issues for a project

displayname=Resolvables entry date
linkedname=direct
listdelimiter=<br>
listmethod=nested(project.resolvables).lists
listsort=string(description)
querysort=description
section=0
textmode=true
type=iterate
valuefield=entryDate
valueformat=HTML

A screen image showing the entryDate of all resolvable issues for a project

Project - Show the home group of the original project requestor

displayname=Requestor home group
linkedname=direct
namekey=name
querysort=convertedOpTaskOriginator:homeGroup:name
textmode=true
valuefield=convertedOpTaskOriginator:homeGroup:name
valueformat=HTML

A screen image showing the project requestor home group

Project - Show if the project is a request queue

querysort=queueDef:isPublic
valueformat=val
description=0 (None), 1 (Public), 2 (Private), 3 (Company), 4 (Group)
linkedname=direct
textmode=true
enumtype=PROJ
valuefield=queueDef:isPublic
namekey=status
type=enum
enumclass=com.attask.common.constants.ProjectStatusEnum
displayname=Public Selection

A screen image showing if the project is a request queue

Issue - Iteration showing all resolve project team members

displayname=Resolve Project: Team Members
listdelimiter=<br>
listmethod=nested(resolveProject.projectUsers).lists
namekey=group.plural
textmode=true
type=iterate
valuefield=user:name
valueformat=HTML
width=150

A screen image showing all resolve project team members

Issue - Iteration showing all teams of the issue’s primary contact

displayname=Requestor Teams
listdelimiter=<br>
listmethod=nested(owner.teams).lists
namekey=group.plural
textmode=true
type=iterate
valuefield=name
valueformat=HTML
width=150

A screen image showing all primary contact teams

Document - Iteration showing folder in a document report

displayname=Folder
listdelimiter=<br><br>
listmethod=nested(folders).lists
textmode=true
type=iterate
valuefield=name
valueformat=HTML

A screen image showing folder in a document report

Document - Iteration showing parent folder in a document report

displayname=Parent Folder
listdelimiter=<br><br>
listmethod=nested(folders).lists
textmode=true
type=iterate
valuefield=parent:name
valueformat=HTML

A screen image showing parent folder in a document report

Document - Document approval dates

displayname=Document approval dates
valueformat=HTML
listdelimiter=<br>
linkedname=direct
textmode=true
listsort=string(description)
valuefield=approvalDate
type=iterate
listmethod=nested(approvals).lists
shortview=false
section=0

A screen image showing the document approval dates view

Proof Approvals

Proof Approval - Show project name

displayname=Project Name
textmode=true
valuefield=documentVersion:document:project:name
valueformat=HTML

Proof Approval - Show task name

displayname=Task Name
textmode=true
valuefield=documentVersion:document:task:name
valueformat=HTML

A screen image showing the project and task of a proof approval

On this page