Browse Source

New additions to ratings, automatic generation of html from template

pull/1129/head
jlukic 10 years ago
parent
commit
d26aaabba6
2 changed files with 68 additions and 31 deletions
  1. 67
      src/definitions/modules/rating.js
  2. 32
      src/definitions/modules/rating.less

67
src/definitions/modules/rating.js

@ -56,13 +56,17 @@ $.fn.rating = function(parameters) {
initialize: function() { initialize: function() {
module.verbose('Initializing rating module', settings); module.verbose('Initializing rating module', settings);
console.log($module);
if($icon.size() === 0) {
module.setup.layout();
}
if(settings.interactive) { if(settings.interactive) {
module.enable(); module.enable();
} }
else { else {
module.disable(); module.disable();
} }
if(settings.initialRating) { if(settings.initialRating) {
module.debug('Setting initial rating'); module.debug('Setting initial rating');
module.setRating(settings.initialRating); module.setRating(settings.initialRating);
@ -92,6 +96,20 @@ $.fn.rating = function(parameters) {
; ;
}, },
refresh: function() {
$icon = $module.find(selector.icon);
},
setup: {
layout: function() {
module.debug('Generating icon html dynamically');
$module
.html($.fn.rating.settings.templates.icon(settings.maxRating))
;
module.refresh();
}
},
event: { event: {
mouseenter: function() { mouseenter: function() {
var var
@ -99,23 +117,23 @@ $.fn.rating = function(parameters) {
; ;
$activeIcon $activeIcon
.nextAll() .nextAll()
.removeClass(className.hover)
.removeClass(className.selected)
; ;
$module $module
.addClass(className.hover)
.addClass(className.selected)
; ;
$activeIcon $activeIcon
.addClass(className.hover)
.addClass(className.selected)
.prevAll() .prevAll()
.addClass(className.hover)
.addClass(className.selected)
; ;
}, },
mouseleave: function() { mouseleave: function() {
$module $module
.removeClass(className.hover)
.removeClass(className.selected)
; ;
$icon $icon
.removeClass(className.hover)
.removeClass(className.selected)
; ;
}, },
click: function() { click: function() {
@ -178,18 +196,20 @@ $.fn.rating = function(parameters) {
: 0, : 0,
$activeIcon = $icon.eq(ratingIndex) $activeIcon = $icon.eq(ratingIndex)
; ;
console.log(rating, ratingIndex, $icon);
$module $module
.removeClass(className.hover)
.removeClass(className.selected)
; ;
$icon $icon
.removeClass(className.hover)
.removeClass(className.selected)
.removeClass(className.active) .removeClass(className.active)
; ;
if(rating > 0) { if(rating > 0) {
module.verbose('Setting current rating to', rating); module.verbose('Setting current rating to', rating);
console.log($activeIcon.prevAll().andSelf());
$activeIcon $activeIcon
.addClass(className.active)
.prevAll()
.prevAll()
.andSelf()
.addClass(className.active) .addClass(className.active)
; ;
} }
@ -379,20 +399,23 @@ $.fn.rating.settings = {
name : 'Rating', name : 'Rating',
namespace : 'rating', namespace : 'rating',
debug : true,
debug : false,
verbose : true, verbose : true,
performance : true, performance : true,
initialRating : 0, initialRating : 0,
interactive : true, interactive : true,
maxRating : 4,
clearable : 'auto', clearable : 'auto',
onRate : function(rating){}, onRate : function(rating){},
error : {
method : 'The method you called is not defined'
error : {
method : 'The method you called is not defined',
noMaximum : 'No maximum rating specified. Cannot generate HTML automatically'
}, },
metadata: { metadata: {
rating: 'rating' rating: 'rating'
}, },
@ -400,12 +423,26 @@ $.fn.rating.settings = {
className : { className : {
active : 'active', active : 'active',
disabled : 'disabled', disabled : 'disabled',
hover : 'hover',
selected : 'selected',
loading : 'loading' loading : 'loading'
}, },
selector : { selector : {
icon : '.icon' icon : '.icon'
},
templates: {
icon: function(maxRating) {
var
icon = 1,
html = ''
;
while(icon <= maxRating) {
html += '<i class="icon"></i>';
icon++;
}
return html;
}
} }
}; };

32
src/definitions/modules/rating.less

@ -77,10 +77,10 @@
text-shadow: @starActiveShadow; text-shadow: @starActiveShadow;
} }
/* Hovered Star */
.ui.star.rating .icon.hover,
.ui.star.rating .icon.hover.active {
color: @starHoverColor !important;
/* Selected Star */
.ui.star.rating .icon.selected,
.ui.star.rating .icon.selected.active {
color: @starSelectedColor !important;
} }
.ui.star.rating.partial { .ui.star.rating.partial {
@ -109,10 +109,10 @@
text-shadow: @heartActiveShadow; text-shadow: @heartActiveShadow;
} }
/* Hovered Heart */
.ui.heart.rating .icon.hover,
.ui.heart.rating .icon.hover.active {
color: @heartHoverColor !important;
/* Selected Heart */
.ui.heart.rating .icon.selected,
.ui.heart.rating .icon.selected.active {
color: @heartSelectedColor !important;
} }
@ -131,9 +131,9 @@
color: @activeColor; color: @activeColor;
} }
/* Hovered Icon */
.ui.rating .icon.hover,
.ui.rating .icon.hover.active {
/* Selected Icon */
.ui.rating .icon.selected,
.ui.rating .icon.selected.active {
color: @hoverColor; color: @hoverColor;
} }
@ -149,16 +149,16 @@
/*------------------- /*-------------------
Interacting
Interacting (Active)
--------------------*/ --------------------*/
/* Selected Rating */ /* Selected Rating */
.ui.rating.hover .active.icon {
.ui.rating.selected .active.icon {
opacity: @interactiveIconOpacity; opacity: @interactiveIconOpacity;
} }
.ui.rating.hover .icon.hover,
.ui.rating .icon.hover {
opacity: @interactiveHoveredIconOpacity;
.ui.rating.selected .icon.selected,
.ui.rating .icon.selected {
opacity: @interactiveSelectedIconOpacity;
} }

Loading…
Cancel
Save