merge feature/musician_profile_enhancements
This commit is contained in:
commit
caca4165fe
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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('<li>');
|
||||
// var checked = '';
|
||||
// if (instruments && $.inArray(val.id, selectedInstruments) > -1) {
|
||||
// checked = 'checked';
|
||||
// }
|
||||
|
||||
// $instruments.append('<input type="checkbox" value="' + val.id + '" ' + checked + ' />' + val.description);
|
||||
// $instruments.append('</li>');
|
||||
// });
|
||||
// }
|
||||
}
|
||||
|
||||
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);
|
||||
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
<input id="{id}" value="{id}" {checked} type="checkbox" />{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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
@ -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
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<% Instrument.standard_list.each do |instrument| %>
|
||||
<tr>
|
||||
<td><input name="<%= instrument.id %>" type="checkbox" /><%= instrument.description %></td>
|
||||
<td align="right" width="50%"><select class='proficiency_selector'><option value="1">Beginner</option><option value="2">Intermediate</option><option value="3">Expert</option></select></td>
|
||||
<td align="right" width="50%"><select class='proficiency_selector'<option value="1">Beginner</option><option value="2">Intermediate</option><option value="3">Expert</option></select></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
Loading…
Reference in New Issue