Two well sheltered ports inside the Gironde estuary. The approach is dangerous in strong winds from the W or SW on the ebb.
The estuary is formed by the mouths of the Garonne and Dordogne rivers, and allows access to Bordeaux and on to the Mediterranean via the inland route.
Position 45° 36'09"N, 01° 04'31"W (Royan)
The Royan harbour area is large with plenty of marina berths and moorings. There is also a new marina just S of Port Bloc on the opposite shore.
The town of Royan itself provides all facilities and services of a popular holiday resort, and forms a useful jumping off point for cutting across Biscay to Bilbao.
Port Medoc lies on the southern side of the estuary. Take care is entering at night as immediately inside the breakwaters are a series of unlit green buoys at the base of the wall and a single unlit red buoy marking the end of a floating barrier. The marina is usually pretty crowded.
Last updated August 2015.
[Show additional 1 entries for this category]


Student Tax Rebates offers specialised and directed advise for students. Complete the online form and our tax expert will work on getting you a tax rebate.
Please fill out the form below and we'll get back to you shortly with a rebate.
We will do a full and detailed review of your tax accounts within two week.
We will send out details fo the tax rebate you are entitled to based on your overpaid tax and you will recieve a tax rebate from revenue within 2 weeks
"This is fantastic! Thanks so much guys!"
"Bootstrap is amazing. I've been using it to create lots of super nice landing pages."
"Thanks so much for making these free resources available to us!"
We're here to help and answer any question you might have. Looking forwar to hearing from you.
Drop me a line at!
086 160 5003


Enterprise Solutions
We research, design, implement and deliver software products that meet your request as a customer.
We offer reliable solutions.
We design robust architectures.
We respect and follow the clean code principles.
We deliver your projects as soon as possible.
Mail Us
Our Community
A platform aimed at presenting our competencies to the open source world without waiting for a response.
Join our Discord Channel


Trivia Game!
Pick a category and enjoy!
Category
Play!
More Categories!
Question:
Click to reveal answer.
Back to Categories
Next Question


Collarless USGS Topographic Maps at a 1:250000 scale are available for download. These maps are georeferenced in the UTM Zone 12 North, NAD83 projected coordinate system.Click on a Quad Number link below to begin download process.
| Quad Number |
Quad Name |
Center, UTM NAD83 |
Center*, County |
| Q0303 |
Brigham City |
4596211N 332981E |
BOX ELDER |
| Q0319 |
Ogden |
4594280N 458204E |
CACHE |
| Q1103 |
Tooele |
4485198N 330436E |
TOOELE |
| Q1119 |
Salt Lake City |
4483276N 499937E |
WASATCH |
| Q1135 |
Vernal |
4484236N 627049E |
UINTAH |
| Q1903 |
Delta |
4374201N 327943E |
MILLARD |
| Q1919 |
Price |
4372291N 499937E |
CARBON |
| Q1935 |
Grand Junction |
4373245N 628917E |
UINTAH |
| Q2703 |
Richfield |
4263220N 325503E |
BEAVER |
| Q2719 |
Salina |
4261325N 499937E |
EMERY |
| Q2735 |
Moab |
4262272N 630746E |
SAN JUAN |
| Q3503 |
Cedar City |
4152256N 323117E |
IRON |
| Q3519 |
Escalante |
4150377N 499937E |
KANE |
| Q3535 |
Cortez |
4151316N 632534E |
SAN JUAN |
* Shows the Utah county that is at the quads centeroid, or if centroid is not available, a county that intersects the quad. |


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Northern Centre For Advanced Technology Inc.
Legal Name:
Northern Centre For Advanced Technology Inc.
Operating Name:
NORCAT - Northern Centre For Advanced Technology Inc.
Mailing Address:
1545 Maley DrSUDBURY, Ontario
P3A 4R7
Location Address:
1545 Maley DrSUDBURY, Ontario
P3A 4R7
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Full profile
Full profile
Contact information
Company description
541690 - Other Scientific and Technical Consulting Services
611420 - Computer Training
611710 - Educational Support Services
Product / Service / Licensing
NORCAT provides turn-key training, site access and security solutions for industry. With the swipe of a card, NORCATs Site Access System and allows the individual access to the site and the security RFID system allows for tracking of vehicles, property and contractors while on property.
Site Access Kiosk features include:
Training tracked through site access cards
Training expiration reports
Allows for employer updating and contact notification
Location requirements
Instructions for non-compliancy
RFID features include:
Vehicle, individual and asset tagging
Currently on property and company traffic reports
Controlled mechanical entry
Emergency vehicle tagging and auto-entry
Restricted individual notification
Employees can instantly take advantage of the features and availability of eLearning through the reliability of NORCAT. NORCAT offers a host of occupational health and safety courses.
Visit www.norcattraining.com for more info
The two-hour program focuses on:
1.The safety rules and proper working practices for construction workers, and
2.The general rules of conduct and work etiquette required of contractors working on company properties.
NORCAT's Computer-Based Training materials ensure that the quality of the training program remains consistent.
NORCAT's central database offers clients easy access to accurate training documentation.
A successfully trained participant receives a NORCAT Contractor Pass. The NORCAT security pass allows the holder access to properties of participating companies.
Training Offered:
Workplace health and safety training
Generic & site-specific WHMIS (ongoing)
Spills response (site-specific)
Chemical toxicology
Air monitoring for Joint Health and Safety Committee (JHSC) members
Site specific hazard awareness training for certified JHSC members
Confined space awareness
Confined space entry
Respirator use & care (including self-contained breathing apparatus)
Specific hazard awareness training (PCB handling, Asbestos awareness)
Transportation of dangerous goods for drivers
Transportation of dangerous goods for shippers
Transportation of dangerous goods for receivers
General laboratory safety
Office safety awareness
The layout is ideal for equipment and vehicles, accessible from two surface level entrances (Adits) in the side of the landscape, as opposed to drilling down into the earth. Higher elevations in the mine provide natural ventilation and drainage, with no need for water pumps or hoists.
The Underground Centre has been used for promotional photography of mining tools, equipment and machinery in an underground environment, as well as a filming location for TV and music videos.
Our qualified personnel will work with you to develop company- or site-specific training to fulfil your particular training needs. This includes program development, script writing, graphic design, multimedia features, testing, assessment of practical hands-on skills, and end user technical support. We can also develop support materials, including instructor manuals, student handbooks, and health and safety posters.
Whatever the format, NORCAT will deliver a consistent quality of training that will give your personnel the knowledge they require to perform their jobs safely.
This is what NORCAT offers an array of entrepreneurship educational programs and online resources to help you answer your complex questions at your own time, at your own pace, and in a format that works best for you. Visit www.norcat.org for more info.
Finding and engaging the right people at the right time to be part of your team or involved with your company is the single most important decision that will determine your path forward. Understanding how to recruit, retain, compensate, and motivate prospective or existing talent can be overwhelming and time-consuming thats where we can help.
Product technical design, engineering, and development
Custom mechanical, electrical, and control system fabrication and assembly
Product testing services for harsh and extreme environments
3D printing, CNC machining, and rapid-prototyping
General mentorship and advisory services including new market opportunity evaluation and product management
In addition, our state-of-the-art NORCAT Underground Mine Testing Centre offers resources and equipment to support our clients interested in testing their technologies in an operating mine environment.
Given the vastness and complexity of the global capital landscape, be it dilutive or non-dilutive capital, we encourage you to do your own research and connect with your mentors to learn about the different funding vehicles in our community and beyond. We have outlined some of the key sources of capital in the NORCAT ecosystem.
THE NORCAT COMMONS:
The NORCAT Commons is a creative and dynamic place designed for entrepreneurs to work together and share ideas to accelerate the growth of their scalable and sustainable businesses. Being a member of the NORCAT Commons means you have a flexible month-to-month, co-location working space that brings you together with other like-minded entrepreneurs to share ideas, enhance your network, and discuss challenges and opportunities to help you expedite the growth of your business. To join this group and have an address in one of Canadas leading innovation centres, you must first connect and engage with a NORCAT Mentor.
THE NORCAT INCUBATOR:
As you continue to grow and scale your business, you will undoubtedly need to graduate to more formal, dedicated, longer-term office and / or shop space to accommodate your evolving staff and business needs. Similar to the NORCAT Commons, the NORCAT Incubator is dedicated space, but offers more privacy for clients that are still keen to participate and work with others in our vibrant ecosystem.
THE NORCAT LONG-TERM RESIDENCY PROGRAM:
The NORCAT Long-Term Residency Program is designed for our larger, flagship anchor tenants that play an active role in our innovation, commercialization, and entrepreneurial ecosystem. These tenants often require greater than 5,000 square feet of space and are engaged on a multi-year contract. If your business is interested in being in our ecosystem, having close proximity and access to other high quality entrepreneurial endeavours, and committed to contributing to a dynamic community, then reach out to us and will we schedule a follow up meeting with you.
Market profile
Alliances:
- Financial
- Sales/Marketing
- Technology
Geographic markets:
Export experience:
- Kenya
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
541690 - Other Scientific and Technical Consulting Services
611420 - Computer Training
611710 - Educational Support Services
Products, services and licensing
Product / Service / Licensing
NORCAT provides turn-key training, site access and security solutions for industry. With the swipe of a card, NORCATs Site Access System and allows the individual access to the site and the security RFID system allows for tracking of vehicles, property and contractors while on property.
Site Access Kiosk features include:
Training tracked through site access cards
Training expiration reports
Allows for employer updating and contact notification
Location requirements
Instructions for non-compliancy
RFID features include:
Vehicle, individual and asset tagging
Currently on property and company traffic reports
Controlled mechanical entry
Emergency vehicle tagging and auto-entry
Restricted individual notification
Employees can instantly take advantage of the features and availability of eLearning through the reliability of NORCAT. NORCAT offers a host of occupational health and safety courses.
Visit www.norcattraining.com for more info
The two-hour program focuses on:
1.The safety rules and proper working practices for construction workers, and
2.The general rules of conduct and work etiquette required of contractors working on company properties.
NORCAT's Computer-Based Training materials ensure that the quality of the training program remains consistent.
NORCAT's central database offers clients easy access to accurate training documentation.
A successfully trained participant receives a NORCAT Contractor Pass. The NORCAT security pass allows the holder access to properties of participating companies.
Training Offered:
Workplace health and safety training
Generic & site-specific WHMIS (ongoing)
Spills response (site-specific)
Chemical toxicology
Air monitoring for Joint Health and Safety Committee (JHSC) members
Site specific hazard awareness training for certified JHSC members
Confined space awareness
Confined space entry
Respirator use & care (including self-contained breathing apparatus)
Specific hazard awareness training (PCB handling, Asbestos awareness)
Transportation of dangerous goods for drivers
Transportation of dangerous goods for shippers
Transportation of dangerous goods for receivers
General laboratory safety
Office safety awareness
The layout is ideal for equipment and vehicles, accessible from two surface level entrances (Adits) in the side of the landscape, as opposed to drilling down into the earth. Higher elevations in the mine provide natural ventilation and drainage, with no need for water pumps or hoists.
The Underground Centre has been used for promotional photography of mining tools, equipment and machinery in an underground environment, as well as a filming location for TV and music videos.
Our qualified personnel will work with you to develop company- or site-specific training to fulfil your particular training needs. This includes program development, script writing, graphic design, multimedia features, testing, assessment of practical hands-on skills, and end user technical support. We can also develop support materials, including instructor manuals, student handbooks, and health and safety posters.
Whatever the format, NORCAT will deliver a consistent quality of training that will give your personnel the knowledge they require to perform their jobs safely.
This is what NORCAT offers an array of entrepreneurship educational programs and online resources to help you answer your complex questions at your own time, at your own pace, and in a format that works best for you. Visit www.norcat.org for more info.
Finding and engaging the right people at the right time to be part of your team or involved with your company is the single most important decision that will determine your path forward. Understanding how to recruit, retain, compensate, and motivate prospective or existing talent can be overwhelming and time-consuming thats where we can help.
Product technical design, engineering, and development
Custom mechanical, electrical, and control system fabrication and assembly
Product testing services for harsh and extreme environments
3D printing, CNC machining, and rapid-prototyping
General mentorship and advisory services including new market opportunity evaluation and product management
In addition, our state-of-the-art NORCAT Underground Mine Testing Centre offers resources and equipment to support our clients interested in testing their technologies in an operating mine environment.
Given the vastness and complexity of the global capital landscape, be it dilutive or non-dilutive capital, we encourage you to do your own research and connect with your mentors to learn about the different funding vehicles in our community and beyond. We have outlined some of the key sources of capital in the NORCAT ecosystem.
THE NORCAT COMMONS:
The NORCAT Commons is a creative and dynamic place designed for entrepreneurs to work together and share ideas to accelerate the growth of their scalable and sustainable businesses. Being a member of the NORCAT Commons means you have a flexible month-to-month, co-location working space that brings you together with other like-minded entrepreneurs to share ideas, enhance your network, and discuss challenges and opportunities to help you expedite the growth of your business. To join this group and have an address in one of Canadas leading innovation centres, you must first connect and engage with a NORCAT Mentor.
THE NORCAT INCUBATOR:
As you continue to grow and scale your business, you will undoubtedly need to graduate to more formal, dedicated, longer-term office and / or shop space to accommodate your evolving staff and business needs. Similar to the NORCAT Commons, the NORCAT Incubator is dedicated space, but offers more privacy for clients that are still keen to participate and work with others in our vibrant ecosystem.
THE NORCAT LONG-TERM RESIDENCY PROGRAM:
The NORCAT Long-Term Residency Program is designed for our larger, flagship anchor tenants that play an active role in our innovation, commercialization, and entrepreneurial ecosystem. These tenants often require greater than 5,000 square feet of space and are engaged on a multi-year contract. If your business is interested in being in our ecosystem, having close proximity and access to other high quality entrepreneurial endeavours, and committed to contributing to a dynamic community, then reach out to us and will we schedule a follow up meeting with you.
Market
Market profile
Alliances:
- Financial
- Sales/Marketing
- Technology
Geographic markets:
Export experience:
- Kenya


