[contrib-guide] Adding GUI guidelines section to UX content
Change-Id: I511455217593b3fbd59672e37010ad76dc9d3caf Closes-bug: #1603420
This commit is contained in:
parent
4a6d8b05f7
commit
977a1e92bd
@ -21,7 +21,6 @@ and techniques in the following sections:
|
||||
:maxdepth: 2
|
||||
|
||||
ux-ui-guidelines/ux-personas.rst
|
||||
ux-ui-guidelines/gui-guidelines.rst
|
||||
ux-ui-guidelines/ui-text-guidelines.rst
|
||||
|
||||
.. TODO ux-ui-guidelines/gui-guidelines.rst
|
||||
|
||||
|
241
doc/contributor-guide/source/ux-ui-guidelines/gui-guidelines.rst
Normal file
241
doc/contributor-guide/source/ux-ui-guidelines/gui-guidelines.rst
Normal file
@ -0,0 +1,241 @@
|
||||
==============
|
||||
GUI guidelines
|
||||
==============
|
||||
|
||||
Principles
|
||||
~~~~~~~~~~
|
||||
|
||||
The following principles describe concepts that help drive GUI development.
|
||||
They are also designed to avoid common issues.
|
||||
|
||||
.. note::
|
||||
|
||||
The following principles are recommendations only, it is at your discretion
|
||||
whether or not to use and implement these guidelines.
|
||||
|
||||
For the purpose of this document, and to avoid confusion, the following
|
||||
terms will be defined:
|
||||
|
||||
Modal
|
||||
A modal window is a graphical control element subordinate to an
|
||||
application's main window.
|
||||
Workflow
|
||||
A workflow that describes the steps to complete an action.
|
||||
|
||||
|
||||
Design to scale
|
||||
---------------
|
||||
|
||||
Your designs should reflect production environments rather than development
|
||||
environments.
|
||||
For example, a production environment can have fifty images rather than the
|
||||
three included in devstack. Using a control that is appropriate for three
|
||||
images can impact the usability associated with production environments.
|
||||
|
||||
For example:
|
||||
|
||||
* Instances: 2,000
|
||||
* Images: 50
|
||||
* Projects: 2,000
|
||||
* Users: 1,000
|
||||
* Operators: 8
|
||||
* Regions: 8
|
||||
|
||||
Use cases
|
||||
---------
|
||||
|
||||
Open source developer-driven projects do not always consider the end user when
|
||||
creating products. Educating and helping novices to complete a resource is
|
||||
vital. There are two assumptions within the community:
|
||||
|
||||
#. Novices users require a GUI
|
||||
#. Advanced users use a CLI or API
|
||||
|
||||
Ensure workflows provide enough information for users to drive the decision-
|
||||
making process. We recommend referring to the OpenStack personas when
|
||||
designing and creating. The personas are:
|
||||
|
||||
* :ref:`arnie-infrastructure-arch`
|
||||
* :ref:`carlos-cloud-ops`
|
||||
* :ref:`doug-domain-operator`
|
||||
* :ref:`pei-project-owner`
|
||||
* :ref:`alan-app-developer`
|
||||
|
||||
Specific use case interfaces vary based on the individual use case.
|
||||
For example, a GUI may be appropriate to launch 1-x of the same instance, but
|
||||
difficult for multiple instances that are different.
|
||||
|
||||
See :ref:`ux-personas` for more information.
|
||||
|
||||
Mandatory parameters
|
||||
--------------------
|
||||
|
||||
Mandatory parameters are the minimum parameters required to create a resource.
|
||||
This is especially important for complex nested resources, like load balancers
|
||||
or networks. Mandatory parameters allow users to create resources without
|
||||
being intimidated by a significant number of steps. We suggest creating the
|
||||
top level resource and then send the user to the network details page.
|
||||
|
||||
The 80% rule is a software framework that ensures 80% of use cases are
|
||||
easy to implement, and 20% of use cases are difficult to implement. We
|
||||
recommend using mandatory parameters to encourage designers and developers
|
||||
to keep to the 80% rule when creating a workflow.
|
||||
|
||||
.. note::
|
||||
|
||||
Using mandatory parameters assumes that users are able to add
|
||||
parameters in the resource.
|
||||
|
||||
|
||||
Patterns
|
||||
~~~~~~~~
|
||||
|
||||
The following patterns provide GUI frameworks to assist designers and engineers
|
||||
to create interfaces that are consistent across OpenStack products.
|
||||
|
||||
For example, the horizon project chooses to use ``bootstrap``.
|
||||
See `Styling in Horizon (SCSS) <http://docs.openstack.org/developer/horizon/topics/styling.html>`_
|
||||
for more information.
|
||||
|
||||
Cancel buttons
|
||||
--------------
|
||||
|
||||
On modals, the cancel button should be located at the bottom left and
|
||||
the ``X`` to close should be located at the top right.
|
||||
|
||||
Modal error messages
|
||||
--------------------
|
||||
|
||||
When canceling a modal that has forms that are partially completed,
|
||||
we recommend a warning should be displayed at the top center of the modal.
|
||||
|
||||
.. note::
|
||||
|
||||
Any error message displayed should be inside the corresponding modal to
|
||||
avoid GUI conflicts.
|
||||
|
||||
A red background and a warning icon on the top left are also recommended.
|
||||
|
||||
For more information on guidelines for UI text, see:
|
||||
`<http://docs.openstack.org/contributor-guide/ui-text-guidelines.html>`_.
|
||||
|
||||
Wizards
|
||||
-------
|
||||
|
||||
A software wizard presents a workflow and helps users through it. The
|
||||
``Back`` and ``Next`` buttons should be located at the bottom and to the
|
||||
right of the modal, but to the left of the create button. The ``Back``
|
||||
button should be disabled, instead of invisible. Initially, the ``Create``
|
||||
button should remain disabled until the mandatory parameters have been
|
||||
provided. All required items should have an asterisk on the right.
|
||||
|
||||
Page errors
|
||||
-----------
|
||||
|
||||
Any error messages should be displayed on the upper right corner of the
|
||||
browser. A counter should be displayed for error messages that persist for
|
||||
a certain number of seconds. All error messages should close by pressing
|
||||
the ``X`` on the upper right corner of the message.
|
||||
|
||||
.. note::
|
||||
|
||||
The error message height should vary to fit the content.
|
||||
|
||||
For more information on guidelines for UI text, see:
|
||||
`<http://docs.openstack.org/contributor-guide/ui-text-guidelines.html>`_.
|
||||
|
||||
Actions
|
||||
-------
|
||||
|
||||
Global actions should align to the top right and be placed on the top
|
||||
of the table. For example, the ``Launch Instance`` button is a global
|
||||
table action.
|
||||
|
||||
Batch actions, which apply to single or multiple rows, should align to
|
||||
the left and be above the rows' checkboxes.
|
||||
|
||||
Control actions should align to the right of the row. In addition,
|
||||
checkboxes should align to the left of each row and be used for deleting
|
||||
single or multiple rows.
|
||||
|
||||
Search
|
||||
------
|
||||
|
||||
There are typically two search box types within GUIs. There is the global
|
||||
search, which applies to all pages, and local (panel) search box, which
|
||||
searches within pages. We recommend global search boxes be located in the
|
||||
masthead, and the local (panel) search be located within the page.
|
||||
|
||||
.. note::
|
||||
|
||||
Using the search boxes interchangeably can cause confusion as it is not always
|
||||
clear what is being searched.
|
||||
|
||||
Icons
|
||||
-----
|
||||
|
||||
We recommend using the following icons from
|
||||
`Font Awesome <http://fontawesome.io>`_ with the corresponding meaning.
|
||||
|
||||
|
||||
`Create <http://fontawesome.io/icon/plus/>`_
|
||||
The create icon is used for global actions, such as launch instance or
|
||||
create volume. No other icons, such as ‘upload to cloud’, should be
|
||||
used with global actions.
|
||||
|
||||
`Delete <http://fontawesome.io/icon/trash/>`_
|
||||
The delete button should be used with any destructive actions
|
||||
including, global, batch, and control actions.
|
||||
|
||||
`Warning <http://fontawesome.io/icon/exclamation-triangle/>`_
|
||||
Use the warning icon to ensure the user is aware that data will be
|
||||
lost if they proceed with an action. For example, canceling out of a
|
||||
modal even if the user has completed some of the forms. In addition,
|
||||
it should indicate that a resource is unusable. For example, use the
|
||||
warning icon to indicate that a flavor cannot be used because all
|
||||
available quota for a project has been consumed.
|
||||
|
||||
Expand and collapse
|
||||
The following icons should be used to allow users to either expand or
|
||||
collapse when viewing additional information for a resource. This icon
|
||||
should be used instead of the ``+`` and ``-`` icons.
|
||||
`Expanded <http://fontawesome.io/icon/chevron-down/>`_
|
||||
`Collapsed <http://fontawesome.io/icon/chevron-right/>`_
|
||||
|
||||
`Help <http://fontawesome.io/icon/question-circle/>`_
|
||||
Use the help icon when referring the user to additional
|
||||
content that provides additional information.
|
||||
|
||||
Download and upload files
|
||||
These icons should be used when the user is either uploading a file,
|
||||
such as an image, or downloading files, such as a key pair. However,
|
||||
it should not be used for global actions such as launching an instance.
|
||||
`Download <http://fontawesome.io/icon/download/>`_
|
||||
`Upload <http://fontawesome.io/icon/upload/>`_
|
||||
|
||||
`Cancel <http://fontawesome.io/icon/times/>`_
|
||||
The cancel icon should be used for any actions where the user would
|
||||
want to exit a workflow. For example, when you are exiting a wizard,
|
||||
there should be an ``X`` in the top right of the modal.
|
||||
This icon should not be used for destructive actions, such as delete.
|
||||
|
||||
`Search <http://fontawesome.io/icon/search/>`_
|
||||
Whether searching globally or within a panel, the search icon
|
||||
should always be on the inside and aligned to the left of any
|
||||
text boxes.
|
||||
|
||||
Accessibility
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
We recommend using :abbr:`ARIA (Accessible Rich Internet Applications)`
|
||||
when developing content to ensure accessibility is accounted for
|
||||
appropriately.
|
||||
|
||||
ARIA defines ways to make web content and web applications, especially those
|
||||
developed with Ajax and JavaScript, more accessible to people with
|
||||
disabilities.
|
||||
For example, ARIA enables accessible navigation landmarks, JavaScript widgets,
|
||||
form hints and error messages, live content updates, and more.
|
||||
|
||||
For more information, visit: `<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA>`_.
|
||||
|
Loading…
Reference in New Issue
Block a user