SlideShare une entreprise Scribd logo
1  sur  52
You can kick ass too
What is JIRA’s frontend API
web fragments

web resources and decorators

CSS

some Javascript
What is *not* JIRA’s frontend API
DOM

some javascript
AJS.$(function() {
    AJS.$(‘.myclass’).hover(myHoverListener);
});
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, $ctx){
  $ctx.find(‘myclass’).hover(myHoverListener);
});
JIRA.Issues.InlineEdit.BlurTriggerMapping
  .custom.myCustomFieldTypeId = BlurTriggers.Default;
JIRA.Issues.InlineEdit.BlurTriggerMapping
  .custom.myCustomFieldTypeId = function(fieldId, $ctx) {
    // must eventually call
    JIRA.trigger(JIRA.Events.INLINE_EDIT_BLURRED, [fieldId]);
};
<select id="projects" class="hidden">
  <optgroup label="Recent Projects">
        <option value="ANGRY">Angry Nerds</option>
        <option value="JRADEV">JIRA Development</option>
    </optgroup>
    <optgroup label="All Projects">
        <option value="GH" selected="selected">Jacobs Creek</
option>
        <!-- etc -->
    </optgroup>
</select>
 
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, $ctx){
  new AJS.SingleSelect({
   element: $ctx.find("#priority"),
    // show full text, not value, in lozenges
    itemAttrDisplayed: "label"
  });
});
<select id="assignee" class="hidden"></select>
 
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, $ctx) {
  new AJS.SingleSelect({
    element: $ctx.find("#assignee"),
    itemAttrDisplayed: "label",
    ajaxOptions: {
      url: "/rest/assignees",
      query: true, // go back to server on each keystroke
      formatResponse: function (response) {
       // construct groups/options from the JSON response
        return ret;
      }
    }
  });
});
JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function(e, $ctx) {
  new AJS.MultiSelect({
    element: AJS.$("#labels"),
    itemAttrDisplayed: "label"
  });
});
<select class="hidden js-default-checkboxmultiselect"
    multiple="true">
  <optgroup label="Recent Projects">
        <option value="ANGRY">Angry Nerds</option>
        <option value="JRADEV">JIRA Development</option>
    </optgroup>
    <optgroup label="All Projects">
        <option value="GH" selected="selected">Jacobs Creek</
option>
        <!-- etc -->
    </optgroup>
</select>
 
Thanks

Contenu connexe

Tendances

jQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a TreejQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a Tree
adamlogic
 
Short intro to JQuery and Modernizr
Short intro to JQuery and ModernizrShort intro to JQuery and Modernizr
Short intro to JQuery and Modernizr
Jussi Pohjolainen
 
Kick start with j query
Kick start with j queryKick start with j query
Kick start with j query
Md. Ziaul Haq
 

Tendances (19)

Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Rails
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 
Jquery.Tmpl
Jquery.TmplJquery.Tmpl
Jquery.Tmpl
 
jQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a TreejQuery and Rails, Sitting in a Tree
jQuery and Rails, Sitting in a Tree
 
Short intro to JQuery and Modernizr
Short intro to JQuery and ModernizrShort intro to JQuery and Modernizr
Short intro to JQuery and Modernizr
 
JQuery
JQueryJQuery
JQuery
 
Soa lab 3
Soa lab 3Soa lab 3
Soa lab 3
 
The Hitchhikers Guide To Html5 Offline Strategies (+firefoxOS)
The Hitchhikers Guide To Html5 Offline Strategies (+firefoxOS)The Hitchhikers Guide To Html5 Offline Strategies (+firefoxOS)
The Hitchhikers Guide To Html5 Offline Strategies (+firefoxOS)
 
Div id
Div idDiv id
Div id
 
JQuery Overview
JQuery OverviewJQuery Overview
JQuery Overview
 
Architecture, Auth, and Routing with uiRouter
Architecture, Auth, and Routing with uiRouterArchitecture, Auth, and Routing with uiRouter
Architecture, Auth, and Routing with uiRouter
 
Qualidade de vida: Com Zabbix e API
Qualidade de vida: Com Zabbix e APIQualidade de vida: Com Zabbix e API
Qualidade de vida: Com Zabbix e API
 
How routing works in angular js
How routing works in angular jsHow routing works in angular js
How routing works in angular js
 
Game jump: frontend introduction #1
Game jump: frontend introduction #1Game jump: frontend introduction #1
Game jump: frontend introduction #1
 
jQuery
jQueryjQuery
jQuery
 
Kick start with j query
Kick start with j queryKick start with j query
Kick start with j query
 