Canada’s inefficient, biased and manual bail process results in thousands of legally innocent individuals being unnecessarily detained and the overrepresentation of certain communities in pre-trial detention.
detained in pre-trial custody last year
spent on custody supervision last year
SmartBail accurately and objectively assesses pre-trial risk, giving decision-makers the insight to process individuals awaiting bail quickly, fairly, and at a significantly lower cost to taxpayers.
Accurately assess the likelihood an individual released on bail will fail to appear or be charged with a new offence.
Process bail cases faster, more efficiently use legal aid resources, and reduce the burden on pre-trial detention centres.
Reduce bias in Canada’s bail system and provide additional protection for vulnerable and legally innocent people.
Users are prompted to fill in information about the individual that our data analysis has found to correlate with the risk of being charged with new offenses or failing to appear to hearings.*1
Users can quickly and easily fill in the individual’s background information into our platform.
Our application processes this background information through its algorithm and instantly generates an accurate assessment report of the individual’s pre-trial risk.
Our application provides a detailed and fully transparent explanation of why it arrived at an assessment, empowering decision-makers with actionable insights.*2
SmartBail is built by a team of legal and technology experts on a mission to improve the efficiency and equity of our bail system.
Founder & CEO
Fahad is a lawyer called to the Bar of Ontario with common and civil law degrees from McGill University. He is an experienced social entrepreneur and previously worked on a technological solution for the Access to Justice problem in Canada’s legal system. Fahad spends his free time studying machine learning and learning to code.
Lead Engineer
Ardalan is an engineer and an experienced AI developer with a Master of Computer Science degree from Simon Fraser University. He was selected to participate in the exclusive Next 36 program provided by NEXT Canada. In his spare time, Ardalan teaches courses on machine learning.
Contact us today to set up a pilot in your location.


Nadine Gutiérrez Pociño
-
Role: Artist / Audio
-
Age: 19 y.o.
-
From: Sant Vicenç de Castellet
-
Github: Nadine044
My work
As the artist of the team I have been commissioned to create new artistic content based on sprites already created belonging to Final Fantasy Tactics
Advance (GBA, 2003). I also chose the soundtrack that we would use and the sfx, also belonging to the original game.
In the design phase of the game (GDD development) we decided to make a game with a dynamic which offers the player to move in eight directions during
the quests levels. This led me to accept the decision to create four other directions for each character and enemy, because the original game only
offered four of them. This is what took me most of the time during the development of the project.
I participated actively in the other subjects offered by the degree, the manager, who had some time to help some member of the team, helped me to
finish the enemies that were missing so that I could dedicate myself to other small artistic tasks that did not need so much time and I could do a lot
of them and faster.
It was good for me to start doing various art, I felt more involved in the project because I was not only the person who creates the enemies, I also
fulfilled some request of some team member when they needed some basic sprites, such as a treasure chest or a portal. I also had more freedom to touch
up any sprite improvised by other team member, then I would take a look and re-do it.
Here we can see the different characters and enemies with their diagonals (original sprites) and with their frontal, lateral and back views (created by me).
I personally enjoied making this enemy. I like the original design.
This is the final boss of the second quest. It took me more time than the other enemies because of his different attack phases.
During the design phase I also proposed to have a good narrative that supported the game, so I offered to design it according to the quests system we had
talked about. What I offered was a story based on the basis of the "Hero's Journey" model. At first everyone liked it and we decided to push it forward,
but as the project progressed details appeared that some members did not like, so we decided to change it a bit and omit
some details. Even so, it still maintains the initial structure.
Finally I made the introductory video to the game, where the player is shown the main objective that he has, which is to rescue his friend. Besides being
an introduction to the game, it is an introduction to the narrative so that the player does not feel lost from the first minute he starts playing.


Veteran republican Dickie Glenholmes dies after lengthy illness
GERRY Adams has paid tribute to veteran republican Richard 'Dickie' Glenholmes, who died on Monday after a lengthy illness.
Originally from the Short Strand area of east Belfast, Mr Glenholmes was imprisoned twice for IRA activity, including a lengthy jail sentence in England.
His daughter Eibhlin was once also the most wanted woman in Britain and was a recipient of a so-called 'on the run' letter.
Former Sinn Féin leader Gerry Adams said he was a "proud Ballymacarrett man who dedicated his life to the republican cause".
"In the hard years when the British imprisoned him without trial and he was locked away for years in England he kept the faith. So did Lily," he said.
Subscribe to our most read headlines in the evening newsletter
"A republican in her own right, Lily was the perfect partner to Dickie and a wonderful grounded and strong Irish woman.
"Dickie believed in freedom and in equality. And when the opportunity was created to achieve republican objectives through peaceful and democratic means he embraced it.
"He was also a husband, a father, grandfather and great grandfather who loved his family. To his wife Lily, his children Eibhlin, Richard, Damien and Michelle and to their families I want to extend our deepest condolences," he added.


Every aspect of the simulation can be customised. This is handled through JSON formatted configuration files. These files must contain three elements:
Configuration files are JSON objects. The basic structure is shown below, the internal structure of each section will be described separately. There are no optional elements.
{
"patient_config" : { },
"ward_config" : [ {}, {}, ...], //one element per ward
"simulation_config" : { ... }
}
The transfer_probability
object describes the edges in a graph were nodes are wards and edges are patient transfers. The weight of each edge is the probability that a patient in the source ward will be transferred to the target ward. It must ultimately be possible for all patients to reach the (virtual) Exit ward.
resource_limits
, wait_limits
and attention_limits
have the same structure. They provide the parameters for poisson distributions (the lambda) used to generate the resource/ staff time need and stay duration required for each patient in each ward. The min and max parameters clamp the possible generated values. Importantly, the settings for the Pool and Exit wards must not be changed. The Exit ward is not described in the wait_limits
object because the limit must be set to Javascript Infinity
, which is not possible in JSON.
The batch_arrival_*
properties parameterise the poisson distrubution controlling the arrival rate at A+E. Per simulation step, this distribution is used to determine the number of new patients arriving.
transfer_probability
, resource_limits
, wait_limits
, attention_limits
and initial_ward
are entirely determined by the configuration file and cannot be changed by users. For all other settings, the configuration file sets the default but users are not restricted to your settings.
"patient_config" : {
"transfer_probability" : {
"Emergency":[
{"name":"Observation","weight":0.8},
{"name":"Medical","weight":0.15},
{"name":"Surgery","weight":0.05}
],
"Observation":[
{"name":"Medical","weight":0.3},
{"name":"Exit","weight":0.7}
],
"Medical":[
{"name":"Surgery","weight":0.2},
{"name":"Exit","weight":0.8}
],
"Surgery":[
{"name":"Recovery","weight":1}
],
"Recovery":[
{"name":"Exit","weight":1}
]
},
"resource_limits" : {
"Emergency" : {
"min" : 1,
"max" : 10,
"lambda" : 10
},
...
"Exit" : {"min":1,"max":1}, //do not change
"Pool":{"min":1,"max":1} //do not change
},
"wait_limits" : {
"Emergency" : {
"min" : 1,
"max" : 10,
"lambda" : 10
},
...
"Pool":{"min":1,"max":1} //do not change
},
"attention_limits" : {
"Emergency" : {
"min" : 1,
"max" : 10,
"lambda" : 10
},
...
"Pool":{"min":1,"max":1} //do not change
},
"max_transfers" : 10, //to prevent infinitely long visits
"max_patients" : 200, //limit number of patients that can be generated
"batch_arrival_min" : 0,
"batch_arrival_max" : 2,
"batch_arrival_lambda" : 5,
"initial_ward" : "Emergency" //patients will always arrive here from the Pool
}
ward_config
is a list of objects, with one object per ward (except Exit and Pool which cannot be configured). resource_distribution
can be one of "divide_evenly", "highest_first", "biased_highest_first" or "lowest_first". accept_overflow
can either be "always" or "never".
queue_policy
must be the name of a queue object. The default options are "MaxPQ" (highest need first), "MinPQ" (lowest need first) and "SimpleQueue" (first come, first served). Custom queue types that implement different policies can be added, see below.
begin_boarding_after
is currently only used by the simulator for the Emergency ward.
All settings apart from fill_colour
can be changed by the user, all you can set is the default.
"ward_config" : [
{
"name" : "Emergency",
"capacity" : 50,
"resources" : 50,
"resource_distribution" : "divide_evenly",
"accept_overflow" : "never",
"fill_colour" : "#F6D8AE",
"queue_policy" : "MaxPQ"
},
...
]
queue_policy
must be the name of a queue object that conforms to a simple API. To extend the simulator with an additional queue type, the new queue class must at least provide the methods shown. Queue objects are used extensively in the simulation and so new queues should be as performant as possible to avoid slowing down the simulation.
function MyNewQueue(max_size){
this.max_size = max_size //this is currently always set to Infinity
this.add = function(el){
//add a Patient object to the queue
//do not accept a duplicate patient
}
this.next = function(){
//return the Patient object at the front of the queue
}
this.length = function(){
//return the current length of the queue
}
}
emergency_wait_target
is the maximum length of time patients should have to wait in A+E before being admitted to another ward, definied as the number of simulation steps. *_cost
is the price per unit of each of the ward parameters.
Costs cannot be edited by the user. All other options can be changed be the user and the configuration file only sets the default.
"simulation_config" : {
"steps" : 100, //steps until simulation ends
"emergency_wait_target" : 15,
"staff_cost": 50,
"resource_cost": 10,
"bed_cost": 100
}


