diff --git a/web/app/assets/javascripts/band_setup.js b/web/app/assets/javascripts/band_setup.js
index d8a8a51ee..15a869dc1 100644
--- a/web/app/assets/javascripts/band_setup.js
+++ b/web/app/assets/javascripts/band_setup.js
@@ -9,6 +9,8 @@
// accounts_profiles.js
context.JK.BandSetupScreen = function (app) {
+ var NONE_SPECIFIED = 'None specified'
+ var ui = new context.JK.UIHelper(JK.app)
var logger = context.JK.logger;
var rest = context.JK.Rest();
var inviteMusiciansUtil = null;
@@ -22,12 +24,12 @@
var nilOptionText = 'n/a';
var bandId = '';
var friendInput=null;
-
- // TODO: Use a single variable for a mutually exclusive option:
- var step1, step2;
- var isSaving = false;
+ var bandType=null;
+ var bandStatus=null;
+ var concertCount=null;
var currentStep = 0;
var STEPS_COUNT=5;
+ var $selectedInstruments=[]
function navBack() {
if (currentStep>0) {
@@ -58,7 +60,7 @@
}
}
- function renderCurrentPange() {
+ function renderCurrentPage() {
$(".band-step").addClass("hidden")
$("#band-setup-step-" + currentStep).removeClass("hidden")
if(currentStep==0) {
@@ -71,10 +73,30 @@
$("#btn-band-setup-back").removeClass("hidden")
$("#btn-band-setup-next").removeClass("hidden").html("SAVE & FINISH")
}
+ renderOptionalControls()
}
- function is_new_record() {
- return bandId.length == 0;
+ function renderOptionalControls(e) {
+ if(e){e.stopPropagation()}
+
+ // Is new member selected?
+ if ($('input[name="add_new_members"]:checked').val()=="yes") {
+ $(".new-member-dependent").removeClass("hidden")
+ } else {
+ $(".new-member-dependent").addClass("hidden")
+ }
+
+ // Is paid gigs selected?
+ if ($('input[name="paid_gigs"]:checked').val()=="yes") {
+ $(".paid-gigs-dependent").removeClass("hidden")
+ } else {
+ $(".paid-gigs-dependent").addClass("hidden")
+ }
+ return false;
+ }
+
+ function isNewBand() {
+ return bandId==null || typeof(bandId)=='undefined' || bandId.length == 0;
}
function removeErrors() {
@@ -107,11 +129,18 @@
// website
$('#band-website').val('');
+
+ $("#new-member-no").iCheck('check').attr('checked', 'checked')
+ $("#paid-gigs-no").iCheck('check').attr('checked', 'checked')
+ $("#free-gigs-no").iCheck('check').attr('checked', 'checked')
+ $('#touring-option').val('no')
- resetGenres();
-
- $("#band-setup-step-1").show();
- $("#band-setup-step-2").hide();
+
+ $("#play-commitment").val('1')
+ $("#hourly-rate").val("0.0")
+ $("#gig-minimum").val("0.0")
+ resetGenres();
+ renderDesiredExperienceLabel([])
$(friendInput)
.unbind('blur')
@@ -163,7 +192,8 @@
}
function buildBand() {
- var band = {};
+ var band = {instruments:[]};
+ band.id = (isNewBand()) ? null : bandId;
band.name = $("#band-name").val();
band.website = $("#band-website").val();
band.biography = $("#band-biography").val();
@@ -171,15 +201,48 @@
band.state = $("#band-region").val();
band.country = $("#band-country").val();
- if (step2) {
+ band.band_type = bandType.val();
+ band.band_status= bandStatus.val();
+ band.concert_count= concertCount.val();
+
+ band.add_new_members = $('input[name="add_new_members"]:checked').val()=="yes"
+ band.paid_gigs = $('input[name="paid_gigs"]:checked').val()=="yes"
+ band.free_gigs=$('input[name="free_gigs"]:checked').val()=="yes"
+ band.touring_option=$('#touring-option').val()=="yes"
+
+ band.play_commitment=$("#play-commitment").val()
+ band.hourly_rate=$("#hourly-rate").val()
+ band.gig_minimum=$("#gig-minimum").val()
+
+ if (currentStep==3) {
band.genres = getSelectedGenres();
band.validate_genres = true
} else {
band.validate_genres = false
}
+
+
+ $.each($selectedInstruments, function(index, instrument) {
+ var h = {}
+ h.instrument_id = instrument.id
+ h.proficiency_level = instrument.level
+ band.instruments.push(h)
+ })
+
return band;
}
+ function renderDesiredExperienceLabel(selectedInstruments) {
+ $selectedInstruments=selectedInstruments
+ var instrumentText=""
+ $.each($selectedInstruments, function(index, instrument) {
+ if (instrumentText.length!=0) {instrumentText += ", "}
+ instrumentText += instrument.name
+ })
+
+ $("#desired-experience-label").html(($selectedInstruments && $selectedInstruments.length > 0) ? instrumentText : NONE_SPECIFIED)
+ }
+
function showProfile(band_id) {
context.location = "/client#/bandProfile/" + band_id;
}
@@ -196,7 +259,7 @@
unbindNavButtons()
var band = buildBand()
- var saveBandFn = (is_new_record()) ? rest.createBand : rest.updateBand
+ var saveBandFn = (isNewBand()) ? rest.createBand : rest.updateBand
saveBandFn(band)
.done(function (response) {
saveInvitations()
@@ -211,8 +274,7 @@
})
.always(function (jqXHR) {
bindNavButtons()
- })
- }
+ })
}
function createBandInvitations(bandId, onComplete) {
@@ -248,16 +310,16 @@
var stepNum = data['d'].substring(4)
if(stepNum) {
currentStep=stepNum
- delete data['d'];
- resetForm();
+ delete data['d'];
}
}
+ resetForm();
}
function afterShow(data) {
inviteMusiciansUtil.loadFriends();
- if (!is_new_record()) {
+ if (!isNewBand()) {
$("#band-change-photo").html('Upload band photo.');
$('.band-photo').removeClass("hidden")
@@ -277,15 +339,48 @@
$('.band-photo').addClass("hidden")
}
- renderCurrentPange()
+ renderCurrentPage()
}
+ function loadDesiredExperience() {
+
+ }
+
+
function loadBandDetails() {
rest.getBand(bandId).done(function (band) {
$("#band-name").val(band.name);
$("#band-website").val(band.website);
$("#band-biography").val(band.biography);
+ bandType.val(band.band_type)
+ bandStatus.val(band.band_status)
+ concertCount.val(band.concert_count)
+
+ if (band.add_new_members){
+ $("#new-member-no").iCheck('check').attr('checked', 'checked')
+ } else {
+ $("#new-member-yes").iCheck('check').attr('checked', 'checked')
+ }
+
+ if (band.paid_gigs) {
+ $("#paid-gigs-no").iCheck('check').attr('checked', 'checked')
+ } else {
+ $("#paid-gigs-yes").iCheck('check').attr('checked', 'checked')
+ }
+
+ if (band.free_gigs) {
+ $("#free-gigs-no").iCheck('check').attr('checked', 'checked')
+ } else {
+ $("#free-gigs-yes").iCheck('check').attr('checked', 'checked')
+ }
+
+ $('#touring-option').val(band.touring_option ? 'yes' : 'no')
+ $("#play-commitment").val(band.play_commitment)
+ $("#hourly-rate").val(band.hourly_rate)
+ $("#gig-minimum").val(band.gig_minimum)
+
+ // Initialize avatar
if (band.photo_url) {
$("#band-avatar").attr('src', band.photo_url);
}
@@ -298,7 +393,18 @@
});
});
- // TODO: initialize avatar
+ renderOptionalControls();
+
+ $.each(band.instruments, function(index, instrument) {
+ var h = {}
+ h.id = instrument.instrument_id
+ h.level = instrument.proficiency_level
+ h.approve = true
+ $selectedInstruments.push(h)
+ })
+
+ renderDesiredExperienceLabel($selectedInstruments)
+
});
}
@@ -438,8 +544,7 @@
$('#selected-band-invitees').append(invitationHtml);
$('#band-invitee-input').select();
selectedFriendIds[data] = true;
- }
- else {
+ } else {
$('#band-invitee-input').select();
context.alert('Invitation already exists for this musician.');
}
@@ -527,9 +632,23 @@
invitationDialog.showFacebookDialog();
});
+ $('a#choose-desired-experience').on("click", chooseExperience)
+
+ $('#band-setup').on('ifToggled', 'input[type="radio"].dependent-master', renderOptionalControls);
+
$(friendInput).focus(function() { $(this).val(''); })
}
+ function chooseExperience(e) {
+ e.stopPropagation()
+ ui.launchInstrumentSelectorDialog("new member(s)", $selectedInstruments, function(selectedInstruments) {
+ $selectedInstruments = selectedInstruments
+ renderDesiredExperienceLabel($selectedInstruments)
+ return false
+ })
+ return false
+ }
+
function initialize(invitationDialogInstance, friendSelectorDialog) {
inviteMusiciansUtil = new JK.InviteMusiciansUtil(app);
inviteMusiciansUtil.initialize(friendSelectorDialog);
@@ -542,7 +661,18 @@
'afterShow': afterShow
};
+ bandType=$("#band-type")
+ bandStatus=$("#band-status")
+ concertCount=$("#concert-count")
+
app.bindScreen('band/setup', screenBindings);
+
+ $('input[type=radio]')
+ .iCheck({
+ checkboxClass: 'icheckbox_minimal',
+ radioClass: 'iradio_minimal',
+ inheritClass: true
+ });
}
this.initialize = initialize;
diff --git a/web/app/assets/javascripts/dialog/instrumentSelectorDialog.js b/web/app/assets/javascripts/dialog/instrumentSelectorDialog.js
new file mode 100644
index 000000000..3346eef65
--- /dev/null
+++ b/web/app/assets/javascripts/dialog/instrumentSelectorDialog.js
@@ -0,0 +1,82 @@
+(function(context,$) {
+
+ "use strict";
+ context.JK = context.JK || {};
+ context.JK.InstrumentSelectorDialog = function(app, type, instruments, callback) {
+ var logger = context.JK.logger;
+ var rest = context.JK.Rest();
+ var $dialog = null;
+ var dialogId = 'instrument-selector-dialog';
+ var $screen = $('#' + dialogId);
+ var $btnSelect = $screen.find(".btn-select-instruments");
+ var $instructions = $screen.find('.instructions');
+ var $instruments = $screen.find('.instruments');
+ var $instrumentSelectorContainer = $screen.find('.instrument-selector-container')
+ var instrumentSelector = new JK.InstrumentSelector(app, $instrumentSelectorContainer);
+ var $callback = callback
+ var selectedInstruments = instruments
+ function beforeShow(data) {
+ instrumentSelector.initialize(false)
+ instrumentSelector.render($instrumentSelectorContainer)
+ instrumentSelector.setSelectedInstruments(selectedInstruments)
+ }
+
+ function afterShow(data) {
+ // var instrumentList = context.JK.instruments;
+
+ // $instruments.empty();
+
+ // if (instrumentList) {
+ // $.each(instrumentList, function(index, val) {
+ // $instruments.append('
');
+ // var checked = '';
+ // if (instruments && $.inArray(val.id, selectedInstruments) > -1) {
+ // checked = 'checked';
+ // }
+
+ // $instruments.append('' + val.description);
+ // $instruments.append('');
+ // });
+ // }
+ }
+
+ function afterHide() {
+ $btnSelect.unbind("click")
+ }
+
+ function showDialog() {
+ return app.layout.showDialog(dialogId);
+ }
+
+ function events() {
+ $btnSelect.unbind("click").bind("click", function(evt) {
+ evt.preventDefault();
+
+ selectedInstruments = instrumentSelector.getSelectedInstruments()
+ $callback(selectedInstruments)
+ app.layout.closeDialog(dialogId);
+ return false;
+
+ });
+ }
+
+ function initialize() {
+ var dialogBindings = {
+ 'beforeShow' : beforeShow,
+ 'afterShow' : afterShow,
+ 'afterHide': afterHide
+ };
+
+ app.bindDialog(dialogId, dialogBindings);
+
+ $instructions.html('Select the instruments and expertise you need for ' + type + ':');
+
+ events();
+ }
+
+ this.initialize = initialize;
+ this.showDialog = showDialog;
+ }
+
+ return this;
+})(window,jQuery);
\ No newline at end of file
diff --git a/web/app/assets/javascripts/instrumentSelector.js b/web/app/assets/javascripts/instrumentSelector.js
index 57d6d6e51..51e740b75 100644
--- a/web/app/assets/javascripts/instrumentSelector.js
+++ b/web/app/assets/javascripts/instrumentSelector.js
@@ -4,18 +4,19 @@
context.JK = context.JK || {};
context.JK.InstrumentSelectorDeferred = null;
- context.JK.InstrumentSelector = (function(app) {
+ context.JK.InstrumentSelector = (function(app, parentSelector) {
var logger = context.JK.logger;
var rest = new context.JK.Rest();
var _instruments = []; // will be list of structs: [ {label:xxx, value:yyy}, {...}, ... ]
var _rsvp = false;
- var _parentSelector = null;
+ if (typeof(_parentSelector)=="undefined") {_parentSelector=null}
+ var _parentSelector = parentSelector;
var deferredInstruments = null;
var self = this;
function reset() {
- $('input[type=checkbox]', _parentSelector).attr('checked', '');
+ $('input[type="checkbox"]', _parentSelector).attr('checked', '');
if (_rsvp) {
$('select.rsvp_count option', _parentSelector).eq(0).prop('selected', true);
$('select.rsvp_level option', _parentSelector).eq(0).prop('selected', true);
@@ -88,7 +89,7 @@
var $selectedVal = $('input[type="checkbox"]:checked', _parentSelector);
$.each($selectedVal, function (index, value) {
var id = $(value).attr('session-instrument-id');
- var name = $('label[for="' + $(value).attr('id') + '"]', _parentSelector).text();
+ var name = $('label[for="' + $(value).attr('id') + '"]', _parentSelector).text().trim();
if (_rsvp) {
var count = $('select[session-instrument-id="' + id + '"].rsvp-count', _parentSelector).val();
var rsvp_level = $('select[session-instrument-id="' + id + '"].rsvp-level', _parentSelector).val();
@@ -99,16 +100,16 @@
selectedInstruments.push({id: id, name: name, level: level});
}
});
+
return selectedInstruments;
}
function setSelectedInstruments(instrumentList) {
if (!instrumentList) {
return;
- }
-
- $.each(instrumentList, function (index, value) {
- $('input[type=checkbox][id="' + value.id + '"]')
+ }
+ $.each(instrumentList, function (index, value) {
+ $('input[type="checkbox"][session-instrument-id="' + value.id + '"]')
.attr('checked', 'checked')
.iCheck({
checkboxClass: 'icheckbox_minimal',
@@ -116,11 +117,11 @@
inheritClass: true
});
if (_rsvp) {
- $('select[session-instrument-id="' + value.value + '"].rsvp-count', _parentSelector).val(value.count);
- $('select[session-instrument-id="' + value.value + '"].rsvp-level', _parentSelector).val(value.level);
+ $('select[session-instrument-id="' + value.id + '"].rsvp-count', _parentSelector).val(value.count);
+ $('select[session-instrument-id="' + value.id + '"].rsvp-level', _parentSelector).val(value.level);
}
else {
- $('select[session-instrument-id="' + value.value + '"]').val(value.level);
+ $('select[session-instrument-id="' + value.id + '"]').val(value.level);
}
});
}
diff --git a/web/app/assets/javascripts/ui_helper.js b/web/app/assets/javascripts/ui_helper.js
index 01d2aa403..11fb08af1 100644
--- a/web/app/assets/javascripts/ui_helper.js
+++ b/web/app/assets/javascripts/ui_helper.js
@@ -62,6 +62,12 @@
});
}
+ function launchInstrumentSelectorDialog(type, instruments, callback) {
+ var instrumentSelectorDialog = new JK.InstrumentSelectorDialog(JK.app, type, instruments, callback);
+ instrumentSelectorDialog.initialize();
+ return instrumentSelectorDialog.showDialog();
+ }
+
function launchGenreSelectorDialog(type, genres, callback) {
var genreSelectorDialog = new JK.GenreSelectorDialog(JK.app, type, genres, callback);
genreSelectorDialog.initialize();
@@ -83,6 +89,7 @@
this.launchRsvpCreateSlotDialog = launchRsvpCreateSlotDialog;
this.launchSessionStartDialog = launchSessionStartDialog;
this.launchGenreSelectorDialog = launchGenreSelectorDialog;
+ this.launchInstrumentSelectorDialog = launchInstrumentSelectorDialog;
this.launchRecordingSelectorDialog = launchRecordingSelectorDialog;
return this;
diff --git a/web/app/assets/stylesheets/client/band.css.scss b/web/app/assets/stylesheets/client/band.css.scss
index c7e421ab2..a25dd2d9b 100644
--- a/web/app/assets/stylesheets/client/band.css.scss
+++ b/web/app/assets/stylesheets/client/band.css.scss
@@ -1,13 +1,45 @@
@import "client/common.css.scss";
#band-setup, #band-profile {
- input, select, textarea {
- @include border_box_sizing;
- width: 100%;
- padding: 2px 4px 2px 2px;
+ font-family: Raleway, Arial, Helvetica, verdana, arial, sans-serif;
+ .band-field {
+ input[type="text"], select, textarea {
+ @include border_box_sizing;
+ width: 100%;
+ padding: 2px 4px 2px 2px;
+ }
+
}
- td.band-biography {
+ // Mimic style of easydropdown selects:
+ input[type="number"] {
+ border-radius: 6px;
+ background-color: #c5c5c5;
+ border-right-style: outset;
+ border-bottom-style: outset;
+ height: 15px;
+ padding: 5px;
+ }
+
+ .radio-field {
+ display: inline;
+ padding: 2px;
+ margin: 0.5em 2em 0.5em 0.25em;
+ label {
+ display: inline;
+ padding: 2px;
+ }
+ .iradio-inline {
+ display: inline-block;
+ //padding: 2px;
+ }
+ }
+
+ tr:nth-child(even) td {
+ padding-bottom: 1em;
+ }
+
+ td.band-biography, td.tdBandGenres {
height:100%;
vertical-align: top;
#band-biography {
@@ -18,7 +50,7 @@
.band-setup-genres {
width:100%;
- height:90px;
+ height:200px;
background-color:#c5c5c5;
border:none;
-webkit-box-shadow: inset 2px 2px 3px 0px #888;
@@ -346,12 +378,14 @@
width: 100%;
}
+
#band-setup-form {
- padding: 0.25em 0.5em 0.25em 0.25em;
- #band-setup-table {
-
+ padding: 0.25em 0.5em 1.25em 0.25em;
+ table.band-form-table {
+ width: 100%;
+ margin: 1em;
}
-
+
.easydropdown {
padding: 0 3px;
width:100%;
@@ -368,10 +402,30 @@
label {
margin-bottom:2px;
}
+
+ #desired-experience-label {
+ font-style: italic;
+ }
+ }
+
+
+ .band-setup-genre {
+ input {
+ display: inline;
+ width: auto !important;
+ }
+ label {
+ display: inline;
+ width: auto;
+ }
+ }
+
+ label {
+ font-size: 1.1em;
}
}
-#musicians-screen {
+#band-screen {
.builder-section {
padding: 10px;
@@ -398,7 +452,6 @@
margin-left: auto;
margin-right: auto;
}
-
}
}
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/dialogs/instrumentSelectorDialog.css.scss b/web/app/assets/stylesheets/dialogs/instrumentSelectorDialog.css.scss
new file mode 100644
index 000000000..59760670d
--- /dev/null
+++ b/web/app/assets/stylesheets/dialogs/instrumentSelectorDialog.css.scss
@@ -0,0 +1,44 @@
+@import "client/common";
+
+#instrument-selector-dialog {
+
+ min-height:initial;
+
+
+ .dialog-inner {
+ .content-body {
+ max-height: auto;
+ .content-body-scroller {
+ height: 350px;
+ overflow: scroll;
+ background-color:#c5c5c5;
+ border: 1px inset;
+ }
+ border: 1px solid #222;
+ margin: 4px 4px 8px 4px;
+ }
+
+ .instructions {
+ font-size:16px;
+ }
+
+ .dropdown {
+ box-shadow:0 0 0 0;
+ }
+ }
+
+ .action-buttons {
+ margin-bottom:10px;
+ }
+
+ .instruments {
+
+ }
+
+ label {
+ display:inline;
+ color: black;
+ font-size:16px;
+ }
+
+}
\ No newline at end of file
diff --git a/web/app/views/api_bands/show.rabl b/web/app/views/api_bands/show.rabl
index 74d8dd08d..dde9f8760 100644
--- a/web/app/views/api_bands/show.rabl
+++ b/web/app/views/api_bands/show.rabl
@@ -1,7 +1,9 @@
object @band
attributes :id, :name, :city, :state, :country, :location, :website, :biography, :photo_url, :logo_url, :liker_count, :follower_count, :recording_count, :session_count,
-:original_fpfile_photo, :cropped_fpfile_photo, :crop_selection_photo
+:original_fpfile_photo, :cropped_fpfile_photo, :crop_selection_photo,
+:band_type, :band_status, :concert_count, :add_new_members, :play_commitment, :touring_option, :paid_gigs,
+:free_gigs, :hourly_rate, :gig_minimum
child :users => :musicians do
attributes :id, :first_name, :last_name, :name, :photo_url
@@ -16,6 +18,10 @@ child :users => :musicians do
end
end
+child :instruments => :instruments do
+ attributes :id, :instrument_id, :proficiency_level
+end
+
child :genres => :genres do
attributes :id, :description
#partial('api_genres/index', :object => @band.genres)
diff --git a/web/app/views/clients/_band_setup.html.slim b/web/app/views/clients/_band_setup.html.slim
index 8f9c12451..4a9e2c3f2 100644
--- a/web/app/views/clients/_band_setup.html.slim
+++ b/web/app/views/clients/_band_setup.html.slim
@@ -7,126 +7,228 @@
= render "screen_navigation"
.content-body
.content-body-scroller
- form#band-setup-form
- div style="display:block;"
- #band-setup-step-0.band-step.content-wrapper style="padding:10px 35px10px 35px;"
- h2 edit profile: basics
- table width="100%"
- tr
- td colspan="2"
-
- tr#name_row
- td colspan="2"
- .band-photo.hidden
- span.field
- a.band-avatar-profile href="#"
- = image_tag "shared/avatar_generic_band.png", {:id => "band-avatar", :align=>"absmiddle", :height => 88, :width => 88 }
- span.field
- a#band-change-photo.small.ml20 href="#"
- | Upload band photo.
-
- .band-name
- .field
- label for="band-name"
- | Band Name:
- input#band-name type="text" maxlength="1024" value=""
- / td#tdBandWebsite[]
- / .field
- / label for="band-website"
- / | Web Site:
- / input#band-website[type="text" maxlength="4000" value=""]
- tr
- td.band-country
- .field
- label for="band-country"
- | Country:
- select#band-country
- td.band-biography rowspan="3"
- .field
- label for="band-biography"
- | Description / Bio:
- textarea#band-biography rows="8"
- tr
- td.band-region
- .field
- label for="band-region"
- | State/Region:
- select#band-region
- tr
- td.band-city
- .field
- label for="band-city"
- | City:
- select#band-city
-
- / td#tdBandGenres[valign="top"]
- / .field
- / label for="band-genres"
- / | Genres:
- / .band-setup-genres.w90
- / table#band-genres[width="100%" cellpadding="10" cellspacing="6"]
- #band-setup-step-1.band-step.content-wrapper
- h2 edit profile: musical experience
- #band-setup-step-2.band-step.content-wrapper
- h2 edit profile: current interests
- #band-setup-step-3.band-step.content-wrapper
- h2 edit profile: online presence & performance samples
- #band-setup-step-4.band-step.content-wrapper
- h2 invite members
- br
- #band-setup-invite-musicians
- br
- br
- | If your bandmates are not on JamKazam yet, use any of the options below to invite them to join the service.
- br
- br
- .left.mr20
- .left
- a.btn-email-invitation
- = image_tag("content/icon_gmail.png", :size => "24x24", :align => "absmiddle")
- .right.mt5.ml5
- | E-mail
- .left.mr20
- .left
- a.btn-facebook-invitation
- = image_tag("content/icon_facebook.png", :size => "24x24", :align => "absmiddle")
- .right.mt5.ml5
- | Facebook
- .left.left
- .left
- a.btn-gmail-invitation
- = image_tag("content/icon_google.png", :size => "24x24", :align => "absmiddle")
- .right.mt5.ml5
- | Google+
- / br clear="all"
- / .right
- / a#btn-band-setup-back.button-grey
- / | BACK
- / |
- / a#btn-band-setup-save.button-orange
- / | CREATE BAND
- / .clearall
+ form#band-setup-form
+ #band-setup-step-0.band-step.content-wrapper
+ h2 set up band: basics
+ table.band-form-table
+ tr
+ td colspan="2"
- br clear="all"
- .right
- a#btn-band-setup-cancel.nav-button.button-grey
- | CANCEL
- a#btn-band-setup-back.nav-button.button-grey.hidden
- | BACK
- a#btn-band-setup-next.nav-button.button-orange
- | SAVE & NEXT
- .clearall
+ tr#name_row
+ td colspan="2"
+ .band-photo.hidden
+ span.field
+ a.band-avatar-profile href="#"
+ = image_tag "shared/avatar_generic_band.png", {:id => "band-avatar", :align=>"absmiddle", :height => 88, :width => 88 }
+ span.field
+ a#band-change-photo.small.ml20 href="#"
+ | Upload band photo.
+
+ .band-name
+ .field.band-field
+ label for="band-name"
+ | Band Name:
+ input#band-name type="text" maxlength="1024" value=""
+ / td#tdBandWebsite[]
+ / .field
+ / label for="band-website"
+ / | Web Site:
+ / input#band-website[type="text" maxlength="4000" value=""]
+ tr
+ td.band-country
+ .field.band-field
+ label for="band-country"
+ | Country:
+ select#band-country
+ td.band-biography rowspan="3"
+ .field.band-field
+ label for="band-biography"
+ | Description / Bio:
+ textarea#band-biography rows="8"
+ tr
+ td.band-region
+ .field.band-field
+ label for="band-region"
+ | State/Region:
+ select#band-region
+ tr
+ td.band-city
+ .field.band-field
+ label for="band-city"
+ | City:
+ select#band-city
+
+
+ #band-setup-step-1.band-step.content-wrapper
+ h2 set up band: musical experience
+
+ table.band-form-table
+ tr
+ td#tdBandGenres rowspan="3"
+ label for="band-genres" What genres do you play?
+ .band-setup-genres
+ table#band-genres
+
+ td
+ .field
+ label for="band-type" Type
+ select#band-type.easydropdown name="band_type"
+ option value="" Not Specified
+ option value="virtual" Virtual
+ option value="physical" Physical
+
+ tr
+ td
+ .field
+ label for="band-status" Status
+ select#band-status.easydropdown name="band_status"
+ option value="" Not Specified
+ option value="amateur" Amateur
+ option value="professional" Professional
+
+ tr
+ td
+ .field
+ label for="concert-count" Concert Gigs Played
+ select#concert-count.easydropdown name="concert_count"
+ option value="" Not Specified
+ option value="0" Zero
+ option value="1" Under 10
+ option value="2" 10 to 50
+ option value="3" 50 to 100
+ option value="4" Over 100
+
+ #band-setup-step-2.band-step.content-wrapper
+ h2 set up band: current interests
+ table.band-form-table
+ tr
+ td
+ label.strong-label for="new-member"
+ | We want to add a new member
+ a.help help-topic="profile-interests-virtual-band" [?]
+ td.new-member-dependent
+ label for="desired-experience"
+ | Desired Experience
+ a#choose-desired-experience select
+ td.new-member-dependent
+ label for="play-commitment" Play Commitment
+ td.new-member-dependent
+ label for="touring-option" Touring Option
+ tr
+ td
+ .radio-field
+ input#new-member-yes.iradio-inline.dependent-master type="radio" name="add_new_members" value='yes'
+ label for='new-member-yes' Yes
+ .radio-field
+ input#new-member-no.iradio-inline.dependent-master type="radio" name="add_new_members" value='no'
+ label for='new-member-no' No
+ td.new-member-dependent
+ #desired-experience-label None specified
+ td.new-member-dependent
+ select#play-commitment.easydropdown name="play_commitment"
+ option value="1" Infrequent
+ option value="2" Once a Week
+ option value="3" 2-3 Times Per Week
+ option value="4" 4+ Times Per Week
+ td.new-member-dependent
+ select#touring-option.easydropdown name="touring_option"
+ option value="yes" Yes
+ option value="no" No
+ tr
+ td
+ label.strong-label for="paid-gigs"
+ | We want to play paid gigs
+ a.help help-topic="profile-interests-paid-gigs" [?]
+ td.paid-gigs-dependent
+ label for="hourly-rate" Hourly Rate:
+ td.paid-gigs-dependent
+ label for="gig-minimum" Gig Minimum:
+ tr
+ td
+ .radio-field
+ input#paid-gigs-yes.iradio-inline.dependent-master type="radio" name="paid_gigs" value='yes'
+ label for="paid-gigs-yes" Yes
+ .radio-field
+ input#paid-gigs-no.iradio-inline.dependent-master type="radio" name="paid_gigs" value='no'
+ label for="paid-gigs-no" No
+ td.paid-gigs-dependent
+ input#hourly-rate type="number" name="hourly_rate"
+ td.paid-gigs-dependent
+ input#gig-minimum type="number" name="gig_minimum"
+ tr
+ td
+ label.strong-label for="free-gigs"
+ | We want to play free gigs
+ a.help help-topic="profile-interests-free-gigs" [?]
+ tr
+ td
+ .radio-field
+ input#free-gigs-yes.iradio-inline type="radio" name="free_gigs" value='yes'
+ label for="free-gigs-yes" Yes
+ .radio-field
+ input#free-gigs-no.iradio-inline type="radio" name="free_gigs" value='no'
+ label for="free-gigs-no" No
+
+ #band-setup-step-3.band-step.content-wrapper
+ h2 set up band: online presence & performance samples
+ table.band-form-table
+ #band-setup-step-4.band-step.content-wrapper
+ h2 invite members
+ br
+ #band-setup-invite-musicians
+ br
+ br
+ | If your bandmates are not on JamKazam yet, use any of the options below to invite them to join the service.
+ br
+ br
+ .left.mr20
+ .left
+ a.btn-email-invitation
+ = image_tag("content/icon_gmail.png", :size => "24x24", :align => "absmiddle")
+ .right.mt5.ml5
+ | E-mail
+ .left.mr20
+ .left
+ a.btn-facebook-invitation
+ = image_tag("content/icon_facebook.png", :size => "24x24", :align => "absmiddle")
+ .right.mt5.ml5
+ | Facebook
+ .left.left
+ .left
+ a.btn-gmail-invitation
+ = image_tag("content/icon_google.png", :size => "24x24", :align => "absmiddle")
+ .right.mt5.ml5
+ | Google+
+ / br clear="all"
+ / .right
+ / a#btn-band-setup-back.button-grey
+ / | BACK
+ / |
+ / a#btn-band-setup-save.button-orange
+ / | CREATE BAND
+ / .clearall
+
+ br clear="all"
+ .right
+ a#btn-band-setup-cancel.nav-button.button-grey
+ | CANCEL
+ a#btn-band-setup-back.nav-button.button-grey.hidden
+ | BACK
+ a#btn-band-setup-next.nav-button.button-orange
+ | SAVE & NEXT
+ .clearall
+
script#template-band-setup-genres type="text/template"
- tr
+ tr.band-setup-genre
tr
- td
- input value="{id}" {checked} type="checkbox"
- | {description}
+ td
+ {description}
+
script#template-band-invitation type="text/template"
- .invitation user-id="{userId}"
- | {userName}
+ .invitation user-id="{{userId}}"
+ | {{userName}}
a
img src="shared/icon_delete_sm.png" width="13" height="13"
diff --git a/web/app/views/dialogs/_dialogs.html.haml b/web/app/views/dialogs/_dialogs.html.haml
index 8f2905797..6f29cde19 100644
--- a/web/app/views/dialogs/_dialogs.html.haml
+++ b/web/app/views/dialogs/_dialogs.html.haml
@@ -38,6 +38,7 @@
= render 'dialogs/loginRequiredDialog'
= render 'dialogs/jamtrackPaymentHistoryDialog'
= render 'dialogs/singlePlayerProfileGuard'
+= render 'dialogs/instrumentSelectorDialog'
= render 'dialogs/genreSelectorDialog'
= render 'dialogs/recordingSelectorDialog'
= render 'dialogs/soundCloudPlayerDialog'
\ No newline at end of file
diff --git a/web/app/views/dialogs/_instrumentSelectorDialog.html.haml b/web/app/views/dialogs/_instrumentSelectorDialog.html.haml
new file mode 100644
index 000000000..85ea6f938
--- /dev/null
+++ b/web/app/views/dialogs/_instrumentSelectorDialog.html.haml
@@ -0,0 +1,17 @@
+.dialog.dialog-overlay-sm{layout: 'dialog', 'layout-id' => 'instrument-selector-dialog', id: 'instrument-selector-dialog'}
+ .content-head
+ = image_tag "content/icon_checkmark_circle.png", {:width => 20, :height => 20, :class => 'content-icon' }
+ %h1
+ = 'select instruments & expertise'
+ .dialog-inner
+ %strong
+ .instructions
+ %br{:clear => "all"}/
+ .content-body
+ .content-body-scroller
+ .instrument-selector-container
+ =render "users/instrument_selector"
+
+ .right.action-buttons
+ %a.button-grey.btn-cancel-dialog{'layout-action' => 'cancel'} CANCEL
+ %a.button-orange.btn-select-instruments SELECT
\ No newline at end of file
diff --git a/web/app/views/users/_instrument_selector.html.erb b/web/app/views/users/_instrument_selector.html.erb
index 0b8c1d180..3101f6473 100644
--- a/web/app/views/users/_instrument_selector.html.erb
+++ b/web/app/views/users/_instrument_selector.html.erb
@@ -2,7 +2,7 @@
<% Instrument.standard_list.each do |instrument| %>
| <%= instrument.description %> |
- |
+ |
<% end %>
\ No newline at end of file