Changeset 962

Show
Ignore:
Timestamp:
11/03/08 16:38:53 (2 months ago)
Author:
lucy
Message:

filters added back to browse page, this time with javascript so that react to dropdown changes. removed ajax part, tho. with pagination, what's the point?

Location:
huginmunin/trunk/web/hm
Files:
1 removed
6 modified

Legend:

Unmodified
Added
Removed
  • huginmunin/trunk/web/hm/app/media/css/general.css

    r953 r962  
    667667#list_of_nodes .node .r { float: right; font-size: .9em; } 
    668668#list_of_nodes .node .quote { padding: 5px 25px 5px 25px; clear: both; } 
     669/** browse controls **/ 
     670.letter { cursor:pointer; text-decoration:underline; padding: 2px; } 
     671.letter + .selected { text-decoration: none; cursor: default; background: yellow; } 
    669672 
    670673/****** PAGINATION ******/ 
     
    681684.horizontal_menu_item { padding: 2px 5px 2px 5px; margin: 2px 4px 2px 4px; float: left; background: #CCF; } 
    682685.horizontal_menu_item a { color: black; text-decoration: none; } 
     686 
  • huginmunin/trunk/web/hm/app/media/js/main.js

    r934 r962  
    490490        $("#"+container+" textarea").addClass("rte_zone").rte("/Main/media/css/rte.css"); 
    491491} 
     492 
     493 
     494function dropdown_submit(key, select) { 
     495    var val = (select.options[select.selectedIndex].value); 
     496    get_paramter_submit(key, val); 
     497} 
     498function get_paramter_submit(key, val) { 
     499    if (val) { 
     500            new_location = location.href; 
     501            if (val.indexOf("none") > -1) { new_location = remove_get_parameter(key); } 
     502            else { 
     503                if (new_location.indexOf(key) > -1) 
     504                        { new_location = remove_get_parameter(key); } 
     505                if (new_location.indexOf("?") > -1) 
     506                        { new_location = new_location + "&" + key + "=" + val; } 
     507                else 
     508                        { new_location = new_location + "?" + key + "=" + val; } 
     509            } 
     510            location.href = new_location 
     511        } 
     512} 
     513function remove_get_parameter(key) { 
     514        two_parts = location.href.split("?"); 
     515        if (two_parts.length > 1) { 
     516                params = two_parts[1].split("&"); 
     517                new_params = ""; 
     518                for (i=0; i < params.length; i++) { 
     519                        kv = params[i].split("="); 
     520                        if (kv[0].indexOf(key) == -1) { 
     521                                new_params += params[i]; 
     522                        } 
     523                } 
     524                if (new_params.length > 0) { 
     525                        return two_parts[0] + "?" + new_params; 
     526                } else { 
     527                        return two_parts[0]; 
     528                } 
     529        } else { 
     530                return location.href; 
     531        } 
     532} 
  • huginmunin/trunk/web/hm/app/templates/graph/list.html

    r953 r962  
    11<div class="left"> 
     2 
     3<DIV id="controls"> 
     4        <SELECT name="filter_by_type" onChange="dropdown_submit('filter_by_type', this);"> 
     5                <OPTION value="none">No filter</OPTION> 
     6                {% for type in types %} 
     7                        <OPTION value="{{ type.id }}" {% ifequal selected_type type.id %} selected {% endifequal %}>{{ type.label }}</OPTION> 
     8                {% endfor %} 
     9        </SELECT> 
     10        <SELECT name="filter_by_tag" onChange="dropdown_submit('filter_by_tag', this);"> 
     11                <OPTION value="none">No filter</OPTION> 
     12                {% for tag in tags %} 
     13                        <OPTION value="{{ tag.id }}" {% ifequal selected_tag tag.id %} selected {% endifequal %}>{{ tag.tag }}</OPTION> 
     14                {% endfor %}  
     15        </SELECT> 
     16         
     17        <SELECT name="filter_by_interest" onChange="dropdown_submit('filter_by_interest', this);"> 
     18                <OPTION value="none">No filter</OPTION> 
     19                {% for interest in interests %} 
     20                        <OPTION value="{{ interest.id }}" {% ifequal selected_interest interest.id %} selected {% endifequal %}>{{ interest.label }}</OPTION> 
     21                {% endfor %} 
     22        </SELECT> 
     23         
     24        <DIV> 
     25                <SPAN class="letter {% ifequal selected_letter "none" %}selected {% endifequal %}" onClick="location.href = remove_get_parameter('filter_by_letter');">all</SPAN> 
     26                {% for letter in letters %} 
     27                        <SPAN class="letter {% ifequal selected_letter letter %}selected{% endifequal %}" onClick="get_paramter_submit('filter_by_letter', '{{ letter }}');">{{ letter }}</SPAN> 
     28                {% endfor %} 
     29        </DIV> 
     30</DIV> 
    231 
    332<DIV id="list_of_nodes"> 
  • huginmunin/trunk/web/hm/app/views/main.py

    r954 r962  
    325325 
    326326def graph_centric(request): 
    327     nodes = Node.find().select_related().order_by('label')[:] 
    328     data = { 
    329         #'NodeTypes' : to_json(JSON["NodeType"].render(NodeType.find()[:])), 
    330         #'EdgeTypes' : to_json(JSON["EdgeType"].render(EdgeType.find()[:])), 
    331         }.items() 
    332     types = JSON["NodeType"].render(NodeType.find()[:]) 
    333     tags = JSON["Tag"].render(Tag.cloud_qs(nodes)) 
    334     dimensions = JSON["Dimension"].render(Dimension.find()[:]) 
    335     filters = [1,2] 
     327    params = run_params(request.GET) 
     328    nodes = Node.find().select_related().order_by('label') 
     329     
     330    order = 'alphabetical' 
     331     
     332    selected_type = selected_letter = selected_tag = selected_interest = "none" 
     333 
     334    if 'filter_by_type' in params: 
     335        filter_by_type = params['filter_by_type'] 
     336        selected_type = int(filter_by_type) 
     337        nodes = nodes.filter(nodetypecast__type__id__in=filter_by_type) 
     338 
     339    if 'filter_by_letter' in params: 
     340        filter_by_letter = params['filter_by_letter'] 
     341        selected_letter = filter_by_letter 
     342        nodes = nodes.filter(label__istartswith=filter_by_letter) 
     343 
     344    if 'filter_by_tag' in params: 
     345        filter_by_tag = params['filter_by_tag'] 
     346        selected_tag = int(filter_by_tag) 
     347        ids = [n.id for n in Node.by_tag_id(int(filter_by_tag))] 
     348        nodes = nodes.filter(id__in=ids) 
     349 
     350    if 'filter_by_interest' in params: 
     351        filter_by_interest = params['filter_by_interest'] 
     352        selected_interest = int(filter_by_interest) 
     353        nodes = nodes.filter(behavior_set__dimension__id__in=filter_by_interest) 
     354     
     355    types = NodeType.objects.all().order_by('label') 
     356    tags = Tag.objects.all().order_by('tag') 
     357    interests = Dimension.objects.all().order_by('label') 
     358    letters = [x for x in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'] 
    336359    page = 'graph' 
    337360    number_nodes_displayed = 10 
  • huginmunin/trunk/web/hm/db/rating.py

    r954 r962  
    391391                return sum / count 
    392392        else: 
     393            # could use current_user() rather than no user 
    393394            return self.score(None) 
    394395 
  • huginmunin/trunk/web/hm/db/tag.py

    r887 r962  
    506506        condition = 'tagging_count.item_id = %(db_table)s.id' % params 
    507507        order = '-value' 
     508        print "select: %s" % select 
     509        print "tables: %s" % subquery 
     510        print "condition: %s" % condition 
     511        print "order: %s" % order 
    508512        return klass.find().extra(select=select, tables=[subquery], 
    509513                                  where=[condition]).order_by(order)