Sun Web Application Guidelines - Version 4.1
|
| Search Guidelines | Send Feedback | Developers.sun.com |
| [ Table of Contents | 0 Revision History | 1 Introduction | 2 Visual Design | 3 Windows and Pages | 4 Mastheads | 5 Top-Level Navigation | 6 Content Area | 7 Simple Elements | 8 Complex Elements | 9 Tables | 10 Topology | 11 Contextual Help | 12 Search | 13 Wizards | 14 Alerts and Messages | 15 Progress Indicators | 16 Alarms and Status Indicators | 17 Login Page | 18 Version Page | Appendices ] |
How To Use These Guidelines - An Introduction
7.2 Elements Used for Choosing Data, Performing Actions, and Navigating
7.2.1 Elements Used for Choosing One Value
<IP_ADDRESS> Standard Drop-Down Menu
<IP_ADDRESS>.1 General Drop-Down Menu Behavior
7.2.2 Elements Used for Choosing One or More Values
<IP_ADDRESS> Multiple Selection Scrolling List
7.2.3 Elements Used for Performing Actions and Navigating
This chapter addresses the design of simple user interface elements that are used in similar ways across applications.
When using the user interface elements described in this chapter and elsewhere in these guidelines, remember to use them with cultural considerations in mind. For example, applications must be able to format and display time, date, and calendar data according to local cultural conventions.
To ensure that cultural considerations are addressed when using user interface elements, follow the guidelines in Appendix H, Globalization Requirements.
For most elements, there is an enabled (normal state), a noneditable (read-only) state where the value is applicable but the user cannot change it, and a disabled (not applicable) state for when a value for that field does not apply to the current situation. For fields which do not show a data value, such as buttons and jump menus, the only applicable states are enabled and disabled. The possible appearances are documented for each type of field.
For more information on the placement of read-only fields within a page, see 6.8.1 Noneditable User Interface Elements.
Generally, use buttons for actions and use hyperlinks for navigation.
There are
three main action button styles:
The appearance of each button type will vary depending on the button's state and/or its use. The following table shows state appearance for Primary and Secondary buttons. See 7.1.4 Iconic Buttons for more information about iconic buttons.
The primary button's unique appearance indicates that it is the most commonly used button within a page or panel. (A panel is a unit within the page which the user operates within and closes. See 9.5.3 Table Preferences for an example of a table panel). The primary button's uniqueness helps to guide users through a task by helping them find the button most likely to help them accomplish the task.
Only the main button within a page or panel can use the primary button style. The only time a given page might contain more than one primary button is if the main button on the page is a primary button and the page contains a panel that includes a primary button.
If the main button in the page or panel "group" consists of only one button, that button is virtually always a primary button.
All buttons associated with a particular field or section should be secondary buttons.
Use caution when making destructive actions, such as Delete, primary buttons. However, if the user is mostly likely to click this button, and it is the main button on the page or panel, it can be the primary button.
A disabled button is a button that users cannot use in the current context, but the button can be used if the context changes. The implication is that the user can enable the button by taking some action, such as selecting a row or an item in a list.
Do not use a disabled button if it will never become enabled. Instead, just do not display the button.
For example, if security restricts access to a button, hide it instead of displaying it as disabled.
This guideline does not apply, however, to a series of pages, as in a wizard, where the button might
not apply on the current pane but will apply on other panes. Therefore, the disabled button should
be shown for consistent button layout throughout the series.
Default buttons, buttons that are activated automatically when users press the Enter key, are not provided in the Sun Common UI Component Library (in open source, the Project Woodstock components).
If desired, default button behavior can be developed independent of the Sun Common UI Component Library (in open source, the Project Woodstock components).
If default button behavior is provided, the following guidelines apply:
On a Login page, default button behavior should be developed and associated with the primary button.
Other situations where it may be useful to provide default button behavior for a primary button include:
Iconic buttons (buttons without any text label) are created based on the context in which they are used. See 2.4 Icons for more information about iconic buttons.
Buttons with icons only for labels must have text associated with them in the HTML attributes Alt and Title.
Use the HTML Alt and Title attributes to
assign an alternative text description and tool tip. These attributes help users who are unclear about the
meaning of the icon and are critical for users who use screen readers.
The button design supported by these guidelines uses a styled HTML form button.
This implementation allows for localization, unlike using a graphic.
For detailed information on the layout and use of the various button types
within a content page, see 6.5.2 Content Page
Action Buttons.
For detailed information on the layout and use of buttons
in a wizard, see 13.1 Anatomy.
Note: Although this section discusses labels for actions represented as buttons, these guidelines also apply to labels of actions represented via other user interface elements, such as drop-down menu commands or embedded table actions. See 6.5 Content Area Actions for information about representing actions using different user interface elements.
Apply headline capitalization to all button labels (see 2.5
Text Capitalization).
Use button labels according to the guidelines in the following table.
| Standard Label | Button Description | Additional Guidelines |
|---|---|---|
| Add | Adds an existing item or items to a group. | Use this button to initiate adding an object, and then the OK button to complete the action. Do not replace an OK button with an Add button. It becomes unclear whether that button takes users elsewhere to add the object, or whether that button dismisses the current page. |
| Browse | Selects a file from the local file system using a hierarchical display of the file system. | When using the browse idiom to select files from the local file system, let the browser's platform-specific functionality provide its own button next to the text field. This technique automatically uses the platform-specific browse window for choosing the file. |
| Browse Server | Selects a file or folder from the server's file system using a hierarchical display of the file system. | This button invokes a custom browse window that allows the selection of files or folders on the server. Note that communication with the server is a potentially heavyweight operation. For an example, see 8.5.2 File Chooser Element. |
| Cancel | Returns to the previous page or state without making any changes, discarding any user input. | In some situations, such as where the user might lose a large amount of input data, present a confirmation alert before allowing a Cancel action. Also, when the meaning of the action is not clear, additional and/or different text may be used, such as "Cancel Wizard" and "Return to Wizard." |
| Delete | Deletes the selected item completely so that it no longer appears among the possible choices. | Generally, confirm a Delete action with a JavaScript alert message if the deletion cannot be easily reversed. Note the distinction from the Remove button. Also, if at all possible, do not require users to delete and then recreate objects in order to rename them. See Rename for more information. |
| Edit | Modifies the selected item or items. |
Use this button to initiate editing an object, and then the OK button to complete the action. Do not replace an OK button with an Edit button. It becomes unclear whether that button takes users elsewhere to edit the page's content, or whether that button dismisses the current page. |
| Go | Jumps to a specific page of a paginated table. | This button is not needed for jump menus because they exhibit jump menu behavior, in which the action associated with the menu item is performed when users select that menu item. |
| Next, Previous, Finish | In wizards, navigating forward, backward, and to complete the wizard action, respectively. | See Chapter 13, Wizards. |
| New | Create a new object. | Use this button to initiate creating a new object, and the OK button to complete the action. The "New" button label can be combined with a noun for clarity, for example, "New Server." However, generally do not add a noun to New buttons when in a table whose title already includes that noun (such as "New Filesystem" in a table titled "Filesystems"). Note the distinction from the Add button. |
| OK | Returns to the previous page or state after completing a particular action. | Use capital letters for "OK" (not "Ok" or "Okay"). If users can perform only one action, label the window's action button "OK," though a more specific label is preferable (except for Add or Edit button labels). If more than one button in a window performs an action, do not label any of those buttons "OK". Each button should have a label that clearly indicates the specific action that will be initiated when the button is clicked. |
| Remove | Removes the reference to the selected item from the list. | This button does not delete the item from the system, but just removes a reference to the item so that the list (from which the item is being removed) no longer includes any reference to the item. Note the distinction from the Delete button. For an example, see 8.2 Add-and-Remove Idiom. |
| Rename | Allows users to rename the selected object. |
Allow users to rename objects easily. Do not make users explicitly delete an object and then recreate it in order to change its name or fix a typographical error. If the system can simply rename the property then it should do that. If instead the system must delete the property and create a new one, but the user does not need to know that, then hide that complexity from the user. If the user must know that deletion and creation are being done when the user clicks Rename, display a confirmation message that explains what will happen and allows the user to abandon the action. An example of this might include when other objects that depend on the object being deleted will break as soon as this object is deleted, and creating the new object can't automatically be a seamless substitute. Another example might be when there are database references to the object being deleted and all references cannot be programmatically updated. However in this case, consider using a system-defined unique name for each object and provide a human-readable alias that users can edit. |
| Reset | Resets all values shown on the page to the values shown when the user first viewed that page. | Use this button when there are many fields on the page, when there are lots of default values that users might want to retrieve, or when the user will be prompted about saving their data when going to another tab (to allow the user a way to remove unintended changes and continue). Do not include a Reset button on trivially small pages containing only one or two fields. Always confirm the Reset action with a JavaScript alert message before discarding the current data. Explain that the page is reset to the values it displayed when it was first loaded. Order the page buttons OK (or Save), then "Reset," then "Cancel." See 6.6.1 Saving Changes on Primary-Content Pages and 6.7.1 Saving Changes on Secondary-Content Pages for more information. Note that this is not the standard HTML/HTTP reset action that you get from the <input type="reset"> tag and that this tag should not be associated with any Reset button used within an application. |
| Restore Defaults | Resets all values shown on the page to default values. Values are not saved until the user explicitly saves them (e.g. by clicking an OK or Save button). | Use this button when there are many fields on the page, or when there are default values that users might want to retrieve. Always confirm the Restore Defaults action with a JavaScript alert message before discarding the current data. Order the page buttons OK (or Save), then "Restore Defaults," then "Cancel." See 6.6.1 Saving Changes on Primary-Content Pages and 6.7.1 Saving Changes on Secondary-Content Pages for more information. Note: Using the term "Restore Defaults" should usually be fine. However, if an application supports restoring specific types of defaults, qualification can be added to the label. For example, if an application supports restoring factory defaults, use the label "Restore Factory Defaults." |
| Save | Commits all changes made on the page during this 'edit session' to the server, but remains on the current page in the same editing state. | Alternatively, label the button "Save Changes" when the context is not clear. However, do not use both buttons on one page because users might think the buttons have different meanings. Note that actions on the page may cause a reload of the page (for example, sorting or filtering a table), but changes are not actually committed until the Save button is clicked. |
| Search | Searches for data in the system (for example, in a database), whether or not the data is already displayed on the current page. | Searching is different than the browser's "Find" function (which looks for a text string only on the currently displayed page). See <IP_ADDRESS> Global Quick Search: Application-Wide Text Search for more information. |
| Submit Job | Starts a job. | Do not use "Submit" alone as users may not understand that a job will be started. "Submit" could easily be confused with OK, whereas "Submit Job" clearly conveys that a job will be started. (See Submit in the table of forbidden button labels below.) For print jobs, use "Print." |
Never use button labels from the following table.
| Forbidden Button Label | Substitute Button Label |
|---|---|
| Abort | Cancel or Stop (Use "Cancel" if work done already will be backed out. Otherwise, use "Stop.") |
| Create | New. The "New" button label may be combined with a noun for clarity, such as "New Server." |
| Clone | Duplicate |
| Help | Provide help in one or more of the following ways:
|
| Kill | Cancel or Stop (Use "Cancel" if work done already will be backed out. Otherwise, use "Stop.") |
| Modify | Edit |
| Quit | Exit |
| Submit | For submitting a job to a batch or back-end processing subsystem, use Submit
Job |
If a button merely initiates an action that is later completed in a secondary-content page or a pop-up window, notify users by placing ellipsis points (...) after the button text. An example of a button that would always use ellipsis points would be the "Browse Server..." button.
This requirement applies only to text in buttons. Ellipsis points are not used in iconic buttons.
For example, after clicking a "Print..." button, users are presented with a dialog page in which they specify the printer location, how many copies to print, and so forth. In contrast, a "Print" button that prints one copy to the default printer without displaying a dialog page should not have ellipsis points.
Do not use ellipsis points in buttons that fully specify an action, even if that action opens a pop-up window. In this case, opening the pop-up window is the result of the action.
For example, a "View Properties" button should not have ellipsis points if
the resulting secondary-content page or pop-up window displays the properties
that the user requested. Ellipsis points are inappropriate because the pop-up
window is not used for specifying an action, but is instead the result of carrying out the requested action.
This section discusses several elements that allow users to choose one or more data values in fields within a page, elements that allow users to perform actions, and simple elements that allow users to navigate. This section does not cover choosing entire rows of data, which is a topic covered in 9.3 Selection in Tables or more advanced means of navigation, covered in Chapter 5, Top-Level Navigation.
Use a particular element for choosing data only if the requirements listed for that element are satisfied. Note whether ALL or ANY of the listed values must be satisfied.
Subsequent sections provide details about appropriate uses for these elements.
A checkbox is the simplest user interface element for choosing data.
Use a checkbox only if ALL of the following are true:
Otherwise, use radio buttons or a drop-down menu to explicitly show all the possible values to the user, and to permit the user to select from amongst all the possible acceptable values.
Place a label to the right of the checkbox.
Display the checkbox label according to the guidelines specified in 7.3.1 Labels.
Apply headline capitalization to all checkbox labels (see 2.5 Text Capitalization).
Allow users to select a checkbox by clicking on either the box itself or its label.
Do not use Checkboxes to trigger immediate actions (i.e. submitting the page, hyperlinking, or opening a window) unless the action is solely for purposes of redrawing the same page to facilitate interactivity (i.e. showing additional information) on the same apparent page whose edits remain uncommitted and in-progress (from the user's perspective).
Instead, use Buttons to trigger immediate actions.
Note that many checkboxes do not trigger actions but set boolean flag variables for an action to be performed later (see 2nd example). These are not triggers of immediate actions at all. This guideline does not apply to such situations.
When checkboxes are used in an aligned, labeled set of fields (i.e. on a Property Page), each checkbox must have BOTH a normal label on the left and a description of the checked state on the right. Exception: if the checkbox is in a set of related options, use a single normal label on the left to label the whole set (top-align the label to the set).
When checkboxes are used in an aligned, labeled set of fields (i.e. on a Property Page), and when checkboxes are used to indicate enabled, on, active, or similar concepts describing system or object state, then these rules apply:
Use a set of radio buttons if ALL of the following are true:
When these conditions are met, radio buttons are preferable to drop-down menus because all the possible options are always visible.
If you need to represent <none selected>, add an additional radio button for this purpose. For example, a radio button labeled "Unknown" or "None" could be added.
Place each radio button label to the right of the radio button.
Display the radio button labels according to the guidelines specified in 7.3.1 Labels.
Apply headline capitalization to all radio button labels (see 2.5 Text Capitalization).
Allow users to select a radio button by clicking on either the button itself or its label.
Follow the guidelines in 6.7 Secondary-Content Page Layout and Use to determine how to position a set of radio buttons on a page with other user interface elements (for example, on a page that allows users to view, edit, and save changes to an object's properties).
When you can clarify the meaning of the radio button set, label the set on the left and align the label with the topmost radio button. However, never provide a label only to the left of a radio button or to the left of each radio button in a set. See the example at the beginning of this section.
Display the radio buttons using a vertical layout if space is available.
A vertical layout is most commonly used when icons are associated with the radio buttons to help users more easily identify the desired selection. For example:
When vertical space is limited, use a horizontal layout for the radio buttons.
A horizontal layout is usually less visually clear than a vertical layout, so users have more difficulty scanning the options. If you use a horizontal layout, include sufficient space between the options to avoid confusion about which radio button is associated with which text label. However, keep the options close enough to visually indicate that they form a distinct set of radio buttons.
For example:
Also consider laying out radio buttons in columns (with the order of the options running down the first column, then down the second column, and so on).
Drop-down menus are also known as:
There are two types of drop-down menus specified in these guidelines: standard menus and jump menus. These menu types exhibit different behavior and have a different appearance. The standard menu is described in this section.
Standard menus are the type of menu used to simply choose a data value. Standard menus are not used to perform actions or allow simple navigation. For this, use a jump menu (see <IP_ADDRESS> Jump Menus). The selections in standard drop-down menus should usually be nouns, not verbs.
A standard drop-down menu looks like this:
Standard menus exhibit typical menu behavior in that when a user selects an item, the menu closes and the selected item is shown. Note that sometimes when a value is selected, additional information or UI elements may be displayed, or existing elements may be enabled or disabled. This does not mean that a jump menu should be used. A change such as this is considered more of a side-result of choosing a particular value. Only when the selection explicitly performs an action or explicitly navigates to another page or view would a jump menu be used.
Use a standard drop-down menu if ALL of the following are true:
Place a label to the left of all standard drop-down menus, as is done with other entry fields, according to the guidelines specified in 7.3.1 Labels. Do not include the label within the drop-down menu itself.
This placement differs from the jump menus as described in <IP_ADDRESS> Jump Menus.
Apply headline capitalization to the labels of standard menus (see 2.5
Text Capitalization).
If the user is not required to make a selection from a standard menu, include a blank option and select it by default if that most accurately reflects the system's current state. The user may choose something else or may keep the blank option (assuming it is selected). (If you need to be more specific than using blank, insert some text within parentheses for this option. For example, make "(No Color)" a selectable item in a list of color choices.) Below is an example of of a standard menu with a blank option selected:
If the user must make a selection from a standard menu, choose an appropriate default value from the list of options. If there is no appropriate default value, include (and select by default, if appropriate) a blank option, but make sure there is an asterisk image associated with this field indicating that it is a required field (see 7.3.2 Editable Text Fields). (Do not display text in parentheses instead of a blank option as this misleadingly suggests a valid value has been chosen.) If the user does not choose a value from the list and then submits the page, provide an error message indicating that a selection is required (see Chapter 14 Alerts and Messages).
For information about grouping the menu items within a standard menu, see <IP_ADDRESS> Grouping Menu Items.
The information in this section applies to both standard menus (described in the previous section) and jump menus (see <IP_ADDRESS> Jump Menus).
Provide users with several ways to select an item in the drop-down menu. Allow them to:
If all of the items in a menu are temporarily disabled due to system state, allow the menu to open and display all of the disabled menu items rather than disabling the entire menu. If all of the menu items are permanently unavailable, the menu should not be displayed.
For items in the drop-down menu (most applicable to standard menus), you can combine two data elements, usually shown as concatenated together with a hyphen.
This strategy is most often used when an option has both a code and a description. For example, a severity drop-down menu might contain these items:
Display the scrolling list label according to the guidelines specified in 7.3.1 Labels.
Align the scrolling list label to the left of the list's top item.
If the user is not required to make a selection from the scrolling list, include a blank option and select it by default if that most accurately reflects the system's current state. The user may choose something else or may keep the blank option (assuming it is selected). (If you need to be more specific than using blank, insert some text within parentheses for this option. For example, make "(No Color)" a selectable item in a list of color choices.) This guideline does not apply to editable scrolling lists, the add-and-remove idiom, and orderable lists. See Chapter 8, Complex Elements for information on these elements. Below is an example of of a scrolling list with a blank option selected:
If the user must make a selection from the scrolling list, choose an appropriate default value from the list of options. If there is no appropriate default value, start with no selection for the list, but make sure there is an asterisk image associated with this field indicating that it is a required field (see 7.3.2 Editable Text Fields). If the user does not choose one or more of the values from the list and then submits the page, provide an error message indicating that a selection is required (see Chapter 14 Alerts and Messages).
If you are grouping items in the scrolling list, follow the guidelines specified in <IP_ADDRESS> Grouping Menu Items.
Though scrolling lists are not often used for choosing a single value, use a scrolling list if ALL of the following are true:
Subsequent sections in this chapter provide details about appropriate uses for sets of checkboxes and multiple selection scrolling lists. See 8.1 Editable Scrolling List and 8.2 Add-and-Remove Idiom for details about these, more complex, elements.
Use a set of checkboxes if ALL of the following are true:
Display checkbox labels according to the guidelines specified in <IP_ADDRESS> Checkbox.
When you can clarify the meaning of the set of checkboxes, label the set on the left and align the label with the topmost checkbox. However, never provide a label only to the left of a checkbox or to the left of each checkbox in a set.
Where appropriate, this label can be plural (such as "Installed Browsers" rather than "Installed Browser").
Display the checkbox set label according to the guidelines specified in 7.3.1 Labels.
Apply headline capitalization to both the checkbox set label and each individual checkbox label (see 2.5 Text Capitalization).
Consider associating icons with the checkboxes to help users more easily identify the desired options, similar to the strategy of associating icons with radio buttons.
Use a multiple selection scrolling list if ALL of the following are true:
Multiple selection scrolling lists are also used in the following more complex user interface elements: 8.1 Editable Scrolling List, 8.2 Add-and-Remove Idiom and 8.3 Orderable List.
Display the label for the multiple selection scrolling list according to the guidelines specified in 7.3.1 Labels.
Apply headline capitalization to the label (see 2.5 Text Capitalization).
Include text just below the multiple selection scrolling list that tells users they can select multiple values. Make this text platform-specific so that users know which keys to press.
This text serves to differentiate the multiple selection scrolling list from a single selection scrolling list, to which it would otherwise appear identical.
Make this text smaller than normal. (See information about Field Inline Help in 11.1 Inline Help.) While considering operating system differences, a technical writer can choose the text's final wording.
Align the multiple selection scrolling list label to the left of the list's top item. Make the label plural.
If the user is not required to make a selection from the multiple select scrolling list, include a blank option and select it by default if that most accurately reflects the system's current state. The user may choose one or more other options or may keep the blank option (assuming it is selected). (If you need to be more specific than using blank, insert some text within parentheses for this option. For example, make "(No Color)" a selectable item in a list of color choices.) If the user selects this option along with other options and submits the page, display an error message indicating that the blank option in their selection is in conflict with the other selections (see Chapter 14 Alerts and Messages). The user must choose either the blank option or one or more of the other options. This guideline does not apply to editable scrolling lists, the add-and-remove idiom, and orderable lists. See Chapter 8, Complex Elements for information on these elements. Below is an example of of a multiple selection scrolling list with a blank option selected:
If the user must make a selection from the multiple select scrolling list, choose an appropriate default value from the list of options. If there is no appropriate default value, start with no selection for the list. In either case, make sure there is an asterisk image associated with this field indicating that it is a required field (see 7.3.2 Editable Text Fields). This is important because users can deselect all items using this user interface element. If the user does not choose one or more of the values from the list and then submits the page, provide an error message indicating that a selection is required (see Chapter 14 Alerts and Messages).
If the user needs to be able to order the items in the scrolling list, see section 8.3 Orderable List.
A number of elements can be used to allow users to perform actions within an application. Actions are commonly available via buttons which are described above in 7.1 Action Buttons. In tables they can be provided via buttons or via links (see <IP_ADDRESS> Using Embedded Table Actions). In addition, actions can be provided in a type of drop-down menu called a jump menu (see the following section).
Navigation is typically provided by more complex elements such as trees and tabs (see Chapter 5, Top-Level Navigation). In tables they can be provided via links (see 9.2 Embedded Table Navigation). In addition, the jump menu can also be used to allow users to navigate among different views of a given page.
Jump menus, as used to perform actions as well as to navigate among views, are described in the following section.
A related control is the pop-up menu, where menu options are provided in context. Details about the pop-up menu are discussed in <IP_ADDRESS> Pop-Up Menu.
Drop-down menus are also known as:
There are two types of drop-down menus specified in these guidelines: standard menus and jump menus. These menu types exhibit different behavior and have a different appearance. The jump menu is described in this section.
Jump menus perform some action, such as opening a window, or allow simple navigation to another page or view when the user selects an item in the menu. Jump menus are not used for choosing a data value. For this, use a standard drop-down menu (see <IP_ADDRESS> Standard Drop-Down Menu).
The distinguishing traits of a jump menu are:
A jump menu used to allow users to perform an action looks like this:
When used for providing actions, a jump menu does not display a label to the left of it. Instead, it has a title with em-dashes (—) around it (for example, — Actions — ) displayed inside the drop-down menu itself. This label is displayed to let users know what kind of items are contained within the drop-down menu, and this label is re-displayed after a valid selection is made, and its associated action is performed. See <IP_ADDRESS> Jump Menu Behavior for more information on jump menu behavior. Usually, the entries in an action Jump Menu are verbs, not nouns.
See 6.5.3 Content Page Actions Drop-Down Menu and <IP_ADDRESS> Using a Single Drop-Down Menu for Table Actions for example uses of jump menus for performing actions.
A jump menu used to allow users to navigate looks like this:
When used for navigation, a jump menu does display a label to the left of it, similar to the way a standard menu is displayed (see <IP_ADDRESS> Standard Drop-Down Menu). Common labels for a jump menu used for navigation are "View:" and "Filter:." Note that filtering (for example, in a table) is considered to be a form of navigation as the user explicitly requests to see a different (filtered) view of the data. The user isn't choosing the action to "Filter" from the jump menu, but choosing which filtered view (for example, which alarm severity) to display. Alarm severities are not actions.
When used for navigation, the selected value is displayed in the menu so that the currently selected view (or filter) is always visible to the user.
See 6.4.1 Using a Drop-Down Menu for Content Area Navigation and <IP_ADDRESS> Basic Table Filtering for examples of uses of jump menus for navigation.
Give each jump menu a label, inside of it when used for performing actions, or to the left of it when used for navigation.
Use a jump menu if ALL of the following are true:
Display jump menu labels, when they appear to the left of the menu (when used for navigation), according to the guidelines specified in 7.3.1 Labels.
Apply headline capitalization to the labels of jump menus, whether they appear within the menu or to the left of the menu (see 2.5 Text Capitalization).
Behavior specific to jump menus is described in this section. However, for general drop-down menu behavior, applicable to both jump menus and standard menus, refer to <IP_ADDRESS>.1 General Drop-Down Menu Behavior.
To reduce the number of user steps and to reduce clutter, jump menus do not use a Go (submit) button to initiate actions. Instead, these menus exhibit behavior in which the action associated with the menu item is performed as soon as the user selects a menu item.
In Netscape 7, users can keyboard navigate within jump menus using the arrow keys. In Internet Explorer, users can keyboard navigate by using the Alt key + down arrow to view the menu contents and the arrow keys to navigate through the menu content. In both cases, pressing the Enter key activates the selected menu item.
Require confirmation from the user through means of an alert message (see Chapter 14 Alerts and Messages) before a destructive or long action is actually performed.

For jump menus allowing users to perform actions (as opposed to navigation), design the drop-down menu such that after a menu item is selected, the menu snaps back to the first item in the menu (that is, the label) before the action is performed.
This way, if the user clicks the Back button on the browser, the page loads with the menu label selected in the menu.
 In that case, the separator should remain selected and the page should remain unchanged. Note that because Netscape 7 supports having disabled menu items in which items such as separators are not actually selectable, this situation would never occur. However, older browsers may not support disabled menu items. So, users could inadvertently select this invalid item.
For jump menus used to allow users to navigate, the menu remains on the value the user last selected, and does not snap back. This way, users can see the location to which they have chosen to navigate.
It would be rare to have a separator in a navigation jump menu, but if a separator is selected in a navigation jump menu, display the separator, and leave the page unchanged. Users are more likely to realize that they have inadvertently selected an invalid item if the page does not change, and the separator is displayed as the selected item. Note that this is applicable only on older browsers that don't support disabled, and therefore unselectable, menu items.
The following diagram shows jump menu behavior for a menu used for performing actions:
To help users quickly locate and understand items contained in drop-down menus, consider grouping logically-related items. This is typically used in jump menus. The two methods for accomplishing this goal are standard grouping and optgroup grouping.
In standard grouping, use separator lines to group items. Indicate each separator line by a disabled and unselectable menu item containing a series of em-dashes ("—" or "—" as in "—————"). This method is similar to the menu grouping method commonly used for pull-down menus in nonbrowser-based applications. The series of em-dashes should be as long as the longest item in the menu. Note that some older browsers may not support disabling menu items. In this case, follow the guidelines in <IP_ADDRESS> Jump Menu Behavior for guidelines about what to do if a user selects a separator line.
In contrast, optgroup grouping relies on an HTML tag called optgroup, which gives grouped items an unselectable label. This label appears above the grouped items, and all of the items contained in the group appear indented below. Note that the optgroup tag is not supported on older browsers such as Internet Explorer 5.5. These browsers degrade gracefully by simply not showing the optgroup label and not indenting any of the menu items.
Place separators before optgroups so that older browsers, which do not show the optgroup labels, still appear to group items using the standard grouping. The exception: when the optgroup appears at the beginning of the menu, omit the separator.
Group items that are logically related. Do not group items based solely on frequency of use.
If the relationships among items in the menu groups are relatively clear, then use standard grouping. If the relationships among items are not clear, then consider using optgroup grouping.
For example, say a menu contains a list of storage devices and the items in the menu are the names of the devices. In this case, grouping the storage devices by model might be useful. It's unlikely that the names of the devices themselves convey the device model. Therefore, it is unlikely that, if standard grouping were used, users would realize how the items are grouped. However, optgroup grouping could be used to clarify the grouping scheme so that users can more easily understand the contents of the menu and more easily locate items.
On the other hand, if a menu contained a list of actions to be performed on storage devices and the actions were grouped into administrative actions and configuration actions, optgroup labels would be superfluous, merely adding visual clutter to the menu.
When using the optgroup method, use a concise, descriptive noun for the grouping label. Also, create parallel, consistent labels.
When using the optgroup method, avoid creating single-item optgroups.
Likewise, a menu should not contain only a single optgroup. In this case, the label for the group should be reflected in the menu's label.
Strive to use the standard and optgroup grouping methods consistently within your application. Do not arbitrarily use both types across menus.
Because a pop-up menu is provided within the context of another user interface element, do not display a separate label for the menu, either outside of it or within it.
When a pop-up menu is invoked it is displayed over the contents of the page from which it is invoked. The menu is not transparent, so the page contents beneath the pop-up menu are not visible when the menu is displayed.
Because some of the page contents will be hidden by the pop-up menu, it should only be as large as it needs to be. Keep the wording of the menu items as brief as possible while still being clear.
Display the pop-up menu with a dropshadow on the bottom and right to make it appear as if it is floating above the page.
As in jump menus, pop-up menu items are displayed as links and take effect immediately when clicked. See 2.1 Color Palette for information about Sun's web application color palette.
Apply grouping mechanisms, as appropriate, to help users locate the desired menu item. See <IP_ADDRESS> Grouping Menu Items for more information.
Automatically close a pop-up menu once a menu item link is clicked or if the user clicks outside of the menu.
The default position for a pop-up menu is with the top left edge of the pop-up menu opening right under the bottom left edge of the control which invoked it. However, there might be cases where the menu will need to be adjusted horizontally when the menu would not be visible on the screen when it is placed in the default location. In this situation, move the pop-up menu to the left, with the top right edge of the pop-up menu placed just below the bottom right edge of the control invoking it.
Similar space issues may arise vertically when the menu would not be visible on the page if placed below the invoking control. In this situation, position the pop-up menu above the invoking control.
Also, in some circumstances it is just more appropriate to position the pop-up menu in a location other than the default position. This may be dependent on the location of the control that invokes the pop-up menu. For example, in the accordion control (see <IP_ADDRESS> Accordion), it makes sense to position the pop-up menu such that its right edge aligns with the right edge of the invoking control.
If possible, position the pop-up menu in the default location (below and left-aligned with the invoking control). However, adjust horizontally and/or vertically, as described above, if the pop-up menu would not be completely visible, would cover information that should be visible while the user is viewing the menu, or if it is otherwise more appropriate to position it in a non-default location.
Below is an example of a pop-up menu that has been moved to the left, aligning its right edge with the right edge of the control that invoked it.
Text elements allow users to view and edit text in applications. The several
types of text elements include:
The following example shows a page with an example of each type of text element:
Use text labels to identify controls and data values. Labels should be left-aligned and appear to be associated with the item being labeled.
Use headline capitalization on all labels (see 2.5 Text Capitalization).
If a field requires that units-of-measure be specified, place this information to the right of the field itself (not as part of the field's label). Do not place this information within parentheses. Use headline capitalization (see 2.5 Text Capitalization) for units-of-measure information.
For accessibility reasons, enclose the field and units-of-measure information in a span or div tag to tie them together.
Form elements are often organized hierarchically into groups and subgroups.
The labels on the individual elements as well as on the groups are designed
to visually support this hierarchy. In this scheme, groups have bolder, heavier
labels whereas individual elements within the groups have lighter labels. In
the following example, Level 1 labels have a heavier appearance than Level 2
labels, which, in turn have a heavier appearance than Level 3 labels.
Level 1 labels are visually much heavier than the text appearance for field labels as specified
in these guidelines. Therefore, use them sparingly. In these guidelines, use
of Level 1 labels is reserved for elements such as section headings.
Level 2 labels are the labels to use by default. They are used for most field labels. These labels appear left-aligned with each other and to the left of the element or elements they are labeling.
Use Level 3 labels for items appearing within a group that is labeled with a Level 2 label. These labels should be left-aligned with each other and generally, though not always, appear to the right of the element that they are labeling (for example, checkbox and radio button labels). If an item with a Level 3 label contains a group of items (as in the preceding example), then the items within the group should also have a Level 3 label.
When a mix of checkboxes, radio buttons and other form elements appear in a group, as shown in the following example, each item at the top level (that is, not items that are in subgroups) should have a Level 2 label to its left. In the Incorrect example on the right, the checkbox labeled "Automatically Mount Home Directory" is logically at the same level as the other items (Path, Server and Permissions). Therefore, the checkbox arguably could appear left-aligned with the labels for these items with the Level 2 label. However, this arrangement diminishes readability and makes it more difficult for the user to understand the relationships among the items.
The method for handling these mixed-element situations, shown in the Correct example on the left, is to give each item a Level 2 label on the left and to align the radio button or checkbox (and its right-hand label) with the other form elements in the group. It can be awkward to have an item with two labels if the labels are essentially identical. So, one approach to writing the labels is to use a short descriptive noun as the Level 2 label on the left and a more descriptive phrase for the Level 3 label on the right.
When displaying a set of checkboxes in its noneditable (read-only) appearance (see <IP_ADDRESS> Set of Checkboxes), use a level 2 label for the label of the set, as is done when labeling a set of enabled or disabled form elements. Use label level 2 to identify each individual checkbox in its noneditable (read-only) appearance as well, but indent these labels by 10 pixels with respect to the label for the entire set.
For example, in the following image showing different appearances for a set of checkboxes, the noneditable (read-only) appearance for the set of checkboxes shows the label for the whole set, "Options:" using label level 2. The labels "Connect on Carrier:" and "Bidirectional:" also use label level 2, but are indented 10 pixels to the right.
Labels for individual elements should use the HTML <label> tag to associate the labels with form elements. Aside from being an accessibility requirement, use of this tag also enables users to click on the label text in order to activate or put focus on the form element. Without the HTML <label> tag, users have to click on the element itself. See Appendix D, Accessibility Requirements for more information on the HTML <label> tag.
Labels for groups of elements should use the HTML <fieldset> and HTML <legend> tags to identify the elements as a group to assistive technologies. See Appendix D, Accessibility Requirements for more information on use of the HTML <fieldset> tag. Note that, by default, the HTML <fieldset> tag places a rectangle around the group of items. This rectangle can and should be suppressed using CSS styles.
Text fields display a single line of editable text.
Use fixed fonts for text field contents only in rare situations when it is necessary to render a text field where the length of the data can be no longer than what is allowed by the size of the field.
For example, this might be necessary if the user needs to see the exact length of the value relative to other text field values on the page (where all the text fields would be lined up). Another situation might be when users must see all of the characters in the text field even if they type a lot of wide characters such as capital Ws. These situations tend to be rare, however.
Appropriately size the visible width of a text field to accommodate the length of the intended text strings. This is particularly important for fields intended to hold potentially lengthy data such as file paths.
If the text field can accept long entries (for example, 60 characters or more), but making the text field's visible width accommodate the whole entry creates page layout and alignment concerns, consider using a text area (see 7.3.4 Text Areas) with a height large enough to accommodate a horizontal scrollbar. The width can be sized for visual design aesthetics within the page, but should generally be made as large as possible.
Avoid setting the text field to a shorter visible width and letting the leftmost characters then scroll out of the text box, as needed, when new characters are typed. When doing so there is no indication that any text is out of view, and when manually scrolling, there are no scrollbars to provide information about how much data there is and which part of it is currently in view.
To denote required fields, place the graphic named Required Field, , to the right of the field's label and set its tool tip to "Required Field". Then, include the legend: " Indicates required field" at the top right of the content area, as shown in the previous example at the beginning of 7.3 Text Elements. Do this for all required fields, even if all fields on the page are required.
If an extremely large number of possible values exist for a given field (for example, thousands of possible values), the best option might simply be to provide an editable text field for users to type in a value. Other user interface elements (for example, drop-down menus, scrolling lists, sets of checkboxes or radio buttons, add-and-remove idioms) are not designed to handle extremely large numbers of possible values.
However, if appropriate, the text field can be linked to a pop-up window of values where users can search for a value that they do not remember (not shown in preceding picture). The details of this pop-up search window entry field have not yet been determined.
Password fields are editable text fields that display an asterisk ("*") in place of every character typed by the user. The password field serves to mask what the user types.
A text area is a rectangular space where users can type multiple lines of text.
Display the text in the text area in a single font size and font type. Read only text areas appear just as editable text areas do. The text is just not editable.
Wrap the text, when advisable to do so. For example, wrap text when descriptive information is held in a text area. This activates the text area's vertical scrollbar if the text exceeds the height of the text area.
When text wrapping is not advisable, such as when the user types code or a path name that must appear
on one line, turn off wrapping.
| [ Table of Contents | 0 Revision History | 1 Introduction | 2 Visual Design | 3 Windows and Pages | 4 Mastheads | 5 Top-Level Navigation | 6 Content Area | 7 Simple Elements | 8 Complex Elements | 9 Tables | 10 Topology | 11 Contextual Help | 12 Search | 13 Wizards | 14 Alerts and Messages | 15 Progress Indicators | 16 Alarms and Status Indicators | 17 Login Page | 18 Version Page | Appendices ] |
| Privacy Policy | Terms of Use | Trademarks | Copyright 2007 Sun Microsystems, Inc. |


{% extends 'company/base.html' %} {% block page %}
| business_id | business_id Id | Date Hired | Sex | Date Of Birth | Local Address | CDL Class | Other CDL Class | Wage Plan | business_ids License Number | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ business_id.id }} | {{ business_id.name }} | {{ business_id.business_id }} | {{ business_id.date_hired }} | {{ business_id.sex}} | {{ business_id.date_of_birth }} | {{ business_id.address }} | {{ business_id.license }} | {{ business_id.other_license_2 }} | {{ business_id.wage_plan}} | {{ business_id.license_number }} | {% if business_id.wage_plan == "Hourly" %} {% endif %} |


Attempting to find your location. Please choose 'allow' to continue.
Temperature:
Humidity:
Cloud Cover:
Wind Speed:
Precipitation:


Hover on any flag above to be shown that country's two letter code, or click on the flag to be brought to that country on a map! Or check out how the knockout stages went below!


Pleasant Places Tea Garden - undercover, warm and cozy
Free WI-FI for an hour
Business meeting, small group booking, children's party? Our hours are flexible to accommodate your needs.
We don't only serve tea! Cappuccino, Latte, Hot Chocolate
Sweet or savoury - we cater for all tastes
0837577470 is magic number. Call NOW to discuss your booking or for directions to your "peace in a tea cup"
Pleasant Places Tea Garden
Is where you want to be.
Just saying.......
Like chocolate cake? As we have plenty of it here
Better than Mom's famous recipe hehe
And one cannot forget our most delicious and scruptious carrot cake!
Spinach and Feta Quiche or Cheese and Chive muffin available as a light lunch.
End it off with yummy Apple crumble and a creamy cappuccino............


The ultimate list of iOS device models - Identify model for iPhone, iPad, iPod touch, Apple Watch, Apple TV, and Mac computers with Apple Silicon.
GitHub: ElfSundae/iOS-Model-List
list.json:
list.json
NSDictionary:
NSDictionary


Most SaaS products evolve.  How will the users know what changed in the platform since their last login? We got it covered.
Get started right away by registering your application
You get a neat dashboard to manage all your announcements, in one place
Installing Carrot in your product is as easy as dropping a script tag onto your site.


HTML Geolocating
Lab 1
Make the same webpage as in link
Click the button to get your coordinates.
Try It
HERE WILL BE UR COORDINATES


Itsuka by Joy Kogawa
About the book
Author: Kogawa, Joy
Title: Itsuka
Publication: Toronto, Ont. : Viking, 1992. ISBN<PHONE_NUMBER>.
DAISY audio format narrated by Sandra Scott. CELA library call number DA12414. 288 pages in the paper edition; 8 hrs., 45 mins. as a recorded book.
About the story
This is the sequel to Obasan, which I reviewed earlier.
I must say that, at this point, I don’t think it holds a candle to the original but then it did not benefit from Joy Kogawa’s luminous reading. The narrator for this volume clearly did not learn Japanese pronunciation, which makes it hard to understand the words. She also mispronounces common English words though, like rodeo (roDAYo), so it does become quite irksome.
This book also has a not-insignificant proportion of Religious Expounding (strictly in the service of the plot, I must state), but that is one of my biggest pet peeves, so it also put me off.
Maybe this is a book I should have read using TTS? There are some narrators that just put me off so much I would rather just have a machine read to me!
This book runs over much of the same ground as Obasan did, but with a different focus: more on the narrator’s experience as a woman, less of a child-survivor of internment camps. It is definitely more political. The same characters come up, but different ones do, too, such as a one-time love interest and a friend who figured only fleetingly in the first novel.
Kogawa’s gift lies in the description of the small things, and of her fictional self’s inner experiences. That is true of this book, too. For example, I remember the walk she took with her one-time love interest much more vividly than I do the lover himself, because of the way she described the setting. He seemed more like a stock character than the birds did, really.
It’s a slow-paced, meditative book that centres on description. It would have been better if Joy Kogawa had also narrated this one too, or, at least, someone with a rudimentary understanding of Japanese pronunciation because – like with the first novel – the Japanese words and experience are fundamental to understanding the story.
Recommended?
I was disappointed.


One more Git tip this time — a nice easy one.
When using `git add`, you can use the Tab key to autofill the path, without even typing the first few characters. Each time you press Tab the next directory or file name of a new and untracked file will be completed automatically, saving you typing and time!
Incidentally, this week we found a good list of 19 Git tips by Alex Kras which could also help you: www.alexkras.com/19-git-tips-for-everyday-use/


{% extends 'base.html' %} {% block content %}
The temperature in {{ name }} is {{ main.temp }} degrees F and described as {{ weather[0].description }}


Reports any variables declared as java.lang.StringBuffer which may be
more efficiently declared as java.lang.StringBuilder.
java.lang.StringBuilder is a non-thread-safe replacement for
java.lang.StringBuffer, available in Java 5 and newer.
This inspection only reports if the language level of the project or module is 5 or higher


1. Usage example.
Basic usage
Below is the self-explanatory code that creates a window with a button in the middle which closes the applications.
#include "Ange.h"
using namespace Ange;
int main()
{
//Create window
auto window = new Window(
nullptr,
"ANGE Hello world!",
{ {300,200}, {500,300}, WindowFlags::ChildAutoOperate | WindowFlags::AutoInvokeRender | WindowFlags::FifoDrawable }
);
window->Init();
window->SetMinMaxDimensions(500, 300, -1, -1);
window->SetClearColor(Color{ 230,233,240,255 });
//Load font
auto font = new Font("arial.ttf");
font->LoadFontSize(15); //This size is used in default theme
//Create theme & attatch font to it
Theme theme = DefTheme;
theme.AssignFontToAll(font);
//Create button
auto button = new SimpleButton(
window,
{ {250,150}, {150, 80}, Anchor::HorizontalCenter | Anchor::VerticalCenter },
theme,
L"Close"
);
button->SetResizeProportions(50, 50, 0, 0);
//Setup callback
button->SetCallback([&window](Event* ev)->bool{
if(ev->GetEventType() == EventType::MouseClick) window->Close();
return false;
});
//Main loop
while (window->Operate())
{
//We can also use pooling technique instead of relying on callback for button.
//if (button->GetState() == WidgetMouseState::Press) window->Close();
//Notice: No need to invoke "button->Render()" when parent window have WindowFlags::AutoInvokeRender flag set.
window->ClearScene();
}
delete button;
delete font;
delete window;
return 0;
}
After compiling the code, the following application should appear to our eyes:
Additionally, in the application console, we should see the engine logs, as in the picture below:


It was impossible until we added that source chain to the burn tx
CrisF08-Jan-19 11:34 AM
Any need for a notarization, or other data, to conclusively provide proof of migrations?
blackjok3r08-Jan-19 11:34 AM
block confirmed import is to use getimports RPC to scan for the import txid, and check the export txid.
A script should be able to verify everything after the fact no problem... may take a while to run... but it will work.
CrisF08-Jan-19 11:37 AM
How about time of 'arrival' ( when the coins are spendable)? It would be good to a lot of data to get a good idea of times.
blackjok3r08-Jan-19 11:37 AM
Its possible maybe to do this a diffrent way that would be faster need to think about it... With existing tools that way works, might be a little slow though.
CrisF08-Jan-19 11:37 AM
Something to test future upgrades against.
blackjok3r08-Jan-19 11:38 AM
time imported should be a confirmed block.
the script waits for confirm... at least it did... not sure if tony super speedy script does.
CrisF08-Jan-19 11:38 AM
haha
blackjok3r08-Jan-19 11:38 AM
I think the time section should be confirmed time...
easily checked... I may even change it... (the data is probably all in getrawtransation now because of explorers)
So really with that, you need a txid of import only to prove it as james said. It would be good to log some extra thigns though to really push the oracles contract.(edited)
CrisF08-Jan-19 11:41 AM
I will be a good (rare) opportunity to have a larger variety of testers with a mix of systems and locales.
1
As long as we have a back-up plan, like a really basic script, if things go bad, then might as well try as much as we can when we have the chance.
blackjok3r08-Jan-19 11:42 AM
ok so final version I think is this:
{"src_chain":"CFEK", :src_sum":10, "import_txid": <txid>, "timeofexport":1546341430, "dest_chain":"CFEKED", "dest_sum":10, "export_txid": <txid>, "timeofimport":1546341430,}
timeofexport must be confirmed export tx (not went created, so we can check it on chain)
timeofimport must be confirmed on target so we can check it on chain
getrawtransaction can be used to verify the submitted data is correct
getimports can be looped over every chain in the cluster to gather global stats after the fact.
Then is should be easy to see, if the total amounts excceed each user added together, (no coins were lost or created)
I think maybe minimum 4 chains in the cluster + 2 chains for oracles. This can be discussed by everyone, remember right now we need a full KMD node on each VPS doing migrates. So launchinfg 300 google clouds isnt an option
1
CrisF08-Jan-19 11:45 AM
OK. So that's the stats and proof. There's another big thing.
blackjok3r08-Jan-19 11:45 AM
I think thats all we need yes
A central place for KMD signing would be great, but probably out of reach at this stage.
and I think in a stress test, it could be overwhelmed.
CrisF08-Jan-19 11:46 AM
We need to know of failures.
And get a log for debugging.
blackjok3r08-Jan-19 11:46 AM
log fails locally
You will know if they failed, because you have txid of export but no import tx
That would be useful for future tests. 2 separate modules.
blackjok3r08-Jan-19 11:48 AM
yes thats much better.... confirm your export log it to oracle
then when import is confirmed log it
CrisF08-Jan-19 11:49 AM
Could a script push a persons fail log (like the log on your previous script) to a logging oracle?
blackjok3r08-Jan-19 11:49 AM
If the import fails, the script should already be logging it... so push to file,. then send into oracle.
Not that you need to
because you know things failed if exports > imports(edited)
Use oracle data to total up all exports... then teh getimports RPC for total imported across all chains... if these are not the same... something went wrong...
hmm what happens though, if its a VPS crash or something... script should save the export tx
CrisF08-Jan-19 11:52 AM
On your previous script the fail logs were sent to a file.
blackjok3r08-Jan-19 11:52 AM
updated
CrisF08-Jan-19 11:52 AM
Could that, or something like it, be sent to an oracle.
blackjok3r08-Jan-19 11:53 AM
yes you can send the export hex and payouts to oracle.
then if script fdails, the tx can be resumed
at any time, by any person
CrisF08-Jan-19 11:53 AM
So you could get a view of what is happening somewhat real-time?(edited)
blackjok3r08-Jan-19 11:54 AM
dunno about real time tbh ... that would only work with either explorers, or the getimports RPC being called on blocknotify on each chain
only one node has to do that
If smk has any spare time, he would be best to have a look at doing something for that(edited)
updated JSON, please record that for me I need to run.
nothign here is stone... we can change it, have a start though.
Tony's script - I have a modded version that writes all hexes to a file. Was going to look at a version with less user output for automating - but might wait for Tony's with threading.
smk762 - dracocanis ominator08-Jan-19 12:20 PM
hang on, Il update my nodes and check the rpc
CrisF08-Jan-19 12:22 PM
@Bar_F1sh_Rel That sounds cool. Could you please talk with @TonyL about it?
smk762 - dracocanis ominator08-Jan-19 12:22 PM
that json string seems to have enough to animate migrations.
CrisF08-Jan-19 12:23 PM
That looks great smk762. Something like that for the chains would be very good for many reasons.
smk762 - dracocanis ominator08-Jan-19 12:23 PM
value = dot radius
time import vs time export = dot velocity
import/export chain = start/end of animation
we still have colors up the sleeve for address/pubkey identification
can that be derived using the txids?
TonyL08-Jan-19 12:26 PM
@Bar_F1sh_Rel In v2 I'm not using threading, just using lists (hexes or txids on each step) in step by step flow. Not hard to output any transactions list to file if needed. Minimising prints much in script itself may make script hard to debug if something go wrong - I think it's better to just forward stdout on execution to file if needed to make logs
So there is let's say payouts_list or signed_hexes_list and you can save to file/files all that you need
Will publish this one asap
Bar_F1sh_Rel08-Jan-19 12:29 PM
Cool. I'll check it out tonight and feedback.
1
CrisF08-Jan-19 12:31 PM
@smk762 - dracocanis ominator The 4 versions of the info are now up the ptop of the pad for you. I believe that version 3 might be the semi-final version.
This is for the Migrations Test. More stats later for the cluster.


{% extends 'base.html' %} {% block below_menubar %} {# Main jumbotron (big-ass banner with text in it) #}
{{ name|title }}
You are a teacher
{% else%} {% if absenteesU|length == 0%}Congratulation, you have no unjustified absentees !
{%else%}You have {{absenteesU|length}} unjustified absentees.
{%endif%}You have no justified absentees !
{%else%}You have {{absenteesJ|length}} justified absentees.
{%endif%} {% if absenteesU|length != 0 or absenteesJ|length != 0%}This is secret information!
TELECOM Nancy is a french engineering school, specialized in IT. You can find more about it by clicking on the button below.


Every week I'll post a technical blog explaining what I've learned. I'll track my progress and my work, and keep this updated with helpful pictures and descriptions.


| Path: | README.rdoc |
| Last Update: | Sun Jun 21 10:22:21 -0700 2009 |
ContactKit is a collection of all of the associations I find useful when creating a simple (or complicated) application as I always seem to end up using these same associations. In each of these classes you will find little goodies that allow you to work effectively with the association type. All are equipped with polymorphic attributes so you can use them any want in multiple classes without interference.
I added in a sample Order class that shows how one could usefully connect these as associations using the belongs to method. In a real order class you would most likely never use a belongs_to association as address normalization in not what you want. In that case you would use a has_one association as you need to record the data in that record for the given order.
Below is that a class using the belongs_to example:
class Order < ActiveRecord::Base belongs_to :email belongs_to :phone_number belongs_to :ip_address belongs_to :shipping_address, :class_name => 'Address' belongs_to :billing_address, :class_name => 'Address' belongs_to :shipping_receipient, :class_name => 'Person' belongs_to :billing_receipient, :class_name => 'Person' end
Perhaps the most useful part of ContactKit is the Address class as it makes use of Geokit to verify the address location. It doesn this by making a call to google geocode (or yahoo depending on configuration). Although your limited to what yahoo or google have listed in their database, I think you will find that they have a pretty accurate reading on worldwide addresses.
I wrote this class to get around using expensive services such as QuickAddress and Melissa Data (which are excellent options if you have the money eg, ~$20K US a year). You will have to install the geokit-rails plugin and the geokit gem to make use of all these nifty features. I also
went a little bit further to normalise the Address attributes such as City, Region and Country which are saved and stored in their respective tables.
Oh one other nice thing the Address class does is make use of GeoKit‘s geoip and geocodes the address on the save.
If you have any questions/suggestions feel free to email me at mark.mcdonald —at~~gmail.com
If you do use this, please send me a note and tell me if it was useful!
Sample Address Usage (in console):
>> address = Address.new(:street_address => '1 icon', :postal_code =>'92610') => #<Address id: nil, street_address: "1 icon", postal_code: "92610", city_id: nil, md5: nil, lat: nil, lng: nil, addressable_id: nil, addressable_type: nil, created_at: nil, updated_at: nil> >> address.valid? => true >> address => #<Address id: nil, street_address: "1 ICON", postal_code: "92610", city_id: 7, md5: nil, lat: #<BigDecimal:b71c6bac,'0.3367182E2',12(12)>, lng: #<BigDecimal:b71c6b5c,'-0.117645876E3',12(16)>, addressable_id: nil, addressable_type: nil, created_at: nil, updated_at: nil>
Copy the models and data (or at least the ones you want in your app) into your db/ folder. cp -r vendor/plugins/contact_magic/db/migrate RAILS_ROOT/db/migrate
These collection of models are also useful as a polymorphic association. For example, if you had a Company class that also had and address you could easily just do add in a contact and address along side the order model by doing something like this:
class Company < ActiveRecord::Base has_one :contact, :as => :personable has_one :billing_address, :as => :addressable # or mix them up belongs_to :email # must have a email_id in the table. has_many :ip_addresses, :as => :ipable has_one :phone_number, :as => :phonable end
A MySQL database Unfortunately, this won't work with sqlite3 as I am loading in the countries in the migration as well as making making use of the Geokit plugin's acts_as_mappable. This prooves to be very handy when searching for locations using Geokit's geocode-rich search features. geokit gem and geokit-rails plugin: GeoKit Gem http://github.com/andre/geokit-gem/tree/master GeoKit Plugin http://github.com/andre/geokit-rails/tree/master Dig (DNS lookup utility) Dig is used to make sure an email address acutally has a server. Ubuntu sudo apt-get install dnsutils OsX http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/dig.1.html I believe it is on OsX's default installation.
Copyright (c) 2009 Mark McDonald, released under the MIT license …Have fun!


{{#each arcs as |section|}}
{{#each section.items as |item i|}}
-
{{item.name}}
{{#if ../../owner}}
{{/if}}
{{#if ../../owner}}
{{/if}}
{{/each}}
{{/each}}
{{#each crew as |role|}}
{{#each role.actors as |actor a|}}
-
{{/each}}
{{/each}}
{{editorPlus content=data.details.notes target="data.details.notes" button=true owner=owner editable=editable rolls=false rollData=data}}