MongoDB and RDBMS
MongoDB and RDBMSMongoDB and RDBMS
MongoDB and RDBMS
 
Karan - form search
Karan - form searchKaran - form search
Karan - form search
 
Introduction to codeigniter
Introduction to codeigniterIntroduction to codeigniter
Introduction to codeigniter
 

Similaire à You Can Kick-Ass Too, AtlasCamp US 2012

JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In Rails
Louie Zhao
 
jQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't KnowjQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't Know
girish82
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
yangdj
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
yangdj
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
David Giard
 

Similaire à You Can Kick-Ass Too, AtlasCamp US 2012 (20)

jQuery
jQueryjQuery
jQuery
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In Rails
 
droidQuery: The Android port of jQuery
droidQuery: The Android port of jQuerydroidQuery: The Android port of jQuery
droidQuery: The Android port of jQuery
 
Jquery presentation
Jquery presentationJquery presentation
Jquery presentation
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
 
jQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't KnowjQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't Know
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
 
22 j query1
22 j query122 j query1
22 j query1
 
Modular and Event-Driven JavaScript
Modular and Event-Driven JavaScriptModular and Event-Driven JavaScript
Modular and Event-Driven JavaScript
 
JS-05-Handlebars.ppt
JS-05-Handlebars.pptJS-05-Handlebars.ppt
JS-05-Handlebars.ppt
 
jQuery Foot-Gun Features
jQuery Foot-Gun FeaturesjQuery Foot-Gun Features
jQuery Foot-Gun Features
 
jQuery's Secrets
jQuery's SecretsjQuery's Secrets
jQuery's Secrets
 
jQuery secrets
jQuery secretsjQuery secrets
jQuery secrets
 
Building an End-to-End AngularJS Application
Building an End-to-End AngularJS ApplicationBuilding an End-to-End AngularJS Application
Building an End-to-End AngularJS Application
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
 
Jquery introduction
Jquery introductionJquery introduction
Jquery introduction
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 

Plus de Atlassian

Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 

Plus de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

You Can Kick-Ass Too, AtlasCamp US 2012

