You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use rick's stepped dialog (insert the picker as well as age/gender as separate components)
requirements for stepped dialog
previous/next buttons configurable (generated or from markup)
fire useful events ( Dialog.onChange, Dialog.open, Dialog.close, Panel.onVisible )
have public methods for calling next() and prev() panels
configurable ordering of panels
index-based trax updating if you pass in an option "traxProcess": "processname"
possible interface
/**
* initialization with options
*/
var myCards = $('somecontainer').sequenceprompt({
panels: { //speficy what panels this stepped dialog will contain by name
age: $( '#age' ), // exists in markup
gender: $( '<div id="gender">' ), // generate new empty panel
picker: $.mustache( someview, sometempate ) // generate from mustache
},
queue: [ this.panels.age, this.panels.gender, this.panels.picker ], // ordering of panels (should auto-generate from panels object if omitted)
traxProcess: 'mytestprocess', // trax process name to update on panel change
autoOpen: false // if true, opens the dialog at the moment the plugin is invoked
});
/**
* loading panels with information (other than in markup)
*/
// insert content
myCards.getPanel('age').text('hello world');
// insert when panel becomes visible (slides into view)
myCards.getPanel('age').bind('panel-enter', function() {
$(this).text('hello world'); // insert content
});
// lazily initilize topic picker upon hitting the "custom" panel
myCards.getPanel('picker').bind('panel-visible', function() {
$(this).sweetTopicPicker( {options} );
});
/**
* available events
*/
myCards.bind('open', function() {}); // dialog open
myCards.bind('close', function() {}); // dialog close
myCards.bind('change', function() {}); // panel changed, "this" is myCards
myCards.bind('panel-enter', function() {}); // panel became visible; "this" is panel
myCards.bind('panel-leave', function() {}); // panel hidden; "this" is panel
trax magic
The trax proccess name is passed in as an option, so we can update said process on the panel-enter event by making a trax ajax call with the panel index as the score, like so:
Meetup.AjaxTrax.update( options.traxProcess, panel.name, _idx from options.order array_, lifetime);
See group start split test (flip forms)
See mad libs/wizard topic adder
scroll nudge on /find
On page ~3 "Not finding anything? Tell us a little about you.."
age
gender
facebook connect/likes/friends
topics
group join profile insanity
Only show what's required in first bit...
then progressively engage people with profile intro, rsvp questions, etc.
category picker instead of topic picker on group join
(See Rick's sequence prompt signup flow topic picker)
remove dead ends
Every piece of content should be interactive/useful (including dismissal of stuff you don't like).
Provides a sense of control/trust.
Where first 5 is concerned, maybe shares for reg/joins.
group subscribe/follow
lightweight way to follow group events/updates. no profile required.
better ways to share, better experience for the receiver of the share
Specific flows for FB invites, for example.
asking "why" when it comes to interests
So we know that "hiking" is a hobby and "tech" is a job and/or hobby; builds trust with user.
Themes from ideas
steps; transparent, actionable, and persistent
making topics a core part of the UX (find page controls, bio, etc.), not just our recommendations
light actions (follow) without dead ends (email verification)