© Daniel Curtis 2019
Daniel CurtisPractical Oracle JEThttps://doi.org/10.1007/978-1-4842-4346-6_3

3. Support Ticket Application

Daniel Curtis1 
(1)
Birmingham, UK
 

In the first two chapters, we explored some issues with enterprise applications related to usability and how shortfalls in the usability of an application can ultimately decrease the productivity of end users. Oracle JET was outlined as a solution, and we have covered the basics of what makes up the Oracle JET toolkit.

Throughout the remainder of this book we will be building on the skills you have picked up from Chapter 2, to implement a functional application in JET. The application will be a support ticket system, which is often a system that people turn to when they are having difficulties with other systems or processes.

Support ticket systems for large companies can handle thousands of tickets a day, with many users and multiple levels of priorities, all at different stages in their support process. As users of a support ticket system are likely to be slightly more frustrated than average, it is important to get the user experience right. Waiting that few extra seconds for a support ticket to load, or difficulties finding tickets, could ultimately be the tipping point for losing business.

You will be building the application from the perspective of a user, and so that you are able to concentrate on Oracle JET, you will not have to worry about setting up a database or service layer. Instead, the book will provide mock data in the form of JSON payloads to get you started. You will, of course, be free to extend the application to include more functionality or write your own services to consume, if you desire.

This chapter will walk through the design for this system and includes low-fi mock-ups of how the system will look.

Scope

Before we delve into building the functionality of the system, we will first spend this chapter outlining the scope of the application. This will put you in a good position to begin setting up a JET application for the first time (in Chapter 4). Up until this point, you have been working with JSFiddle examples. Going forward you will be expected to scaffold your own JET application locally on your PC. Chapter-by-chapter versions of the code will be available on GitHub, if you get stuck.

The JSON data payloads for Chapter 3 will be made available on GitHub. Throughout the book, they will also be given at the start of the chapter in which they are used.

The APIs will be mocked using a tool called mock-server . Mocking end points can be really useful for front-end application development for a few reasons.
  • We can quickly get the front end up and running, without the need to worry about setting up services and database environments.

  • Front- and back-end developers can agree on the set structure of the end points up front, and the front-end developers can start building the UI straight away, instead of having to wait for the back-end developers to implement the service layer. This can greatly speed up the development process, and, provided the structure of the real end points matches the mock, they should be able to swap them over when the real ones are ready.

  • Mocking is great for unit testing. It can sometimes be really difficult to replicate some scenarios with the real data set. Mocking the data means you have full control and can mock out all scenarios in your testing.

The functionality that you will have built by the end of this book can be broken down into the following:
  • Viewing list of tickets: Viewing the list of outstanding tickets for a user

  • Searching for tickets: Inline data searching to provide quick “as you type” searching, so users can get to their tickets faster

  • Viewing selected ticket: Viewing a ticket and all of its replies chronologically

  • Replying to existing tickets: A What You See Is What You Get (WYSIWYG) editor to reply to existing tickets

  • Creating new tickets: Using a WYSIWYG editor to create new tickets

  • Closing Tickets: Closing a ticket and specifying a reason why

  • Escalating ticket priority: Escalating the priority of a ticket after the ticket has been created

  • Rating tickets: Using one of the visualization components to rate tickets

  • Attachments: To aid with support for ticket resolution, users can attach files to tickets using the ojFilePicker component.

Some of the libraries that will be explored throughout the book are
  • Trumbowyg: Used for the text areas as a WYSIWYG editor

  • Jasmine / Karma: Used for unit testing the application

  • Signals: Used to send signal events between different modules

Page Skeleton

The layout of the application will follow a standard three-column application layout. The left-hand column will be used for viewing and filtering open tickets, and the main content area will show the selected ticket and all its information. The box in the main section on the right will contain metadata about the selected ticket, such as information on the person assigned to the ticket, any ticket history, and rating information.

There will be a total of two menu bars. The main menu bar will hold the application logo, main menu navigation, and user information. The second menu bar will hold ticket-related actions, such as adding a new ticket and the tabs of the open tickets.

Note that the logged-in user text at the top right is in a more natural language format. This has been added to keep with the theme of improving the user experience. A simple change such as using natural language, can make the application feel a little friendlier, which, in turn, will make the user feel happier. Natural language additions such as this work great if an application is looking to adopt some sort of AI interface too, such as integrating the Oracle Digital Assistant Service into the UI.

We will be using a tab component for the main content area. This is so that users can have multiple tickets open at the same time. Having this kind of multitasking will be beneficial to bigger companies that have a lot of different support tickets open, or even for a support representative who will be dealing with multiple tickets and may have to keep several tickets open concurrently. The page skeleton is illustrated in Figure 3-1.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig1_HTML.jpg
Figure 3-1

Skeleton of application mock-up

Ticket List