Notes de l'éditeur

  1. This presentation is about JIRA&amp;#x2019;s frontend API\n\nBut before I get started\n
  2. JIRA 2.7 (2004)\n
  3. JIRA 2.7 (2004)\n
  4. JIRA 3.13 (2008)\n\ntodo: might need to change, this is crap\n
  5. JIRA 3.13 (2008)\n
  6. JIRA 4.0\n
  7. JIRA 4.0\n
  8. Through 4.4 and into JIRA 5\n
  9. Old-style editing\n
  10. 5.0 - quick edit\n
  11. 5.1 - inline edit\n
  12. JIRA 5.0\n
  13. JIRA 5.2 - new search\n
  14. Editing a searcher\n
  15. We reckon this is kickass. we are fist pumping about this.\n
  16. We want you to kick ass too.\n\nThis preso is about all the things we provide to allow you to be awesome.\n\nThe awesome stuff we&amp;#x2019;ve been doing in JIRA - viewing, editing and finding issues - how this impacts you as a plugin developer. It&amp;#x2019;s about making your plugin UI harmonious with our changes. It&amp;#x2019;s about how you can be awesome.\n\n\n\n
  17. How can you turn this boring old select ...\n
  18. Into this\n
  19. How can you turn this html list ...\n
  20. Into this\n\nThese things are not just custom fields - can use them anywhere\n\nAnd more:\n- General principles of frontend dev\n- Working with inline edit\n- Working with the new search interface\n
  21. Wait, stop. Whoa. Do I need to do all of this? Are these APIs I need to implement?\n\nNo\n\nDesign goal - if you do absolutely nothing, you are still supported.\nIf you write a custom field, that can be edited, it&amp;#x2019;s going to deliver us a blob of HTML.\n- We go to great lengths to ensure that that same HTML will work the same in the old editor, in quick edit, or in inline edit. It just works.\n\nAlso, if you want to take advantage of inline edit APIs in 5.1, or new searcher functionality in JIRA 5.2, will you need different versions of your plugin?\n\nNo\n\nWe want you to be able to build one version of your plugin. If it&amp;#x2019;s in 5.2, it can take advantage of our new controls and new searcher APIs. But if it&amp;#x2019;s delivered 5.0 or 5.1, it just works great in the old issue navigator.\n\nWhat is JIRA&amp;#x2019;s frontend API?\n\n- web fragments - plugin points where you can add\n-- menus\n-- panels, like on view issue or project admin\n-- toolbars \n-- haven&amp;#x2019;t added any over jira 5\n\n- web resources and web resource contexts (things like atl.admin, atl.general)\n-- bundles of resources like css, javascript\n- decorators\n-- provide things like header\n-- in most cases, when creating a new page\n-- again, haven&amp;#x2019;t made any big changes \n\nCSS -some\n\nDOM - no\n\n
  22. - web fragments - plugin points where you can add\n-- menus\n-- panels, like on view issue or project admin\n-- toolbars \n-- haven&amp;#x2019;t added any over jira 5\n\n- web resources and web resource contexts (things like atl.admin, atl.general)\n-- bundles of resources like css, javascript\n- decorators\n-- provide things like header\n-- in most cases, when creating a new page\n-- again, haven&amp;#x2019;t made any big changes \n\nCSS -some\n\n
  23. \n
  24. Let&amp;#x2019;s get down to brass tacks\n\nJavascript - most of the work has gone in JIRA 5. controls, api&amp;#x2019;s\n\nFirst - who has written javascript code for a JIRA plugin?\n\nWho has used jQuery?\n\nHow many people know what the term &amp;#x201C;single page app&amp;#x201D; means?\n
  25. JIRA &lt; 5.0 - all elements were always on the page\n\nrender on the server\n
  26. elements may not be on the page when it&amp;#x2019;s first loaded!\n
  27. Solution: listen for NEW_CONTENT_ADDED events\n
  28. Contract going forward any or no HTML may be in the present on page load, or when your javascript is brought into the page\n\nfor example: may choose to completely reimplement view issue, and not cause a page reload to open view issue from search\nor vice versa\n\nnever assume jQuery onReady(), always use NEW_CONTENT_ADDED\n\nwill get to examples later\n
  29. Editing\n\nCustom field: do nothing\n\nCustom field type: what do I need to do to make my custom fields play nice with:\n(next slides) quick edit, inline edit\n
  30. quick edit\n
  31. inline edit\n
  32. nothing. (this slide is intentionally left blank)\n\ngone to great lengths to ensure that exact same html which works in old edit works in quick edit and inline edit. As a developer i can tell you.\n\n(mostly)\n
  33. Save on blur\n\nWhen I open a field for edit - click on it.\nWhen I want to finish - I can press enter or click save; OR I can press esc or click cancel or exit\n\nOR I can click anywhere else on the page - &amp;#x201C;blur&amp;#x201D; implies save\n\nwhat if my field opens a layer (eg date picker), or a dropdown, or even a popup window?\n(TODO: images for these)\n\nOpt in\n
  34. \n
  35. Or write your own\n\nNext: fields. Single Select component. How to turn this crusty old HTML &lt;select&gt; into one of our Sing\n
  36. TODO: would be good to get actual priority field here\n
  37. Principles: progressive enhancement. still render HTML on the server, javascript on the client runs\n
  38. HTML for this:\n
  39. If HTML is already on page:\n\nitemAttrDisplayed: should be default\n
  40. AJAX version\n
  41. Eg for labels field\n
  42. JIRA 4.4+\n
  43. Search\n\nagain: custom field that is searchable, do nothing\n\nCustom field type: what do I need to do to make my custom fields play nice with:\n(next slides) new issue search\n
  44. \n
  45. again, nothing. (this slide is intentionally left blank). same as inline edit\n\nagain, we have gone to great lengths to ensure that exact same html which works in old issue navigator works in classic mode\n\nIntroduce the checkbox multi select\n
  46. How can you turn this html list ...\n
  47. Into this\n\nAnd more:\n- General principles of frontend dev\n- Working with inline edit\n- Working with the new search interface\n
  48. That&amp;#x2019;s actually it. no javascript.\n
  49. When you leave here:\n\nuse this kickass stuff. i&amp;#x2019;ve focussed on custom fields but is is it just for custom fields. no. you can use it anywhere.\n\nbackwards compatibility. we want your plugin to be compatible for all of 5.x. we go to great lengths. i do personally. in fact i personally have put so much work into this that if someone in this room doesn&amp;#x2019;t, i&amp;#x2019;m going to be really upset\n
  50. The shape of things to come ... JIRA 6.0\n\n- more progressive enhancement (a la checkbox multi select). less javascript for specify base actions.\n\n- on the other hand, when js is required, more commitment to a hard front end similar to server side (no regressions).\n- &amp;#x2018;nicer&amp;#x2019; api than NEW_CONTENT_ADDED\n\n- Think of JIRA 5.x as the birth and adolescence of the frontend API, JIRA 6 will be the \n
  51. Go forth.\n\nGo out there and kick some ass\n\n
  52. \n