Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ability to sort tag pages by likes/view counts #3419

Closed
5 tasks
first-timers bot opened this issue Sep 24, 2018 · 16 comments
Closed
5 tasks

Add ability to sort tag pages by likes/view counts #3419

first-timers bot opened this issue Sep 24, 2018 · 16 comments
Labels
first-timers-only They need to be well-formatted using the First-timers_Issue_Template. help wanted requires help by anyone willing to contribute

Comments

@first-timers
Copy link

first-timers bot commented Sep 24, 2018

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: @start.to_i..@end.to_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 first-timers bot added first-timers-only They need to be well-formatted using the First-timers_Issue_Template. help wanted requires help by anyone willing to contribute labels Sep 24, 2018
@jywarren
Copy link
Member

This one is for @nwyll!

@jywarren
Copy link
Member

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

@avsingh999
Copy link
Member

@jywarren can i work on this issue

@nwyll
Copy link
Contributor

nwyll commented Sep 24, 2018 via email

nwyll added a commit to nwyll/plots2 that referenced this issue Sep 24, 2018
nwyll added a commit to nwyll/plots2 that referenced this issue Sep 24, 2018
@SidharthBansal
Copy link
Member

@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

@avsingh999
Copy link
Member

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

@jywarren
Copy link
Member

Just noting that we're still working with @nwyll on this one in #3430

Thanks!

@mahalb-se
Copy link

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

@coderjolly
Copy link
Member

@jywarren Still open ?

@jywarren
Copy link
Member

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:

test 'tag show' do
get :show, params: { id: tags(:spectrometer).name }
assert :success
assert_not_nil :tags
assert_equal tags(:spectrometer).parent, 'spectrometry'
# iterate through results
assert !assigns['notes'].empty?
assigns['notes'].each do |node|
assert node.has_tag('spectrometry') # should return false
assert_not node.has_tag_without_aliasing('spectrometry') # should return false
end
# assert_equal assigns['tags'].length, 1
assert_select '#wiki-content', 1
end

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

Thanks, all!

@jywarren
Copy link
Member

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

@coderjolly
Copy link
Member

@jywarren So, can i make a PR now ?

@grvsachdeva
Copy link
Member

Yes @coderjolly !

@alonpeer
Copy link
Contributor

alonpeer commented Mar 6, 2019

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?

@grvsachdeva
Copy link
Member

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

@alonpeer
Copy link
Contributor

Ok, I'm starting to work on this.

SrinandanPai pushed a commit to SrinandanPai/plots2 that referenced this issue May 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
first-timers-only They need to be well-formatted using the First-timers_Issue_Template. help wanted requires help by anyone willing to contribute
Projects
None yet
Development

No branches or pull requests

8 participants