The leftmost pane of the application will contain a list of tickets, as shown in Figure 3-2. This list will be searchable using quick inline searching, which will give the user a “search as you type” experience. The search functionality will be built as a Web Component, giving it the full benefits of the Web Component architecture, which we will explore more later in the book.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig2_HTML.jpg
Figure 3-2

Ticket list mock-up

Viewing a Ticket

Selecting a ticket from the list will open the ticket in a new tab in the main content section. Each ticket will be assigned to a new tab, and the currently visible ticket will be highlighted in the list on the right-hand side.

The ticket view itself will show information about the current status of the ticket and options to escalate the priority of the ticket and close the ticket. Escalating the priority will move the ticket up one level, and users will be informed of this when they click the button. Before closing a ticket, users will be shown a pop-up asking them to confirm their action.

The first message displayed for a ticket will be the original support message raised by the customer; this will include the avatar of the user, the user’s full name, attachment (if available), and their message. Following the original message will be all the replies by both support representatives and the user, all in the same format. Any notes from the user will be displayed on the left-hand side, whereas the support representatives’ replies will be on the right. The amount of time since each note was posted is also shown.

To the right of the notes, users will be able to see information about their support representative, including a small bio and their average rating. The aim of this to reassure customers that they are in safe hands. Figure 3-3 shows selected ticket 10006 in focus.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig3_HTML.jpg
Figure 3-3

View ticket mock-up

Replying to Tickets

At the bottom of each open ticket (see Figure 3-4), there will be a box in which users can reply, using a WYSIWYG editor. The editor will be implemented using a third-party plug-in. The idea here is not to have a rich editor that permits images, HTML, etc., just a simple editor that can handle line spaces and some basic formatting.

Users will be able to upload an attachment with their comment, such as an image to aid with the support incident.

Clicking the Reply button at the top of a ticket will move the focus down to the reply box, so that it is easy for a user to get to the reply box on really long tickets.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig4_HTML.jpg
Figure 3-4

Ticket replying mock-up

Closing and Rating Tickets

Once users have received a satisfactory outcome to their support ticket, they will be able to self-close the ticket. To do this, they must click the Close Ticket button at the top of the screen, as shown in Figure 3-5.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig5_HTML.jpg
Figure 3-5

Ticket buttons

Clicking the Close Ticket button will show a dialog window asking users to confirm that they want to close the ticket. Figure 3-6 illustrates the ticket closure dialog, with a drop-down list to specify a closure reason.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig6_HTML.jpg
Figure 3-6

Close ticket confirmation mock-up

Once they confirm, the ticket will then be closed, and the status of the ticket updated. The buttons at the top of the ticket will disappear and are switched instead to a rating component, with which users can rate their experience with the support assistant, as shown in Figure 3-7.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig7_HTML.jpg
Figure 3-7

Rating a closed ticket

Creating a New Ticket

Clicking the Create Ticket button at the top right of the screen will cause the create ticket section to slide down. Here, the user will be able to fill out four fields to create a new ticket. The fields that will be shown are as follows:
  • Title: The name of the ticket. Required field.

  • Priority: Drop-down limited to values between 1 and 5, 1 being the highest priority. Required field.

  • Issue Summary: A longer description to be used for detailing the issue. Required field.

  • Upload attachment: Option to upload an attachment to the ticket when it is first created. Not Required.

Figure 3-8 illustrates how the create ticket section will look. The section will slide down and push the rest of the content farther down the page, making the ticket creation the primary focus to the user.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig8_HTML.jpg
Figure 3-8

Create a new ticket dialog mock-up

Notifications

Notifications generated by the application will be shown in a box at the bottom right-hand corner of the screen. (See Figure 3-9). For example, if there is an error with the action a user is trying to perform, an error message will be shown. Success messages will also be displayed here, and the component we will use provides the means to easily set the type of notification.

Notifications will be global, and they can be dismissed by the user, by clicking the cross next to them.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig9_HTML.jpg
Figure 3-9

Notifications mock-up

Searching for Tickets

As briefly mentioned, users will have the ability to quickly search for tickets using a “search as you type” search box at the top of the ticket list. Search as you type gives users a better experience. It is similar to autocomplete on Google, in that it will start returning results to the user almost instantly, meaning their item may appear before they even finish typing a word. Combine that with not having a search button to press, and the time and effort for a user to find what they are looking for is greatly reduced.

Note in Figure 3-10 that the full search term has not been typed, yet the user can already see the item he or she is trying to search for.
../images/468546_1_En_3_Chapter/468546_1_En_3_Fig10_HTML.jpg
Figure 3-10

Searching mock-up

Summary

This chapter has provided an overview of the screens we will be building using the mock-ups provided, and it has also explored their functionality. Make sure that you have a good understanding of the expected functionality before moving on.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.5.239