43
App SDK 2.0 RallyOn!

App SDK 2.0

  • Upload
    alanna

  • View
    42

  • Download
    0

Embed Size (px)

DESCRIPTION

App SDK 2.0. RallyOn !. Hour 1 Agenda. Welcome, Overview, & How We Got Here (Mark ) Write an App in 5 Minutes or Less (Kyle) Component List & Help (Mark) Components in Detail ( Charles ). Hour 2 Agenda. Data Interaction (Kyle) Examples & Guides (Mark) Rake File (Charles) - PowerPoint PPT Presentation

Citation preview

Page 1: App SDK 2.0

App SDK 2.0

RallyOn!

Page 2: App SDK 2.0

Hour 1 Agenda

• Welcome, Overview, & How We Got Here (Mark)

• Write an App in 5 Minutes or Less (Kyle)• Component List & Help (Mark)• Components in Detail (Charles)

Page 3: App SDK 2.0

Hour 2 Agenda

• Data Interaction (Kyle)• Examples & Guides (Mark)• Rake File (Charles)• Ext Details (Kyle)

Page 4: App SDK 2.0

Platform

A "platform" is a system that can be programmed and therefore customized by outside developers -- users -- and in that way, adapted to countless needs and niches that the platform's original developers could not have possibly contemplated, much less had time to accommodate.

- Marc Andreessen

Page 5: App SDK 2.0

Rally’s App Platform: What is it?

• The Rally App Platform enables the ‘occasional developer’ to enhance, customize, and extend the Rally product.

Page 6: App SDK 2.0

App Story: Who Closed Defects?

Page 7: App SDK 2.0

App Story: Personal Burndown Chart

Page 8: App SDK 2.0

App Story: Epic Stories by Status

Page 9: App SDK 2.0

App Story: Epic Progress

Page 10: App SDK 2.0

App Story: Planning Board for Very, Very Large Chip Maker

Page 11: App SDK 2.0

Apps Version 1.0 Uptake

1.O Release

Page 12: App SDK 2.0

Past, Present & Future

App SDK 1.0

Rally UI

Rally UI & App SDK 2.0

Page 13: App SDK 2.0

Portfolio Item Kanban

Page 14: App SDK 2.0

Write an Appin 5 Minutes or Less

Page 15: App SDK 2.0

Anatomy of an App

Page 16: App SDK 2.0

Rally.createApp

• Rally.createApp(name, definition)– Name should be unique– Definition should contain launch()

• Created as a subclass of the App Base Class

• launch() called when all dependencies loaded– JS– CSS

• Rendered to body

Page 17: App SDK 2.0

App Base Class

• Rally.app.App– Extends from Ext.Container– launch()– getContext()

• Rally.app.Context– getWorkspace()– getProject()– getDataContext()

Page 18: App SDK 2.0

Hello World

Rally.createApp(‘Rally.app.HelloWorld’, {

launch: function() {

this.add({

xtype: ‘component’,

html: ‘Hello World’

});

}

});

Page 19: App SDK 2.0

Hello Context

Rally.createApp(‘Rally.app.HelloContext’, {

items: [

{ xtype: ‘component’, itemId: ‘project’ }

]

launch: function() {

var context = this.getContext();

this.down(‘#project’)

.update(‘Project: ‘ + context.getProject().ObjectID);

}

});

Page 20: App SDK 2.0

Component List & Help System Overview

Page 21: App SDK 2.0

Landing Page

Page 22: App SDK 2.0

Component List

Page 23: App SDK 2.0

Components – in Detail

Page 24: App SDK 2.0

Data Interaction

Models, Records & Stores

(Oh My)

Page 25: App SDK 2.0

Models

• Specify a WSAPI object type– Defect, HierarchicalRequirement, etc.

• Specify fields– ScheduleState

• Type = String• AllowedValues = [‘Defined’, …, ‘Accepted’]

• Rally.data.ModelFactory– getModel, getModels– Built dynamically from TypeDefinition– Cached per workspace

Page 26: App SDK 2.0

Records

• Instance of a Model• Provide simple CRUD operations

Page 27: App SDK 2.0

Stores

• Collection of Records• Batch read• Sorting, Filtering, Paging• Data provided to all UI components via

stores

• Rally.data.WsapiDataStore

Page 28: App SDK 2.0

Rake File

Page 29: App SDK 2.0

Guides & Examples

Page 30: App SDK 2.0

Guides

Page 31: App SDK 2.0

Examples

Page 32: App SDK 2.0

ExtJS Library Details

Page 33: App SDK 2.0

Class System

• Ext.define(name, definition)– extend– mixins– constructor: function(config) { }– callParent(args)

• Ext.create(name, config)

• http://docs.sencha.com/ext-js/4-0/#!/guide/class_system

Page 34: App SDK 2.0

Class System

Ext.define(‘My.cool.Container’, {

extend: ‘Ext.container’,

constructor: function(config) {

//Do something cool

this.callParent(arguments);

}

});

var coolContainer = Ext.create(‘My.cool.Container’, {

level: 99

});

Page 35: App SDK 2.0

Components

• Ext.Base– Ext.AbstractComponent

• Ext.Component

• initComponent()• destroy()

• http://docs.sencha.com/ext-js/4-0/#!/guide/components

Page 36: App SDK 2.0

Containers

• Ext.Component– Ext.container.AbstractContainer

• Ext.container.Container

• Layouts– auto– hbox, vbox, etc.

• add()

• http://docs.sencha.com/ext-js/4-0/ - !/guide/layouts_and_containers

Page 37: App SDK 2.0

Event Model

• Ext.util.Observable

• Common event signatures:– function(sender, arg1, arg2…)

• Registration– listeners config– on(eventName, handler, scope)

• Cleanup– un(eventName, handler, scope)

Page 38: App SDK 2.0

Events: listeners config

Ext.create(‘Rally.data.WsapiDataStore’, {

model: ‘Defect’,

listeners: {

load: function(store, records) {

}

} });

Page 39: App SDK 2.0

Events: on

var store = Ext.create(‘Rally.data.WsapiDataStore’, {

model: ‘Defect’

});

store.on(‘load’, function(store, records) {

});

Page 40: App SDK 2.0

Xtypes

• Unique shorthand name

• Ext.Container– container

• Rally.ui.cardboard.CardBoard– rallycardboard

• Allow lazy instantiation of components

Page 41: App SDK 2.0

Xtypes: declarative layout

{

xtype: ‘container’,

items: [

{ xtype: ‘component’, cls: ‘header’, itemId: ‘header’ },

{ xtype: ‘component’, cls: ‘body’, itemId: ‘body’ },

{ xtype: ‘component’, cls: ‘footer’, itemId: ‘footer’ }

]

}

Page 42: App SDK 2.0

Xtypes: Dynamic layout

var container = Ext.widget(‘container’);

container.add({

xtype: ‘component’,

itemId: ‘iterations’

});

container.down(‘#iterations’).add({

xtype: ‘rallyiterationcombobox’

});

Page 43: App SDK 2.0

Thank You!If you want to build a ship

don't herd people together to collect woodand don't assign them tasks and work,but rather teach them to long for the

endless immensity of the sea.

Antoine-Marie-Roger de Saint-Exupery