Skip to content
Extraits de code Groupes Projets
Valider a0ea8c85 rédigé par Dennis Collinson's avatar Dennis Collinson
Parcourir les fichiers

Update aspects dropdown to say number of selected aspects

parent c4b36a17
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -11,38 +11,25 @@ app.views.AspectsDropdown = app.views.Base.extend({ ...@@ -11,38 +11,25 @@ app.views.AspectsDropdown = app.views.Base.extend({
setVisibility : function(evt){ setVisibility : function(evt){
var self = this var self = this
, link = $(evt.target).closest("a") , link = $(evt.target).closest("a")
, visibilityCallbacks = {
'public' : setPublic,
'all-aspects' : setPrivate,
'custom' : setCustom
}
visibilityCallbacks[link.data("visibility")]() if(_.include(['public', 'all-aspects'], link.data('visibility'))) {
this.setAspectIds()
function setPublic (){
deselectAll()
selectAspect()
self.setDropdownText(link.text())
}
function setPrivate (){
deselectAll() deselectAll()
selectAspect() link.parents("li").addClass("selected")
self.setDropdownText(link.text()) self.setDropdownText(link.text())
} } else {
function setCustom (){
deselectOverrides() deselectOverrides()
link.parents("li").toggleClass("selected") link.parents("li").toggleClass("selected")
self.setDropdownText(link.text()) evt.stopImmediatePropagation(); //stop dropdown from going awaay
evt.stopImmediatePropagation();
var selectedAspects = this.$("li.selected")
if(selectedAspects.length > 1) {
self.setDropdownText("In " + this.$("li.selected").length + " aspects")
} else {
self.setDropdownText(selectedAspects.text() || "Private")
}
} }
function selectAspect() { this.setAspectIds()
link.parents("li").addClass("selected")
}
function deselectOverrides() { function deselectOverrides() {
self.$("a.public, a.all-aspects").parent().removeClass("selected") self.$("a.public, a.all-aspects").parent().removeClass("selected")
......
...@@ -356,10 +356,17 @@ div[data-template=flow] { ...@@ -356,10 +356,17 @@ div[data-template=flow] {
.selected i { .selected i {
display: inline-block; display: inline-block;
position: absolute;
left : 3px;
margin-top : 1px;
} }
a { a {
display : inline-block; display : block;
span {
padding-left: 5px;
}
} }
} }
......
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
<span class="text"></span> <span class="caret"></span> <span class="text"></span> <span class="caret"></span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><i class='icon-ok'/><a href="#" class="public" data-aspect-id="public" data-visibility="public">Public</a></li> <li><a href="#" class="public" data-aspect-id="public" data-visibility="public"><i class='icon-ok'/><span>Public</span></a></li>
<li><i class='icon-ok'/><a href="#" class="all-aspects" data-aspect-id="all_aspects" data-visibility="all-aspects">All Aspects</a></li> <li><a href="#" class="all-aspects" data-aspect-id="all_aspects" data-visibility="all-aspects"><i class='icon-ok'/><span>All Aspects</span></a></li>
<li class="divider"></li> <li class="divider"></li>
{{#each current_user.aspects}} {{#each current_user.aspects}}
<li><i class='icon-ok'/><a href="#" data-aspect-id="{{id}}" data-visibility="custom">{{name}}</a></li> <li><a href="#" data-aspect-id="{{id}}" data-visibility="custom"><i class='icon-ok'/><span>{{name}}</span></a></li>
{{/each}} {{/each}}
</ul> </ul>
......
<span class="service-selector-title">Broadcast:</span> <span class="service-selector-title">Broadcast:</span>
<div class="services"> <div class="services">
{{#each current_user.services}} {{#each current_user.services}}
<input type="checkbox" name="services" class="service" value="{{provider}}" />
<img class="legacy-provider-image" src="/assets/social_media_logos/{{provider}}-16x16.png" /> <img class="legacy-provider-image" src="/assets/social_media_logos/{{provider}}-16x16.png" />
<input type="checkbox" name="services" class="service" value="{{provider}}" />
{{/each}} {{/each}}
</div> </div>
...@@ -27,7 +27,7 @@ describe("app.views.AspectsDropdown", function(){ ...@@ -27,7 +27,7 @@ describe("app.views.AspectsDropdown", function(){
this.link.click() this.link.click()
}) })
it("calls set aspect_ids to 'public'", function(){ it("sets aspect_ids to 'public'", function(){
expect(this.view.$("input.aspect_ids").val()).toBe("public") expect(this.view.$("input.aspect_ids").val()).toBe("public")
}) })
...@@ -87,11 +87,22 @@ describe("app.views.AspectsDropdown", function(){ ...@@ -87,11 +87,22 @@ describe("app.views.AspectsDropdown", function(){
expect(this.view.$("input.aspect_ids").val()).toBe("3,7") expect(this.view.$("input.aspect_ids").val()).toBe("3,7")
}) })
it("sets the button text to the number of selected aspects", function(){
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 2 aspects")
this.view.$("a:contains('conf')").click()
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 3 aspects")
this.view.$("a:contains('conf')").click()
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 2 aspects")
})
describe("deselecting another aspect", function(){ describe("deselecting another aspect", function(){
it("removes the clicked aspect", function(){ it("removes the clicked aspect", function(){
expect(this.view.$("input.aspect_ids").val()).toBe("3,7") expect(this.view.$("input.aspect_ids").val()).toBe("3,7")
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 2 aspects")
this.view.$("a:contains('lovers')").click() this.view.$("a:contains('lovers')").click()
expect(this.view.$("input.aspect_ids").val()).toBe("3") expect(this.view.$("input.aspect_ids").val()).toBe("3")
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("sauce")
}) })
}) })
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter