Plots2: Add ability to sort tag pages by likes/view counts

Created on 24 Sep 2018  ยท  16Comments  ยท  Source: publiclab/plots2

Hi, this is a first-timers-only issue. This means we've worked to make it more legible to folks who either haven't contributed to our codebase before, or even folks who haven't contributed to open source before.

If that's you, we're interested in helping you take the first step and can answer questions and help you out as you do. Note that we're especially interested in contributions from people from groups underrepresented in free and open source software!

We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you ๐Ÿ’

If you have contributed before, consider leaving this one for someone new, and looking through our general help wanted issues. Thanks!

๐Ÿค” What you will need to know.

Nothing. This issue is meant to welcome you to Open Source :) We are happy to walk you through the process.

๐Ÿ“‹ Step by Step

  • [ ] ๐Ÿ™‹ Claim this issue: Comment below. If someone else has claimed it, ask if they've opened a pull request already and if they're stuck -- maybe you can help them solve a problem or move it along!

  • [ ] ๐Ÿ“ Update the file app/controllers/tag_controller.rb in the plots2 repository (press the little pen Icon) and edit the line as shown below.

See this page for some help in taking your first steps!

Below is a "diff" showing in red (and a -) which lines to remove, and in green (and a +) which lines to add:

@@ -85,6 +85,9 @@ def show
     @node_type = params[:node_type] || default_type
     @start = Time.parse(params[:start]) if params[:start]
     @end = Time.parse(params[:end]) if params[:end]
+    order_by = 'node_revisions.timestamp DESC'
+    order_by = 'node.views DESC' if params[:order] == 'views'
+    order_by = 'node.cached_likes DESC' if params[:order] == 'likes'

     node_type = 'note' if @node_type == 'questions' || @node_type == 'note'
     node_type = 'page' if @node_type == 'wiki'
@@ -99,7 +102,7 @@ def show
         .references(:term_data, :node_revisions)
         .where('term_data.name LIKE (?) OR term_data.parent LIKE (?)', params[:id][0..-2] + '%', params[:id][0..-2] + '%')
         .paginate(page: params[:page], per_page: 24)
-        .order('node_revisions.timestamp DESC')
+        .order(order_by)
     else
       @tags = Tag.where(name: params[:id])

@@ -115,14 +118,14 @@ def show
           .references(:term_data, :node_revisions)
           .where('term_data.name = ? OR term_data.name = ? OR term_data.parent = ?', params[:id], other_tag, params[:id])
           .paginate(page: params[:page], per_page: 24)
-          .order('node_revisions.timestamp DESC')
+          .order(order_by)
       else
         nodes = Node.where(status: 1, type: node_type)
           .includes(:revision, :tag)
           .references(:term_data, :node_revisions)
           .where('term_data.name = ? OR term_data.parent = ?', params[:id], params[:id])
           .paginate(page: params[:page], per_page: 24)
-          .order('node_revisions.timestamp DESC')
+          .order(order_by)
       end
     end
     nodes = nodes.where(created: @[email protected]_i) if @start && @end
  • [ ] ๐Ÿ’พ Commit your changes

  • [ ] ๐Ÿ”€ Start a Pull Request. There are two ways how you can start a pull request:

  1. If you are familiar with the terminal or would like to learn it, here is a great tutorial on how to send a pull request using the terminal.

  2. You can also edit files directly in your browser and open a pull request from there.

  • [ ] ๐Ÿ Done Ask in comments for a review :)

๐Ÿค”โ“ Questions?

Leave a comment below!

Is someone else already working on this?

We encourage you to link to this issue by mentioning the issue # in your pull request, so we can see if someone's already started on it. If someone seem stuck, offer them some help! Otherwise, take a look at some other issues you can help with. Thanks!

(This issue was created by First-Timers-Bot.)

first-timers-only help wanted

Most helpful comment

Thanks, Jeffery. I will get on this one.

All 16 comments

This one is for @nwyll!

If you have the code running on your own machine, once this is implemented, you should be able to test it out by going to:

http://localhost:3000/tag/test?order=likes

Once it's finally done and published, it'll appear at:

https://publiclab.org/tag/test?order=likes

@jywarren can i work on this issue

Thanks, Jeffery. I will get on this one.

@avsingh you are assigned another fto. #3423 After completing that you can explore various help wanted issues at public lab.

This issue is assigned to @nwyll by Jeff.

We want more people to work at public labs so we generally assign a single fto to a single person.
Thanks

No problem but @SidharthBansal i have send pr to this issue #3423

Just noting that we're still working with @nwyll on this one in https://github.com/publiclab/plots2/pull/3430

Thanks!

I changed the lines and committed. PR already, can you see it? #3419

@jywarren Still open ?

Hi, @nwyll has asked to step back for a bit, but did complete the feature.

At this point, we need a test to verify that this type of sorting actually works; it could be very much like this one:

https://github.com/publiclab/plots2/blob/325d009b82258f8fd1b79fa47b4485eb354c836c/test/functional/tag_controller_test.rb#L143-L159

But adding the order parameter to check that that doesn't break anything?

Thanks, all!

@CoderJolly yes this is now available -- we just need a test to build on top of @nwyll's work!

@jywarren So, can i make a PR now ?

Yes @CoderJolly !

Hi ๐Ÿ‘‹
Is a test still missing? @CoderJolly do you need help with it? Or can I give this a shot as my first issue on this project?

@alonpeer you can work on this if you're interested.

Ok, I'm starting to work on this.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

grvsachdeva picture grvsachdeva  ยท  3Comments

noi5e picture noi5e  ยท  3Comments

grvsachdeva picture grvsachdeva  ยท  3Comments

first-timers[bot] picture first-timers[bot]  ยท  3Comments

jywarren picture jywarren  ยท  3Comments