Coder Social home page Coder Social logo

abahgat / redmine_didyoumean Goto Github PK

View Code? Open in Web Editor NEW
66.0 18.0 47.0 134 KB

A Redmine plugin to search for possible duplicates when users are about to open new issues.

License: Other

Shell 12.39% Ruby 59.98% JavaScript 14.10% CSS 0.65% HTML 12.89%
ruby redmine-plugin

redmine_didyoumean's Introduction

Did You Mean Plugin

A Redmine plugin to search for possible duplicates when users are about to open new issues. You can find more information on the project wiki: github.com/abahgat/redmine_didyoumean/wiki

Install

  1. Follow the Redmine plugin installation steps at: www.redmine.org/wiki/redmine/Plugins

  2. Make sure the plugin installation directory name is redmine_didyoumean

  3. Restart the server (this will ensure that the CSS file and other assets are copied to the right place)

  4. (optional) Configure the plugin by navigating to Administration > Plugins and select the Configure label on the line for Did You Mean?

Searching engines

By default plugin use SQL Engine, but there is available SphinxSearch Engine.

1. Before you switch to Thinking Sphinx you should make sure that SphinxSearch engine was installed

for Debian/Ubuntu users

  • sudo apt-get install sphinxsearch

  • Plugin use Thinking Sphinx v3.1.1 and Sphinx should be v2.2.4 or newer.

  • Thinking Sphinx will be installed with bundle commend (was definded in Gemfile)

for RedHat/CentOS users

  • curl -L -o sphinx-2.2.6-1.rhel7.x86_64.rpm http://sphinxsearch.com/files/sphinx-2.2.6-1.rhel7.x86_64.rpm

  • sudo yum install ./sphinx-2.2.6-1.rhel7.x86_64.rpm

  • sudo chkconfig searchd on

  • Plugin use Thinking Sphinx v3.1.1 and Sphinx should be v2.2.4 or newer.

  • Thinking Sphinx will be installed with bundle commend (was definded in Gemfile)

2. If everything was successfully installed then in your console run(in main Redmine catalog):
  • bundle exec rake ts:index (index your data)

  • bundle exec rake ts:start

  • Choose search method : Administration -> Plugins -> Redmine Did You Mean? -> select Thinking Sphinx Engine.

  • Now possibly duplicated subject’s will be searching by Sphinx.

3. If you want stop searching by SphinxSearch Engine in your console run:
  • bundle exec rake ts:stop

  • Switch method in plugin configuration.

Difference between search engines

The main advantage of SphinxSearch is the fact that if you set many words to searching, this gives you results faster then SQL Engine.

* SQL Engine: Takes words 1:1 if you match ‘GUI Changes’ this will be looking for “GUI” “Changes”.

* Thinking Sphinx Engine: Firstly search for words 1:1 after this substract last character ex. like: “Running”

- Firstly "Running" 
- "Runner"
- etc.

License

This plugin is licensed under the GNU GPL v2. See COPYRIGHT.txt and GPL.txt for details.

Project help

If you need help you can contact the maintainers on the project page on GitHub (github.com/abahgat/redmine_didyoumean). If you want to report bugs, please open a new issue here: github.com/abahgat/redmine_didyoumean/issues

Please search for duplicates first :P

redmine_didyoumean's People

Contributors

abahgat avatar angelinsky7 avatar archonwang avatar cforce avatar dependabot[bot] avatar edgardmessias avatar giraypultar avatar jrencz avatar jwalkerbg avatar kotashiratsuka avatar mcascallares avatar namezero111111 avatar nettsundere avatar patrickatamaniuk avatar raibaz avatar swiatkiewicz avatar xavier-calland avatar y-imaida avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redmine_didyoumean's Issues

Fuzzy Word Matching

Could DYM be extended to use the idea of "approximate string matching" (Wikipedia reference)? Not everybody phrases their sentences the same way.. I honestly believe this plugin would be a million times more useful if words like "faulty" also returned a match for "fault", "saving" matched "saved" or "save", etc etc.

Unfortunately I'm not familiar enough with Ruby to do this myself, but a quick Google search shows many Ruby Gems that provide this type of functionality. So I'm guessing (read: hoping) this isn't an unreasonable request. :)

Does not always return expected results

Expected a single result of "Task #926 – Install PHP_Invoke through PEAR (New in Kenny)", but does not always pickup on the ticket.

Using Redmine 1.3.2.stable
abahgat-redmine_didyoumean-291e6cd

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 09:49:51) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PHP"}
Got request for [PHP]
14 results found, returning the first 5
Completed in 69ms (View: 19, DB: 19) | 200 OK [http://kenny/redmine/searchissues?format=json]

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 09:50:02) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PHP_Invoke"}
Got request for [PHP_Invoke]
1 results found, returning the first 1
Completed in 234ms (View: 8, DB: 188) | 200 OK [http://kenny/redmine/searchissues?format=json]

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 09:50:12) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PHP_Invoke pear"}
Got request for [PHP_Invoke pear]
1 results found, returning the first 1
Completed in 47ms (View: 5, DB: 28) | 200 OK [http://kenny/redmine/searchissues?format=json]

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 09:50:25) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PHP_Invoke install with pear"}
Got request for [PHP_Invoke install with pear]
0 results found, returning the first 0
Completed in 3125ms (View: 1, DB: 3116) | 200 OK [http://kenny/redmine/searchissues?format=json]

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 09:50:45) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PHP Invoke"}
Got request for [PHP Invoke]
1 results found, returning the first 1
Completed in 1766ms (View: 5, DB: 1743) | 200 OK [http://kenny/redmine/searchissues?format=json]

Processing SettingsController#plugin (for 10.10.xxx.xxx at 2012-03-23 09:51:31) [POST]
Parameters: {"commit"=>"Apply", "action"=>"plugin", "authenticity_token"=>"AyjIW/qYhYRRlK3J/KQzXVu/Veow6CxwuAZeKmr8VLg=", "id"=>"redmine_didyoumean", "settings"=>{"project_filter"=>"1", "show_only_open"=>"1"}, "controller"=>"settings"}
Redirected to http://kenny/redmine/settings/plugin/redmine_didyoumean
Completed in 3107ms (DB: 3077) | 302 Found [http://kenny/redmine/settings/plugin/redmine_didyoumean]

Processing SettingsController#plugin (for 10.10.xxx.xxx at 2012-03-23 09:51:34) [GET]
Parameters: {"action"=>"plugin", "id"=>"redmine_didyoumean", "controller"=>"settings"}
Settings cache cleared.
Rendering template within layouts/admin
Rendering settings/plugin
Completed in 2811ms (View: 546, DB: 2191) | 200 OK [http://kenny/redmine/settings/plugin/redmine_didyoumean]

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 10:02:43) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PEAR"}
Settings cache cleared.
Got request for [PEAR]
Valid status ids are NewIn ProgressFeedbackWishlist
4 results found, returning the first 4
Completed in 3108ms (View: 17, DB: 3034) | 200 OK [http://kenny/redmine/searchissues?format=json]

Processing SearchIssuesController#index to json (for 10.10.xxx.xxx at 2012-03-23 10:02:56) [POST]
Parameters: {"format"=>"json", "project_id"=>"3", "action"=>"index", "controller"=>"search_issues", "query"=>"PEAR?"}
Got request for [PEAR?]
Valid status ids are NewIn ProgressFeedbackWishlist
0 results found, returning the first 0
Completed in 853ms (View: 1, DB: 841) | 200 OK [http://kenny/redmine/searchissues?format=json]

404 ERROR redmine_gitrevision_download

I facing the 404 issue,
I installed redmine_gitrevision_download, while opening cofigure in http://YOUR_SERVER/redmine/admin/plugins
getting 404 error.....

Log for your reference,
Started GET "/redmine/settings/plugin/redmine_gitrevision_download" for 127.0.0.1 at 2013-10-24 11:42:35 +0530
Processing by SettingsController#plugin as HTML
Parameters: {"id"=>"redmine_gitrevision_download"}
Current user: user (id=1)
Rendered settings/plugin.html.erb within layouts/admin (0.0ms)
Missing template, responding with 404
Rendered common/error.html.erb within layouts/base (0.0ms)
Rendered plugins/redmine_code_review/app/views/code_review/htmlheader.html.erb (0.0ms)
Rendered plugins/redmine_code_review/app/views/code_review/bodybottom.html.erb (0.0ms)
Completed 404 Not Found in 62ms (Views: 31.2ms | ActiveRecord: 15.6ms)

Please help to solve this issue.

Thanks in advance.

Regards
Asvini.M

Can't install in Redmine 2.6 - cannot specify same gem twice

While executing the migrate command, I got the below error message.

You cannot specify the same gem twice with different version requirements.
You specified: mysql2 (=0.3.11) and mysql2 (~) 0.3.11)

I used the latest version available (from 4 days ago). My redmine is bitnami redmine 2.6

2015-01-03_23-13-14

Plugin not working with my configuration

Hello,

Could you please check that there should be no problems with the following build:

Environment:
Redmine version 2.2.3.stable
Ruby version 1.8.7 (i686-linux)
Rails version 3.2.12
Environment production
Database adapter MySQL
Redmine plugins:
redmine_didyoumean 1.2.0

Although it appears in the administrator list of modules, the 'configure' link is broken:- The page you were trying to access doesn't exist or has been removed.
And it also breaks the link to the 'new issue' tab within the project.

Figure out a way to add unit tests

Testing the plugin in the past has been tricky as I couldn't find any way to test it without having to install a whole redmine instance. Supporting multiple Ruby/Redmine version, however, has become too painful.
If you read this and have any pointers/suggestions, please chime in.

Reference template in directory since other plugins may extend issues

Hi

I have another plugin where the issue hooks are called from a path different than 'issues'. In file hooks/didyoumean_hooks.rb please replace this line:

render_on(:view_issues_form_details_bottom, :partial => 'didyoumean_injected.html.erb')

with:

render_on(:view_issues_form_details_bottom, :partial => 'issues/didyoumean_injected.html.erb')

The above change makes it work with other plugins.

Thank you

ERROR: invalid input syntax for integer: "null"

I got the tar.gz, extracted it, renamed the folder properly, stuck it in redmine/plugins, rebooted apache and configured the application to search any project with any status, and it gives me a 500 error when it tries to search while creating a new issue?

The error in the redmine log is ERROR: invalid input syntax for integer: "null", seeing as issue_id=null in the query string. I'm using Redmine 2.2.0, ruby 1.8.7, Rails 3.2.9.

Started GET "/searchissues?project_id=21&issue_id=null&query=amazon+ec2++" for 121.210.244.195 at Sat Jan 19 18:08:20 +1000 2013
Processing by SearchIssuesController#index as /
Parameters: {"issue_id"=>"null", "query"=>"amazon ec2 ", "project_id"=>"21"}
Current user: Ben.T (id=3)
Completed 500 Internal Server Error in 56ms

ActiveRecord::StatementInvalid (PG::Error: ERROR: invalid input syntax for integer: "null"
LINE 1: ...30,31,1,19,11,33,14,9,36,43,44) AND issues.id != ('null')) L...

the issues count is not correct

it seems some problem here

  1. when I search the issues with similar name, it searches all projects. Is it right? could you please support a parameter to config whether it should search all project or current projects?
  2. about the issue count. it seems count the current issues displayed in the list...
  3. about the issue state, could you support a parameter to config the list should display some state issues?

Thanks.

Plugin incompatibility -undefined local variable or method `sidebar_tags' Edit

I found out that redmine_tags plugin crashes together with this plugin when calling issues or issues view with following error


Started GET "/projects/bus/issues" for 172.25.252.99 at 2013-01-09 11:09:10 +0100
Processing by IssuesController#index as HTML
Parameters: {"project_id"=>"bus"}
Current user: 00001276 (id=3)
Rendered plugins/redmine_time_tracker/app/views/queries/_filters.html.erb (43.5ms)
Rendered queries/_columns.html.erb (3.7ms)
Rendered issues/_list.html.erb (165.7ms)
Rendered plugins/redmine_contacts/app/views/issues/_contacts.html.erb (1.1ms)
Rendered plugins/redmine_issue_templates/app/views/issue_templates/_issue_template_link.html.erb (1.9ms)
Rendered plugins/redmine_tags/app/views/issues/_tags_sidebar.html.erb (311.9ms)
Rendered issues/_sidebar.html.erb (355.7ms)
Rendered issues/index.html.erb (653.9ms)
Rendered plugins/redmine_anonymous_watchers/app/views/issues/index.html.erb within layouts/base (667.0ms)
Completed 500 Internal Server Error in 1254ms

ActionView::Template::Error (undefined local variable or method sidebar_tags' for #<#<Class:0xd9e8a10>:0xd607b30>): 1: <% unless sidebar_tags.empty? -> 2: <= stylesheet_link_tag 'jquery.tagit.css', :plugin => 'redmine_tags' > 3: <= stylesheet_link_tag 'redmine_tags', :plugin => 'redmine_tags' > 4: <h3><= l(:tags) %></h3> lib/redmine/hook.rb:111:inblock in render_on'
lib/redmine/hook.rb:61:in block (2 levels) in call_hook' lib/redmine/hook.rb:61:ineach'
lib/redmine/hook.rb:61:in block in call_hook' lib/redmine/hook.rb:58:intap'
lib/redmine/hook.rb:58:in call_hook' lib/redmine/hook.rb:158:incall_hook'
app/views/issues/_sidebar.html.erb:14:in _app_views_issues__sidebar_html_erb___89747382_99460450' app/views/issues/index.html.erb:93:inblock in app_views_issues_index_html_erb_940294355_112433450'
app/helpers/application_helper.rb:1190:in content_for' app/views/issues/index.html.erb:92:in_app_views_issues_index_html_erb__940294355_112433450'
app/controllers/issues_controller.rb:83:in block (2 levels) in index' app/controllers/issues_controller.rb:82:inindex'

Optionally display Did You Mean search results on existing issues (Feature)

This is something I would like to work on if I can figure out how to do it:

Issues created by email bypass Did You Mean. It could be useful to optionally run the Did You Mean search on existing issues and display the results in the Redmine sidebar or near the Related Issues list. (The sidebar seems less intrusive--I'd rather hide or collapse unnecessary issue details than add new ones!)

Fails with Redmine 3.4.8

Bundle install fails with

[!] There was an error parsing `Gemfile`: 
[!] There was an error parsing `Gemfile`: You cannot specify the same gem twice with different version requirements.
You specified: mysql2 (~> 0.4.6) and mysql2 (~> 0.3.11). Bundler cannot continue.

 #  from /home/server/services/redmine-3.4.8/plugins/redmine_didyoumean/Gemfile:6
 #  -------------------------------------------
 #  # The MySQL gems mentioned are required for connecting to Sphinx
 >  gem "mysql2", "~> 0.3.11", :platforms => [:mri, :mingw]
 #  gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
 #  -------------------------------------------
. Bundler cannot continue.

 #  from /home/server/services/redmine-3.4.8/Gemfile:111
 #  -------------------------------------------
 #  Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file|
 >    eval_gemfile file
 #  end
 #  -------------------------------------------

after updating mysql from 0.3.11 to 0.4.6 it works.

Implicit dependency on joiner makes the plugin incompatible with Rails 3.2

Hello,

I just tried to install this plugin on this configuration :

Environment:
  Redmine version                2.6.1.stable
  Ruby version                   1.9.3-p194 (2012-04-20) [i486-linux]
  Rails version                  3.2.21
  Environment                    production
  Database adapter               Mysql2

Problem

The installation of the plugin failed because of the dependency to ActiveRecord 4.2.0 while Rails depends on ActiveRecord 3.2.21.

After taking a looking at the Gemfile.lock I saw that the problem comes from joiner which, since his version 0.3.0 (https://rubygems.org/gems/joiner/versions/0.3.0), depends on Rails 4.1 or above.

Real solution

The problem probably came from that I ran bundle update from the plugin's directory, not from the Redmine's root path.

If you made the same mistake, uninstall joiner (gem uninstall joiner) and ran bundle update from you Redmine's root path.

Wrong ordering of results

First: A very helpful plugin to keep Redmine clean.

In search_issue_controller.rb line 85 (master's head revision), the issues are sorted in reverse order (youngest issue on top). But in the JavaScript code (didyoumean.js line 47) the given issue list is also processed in reverse order which neutralises the reverse ordering in the ruby code. So, the result is the wrong ordering of the results (oldest on top, youngest issue sometimes not even seen in the list).

Here is my patch to correct the ordering:

diff --git a/app/controllers/search_issues_controller.rb b/app/controllers/search_issues_controller.rb
index 78cba58..90c5893 100644
--- a/app/controllers/search_issues_controller.rb
+++ b/app/controllers/search_issues_controller.rb
@@ -82,7 +82,7 @@ class SearchIssuesController < ApplicationController
       logger.debug "#{@count} results found, returning the first #{@issues.length}"

       # order by decreasing creation time. Some relevance sort would be a lot more appropriate here
-      @issues = @issues.sort {|a,b| b.id <=> a.id}
+      @issues = @issues.sort {|a,b| a.id <=> b.id}


     else

As the comment just above my change indicates, a relevance sort would be helpful. I'd like to introduce the "Last change date" as the ordering criteria. But I don't know how to find the possible issue attributes in Ruby to do this change.

Routing error in Redmine trunk@8917

Hello,

I tested your plugin with current redmine trunk. It gives route error. Here is the log:

=================start of log======================
Processing IssuesController#new (for 192.168.2.101 at 2012-02-21 23:43:40) [GET]
Parameters: {"project_id"=>"first", "action"=>"new", "controller"=>"issues"}
Rendering template within layouts/base
Rendering issues/new

ActionView::TemplateError (No route matches {:controller=>"search_issues", :action=>"index"}) on line #18 of vendor/plug
ins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb:
15: label_more: "<%= l(:dym_more_issues) %>",
16: label_in: "<%= l(:dym_in_project) %>",
17: issue_url: "<%= url_for(Issue.new) %>",
18: search_url: "<%= url_for(:action => 'index', :controller => 'search_issues') %>"
19: };
20: </script>
21:

vendor/plugins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb:18
lib/redmine/hook.rb:113:in `send'
lib/redmine/hook.rb:113:in `view_issues_form_details_bottom'
lib/redmine/hook.rb:63:in `send'
lib/redmine/hook.rb:63:in `call_hook'
lib/redmine/hook.rb:63:in `each'
lib/redmine/hook.rb:63:in `call_hook'
lib/redmine/hook.rb:60:in `tap'
lib/redmine/hook.rb:60:in `call_hook'
lib/redmine/hook.rb:146:in `call_hook'
app/views/issues/_form.html.erb:47
app/helpers/application_helper.rb:931:in `labelled_fields_for'
app/views/issues/_form.html.erb:1
app/views/issues/new.html.erb:11
app/helpers/application_helper.rb:924:in `labelled_form_for'
app/views/issues/new.html.erb:5
app/controllers/issues_controller.rb:135:in `new'
app/controllers/issues_controller.rb:134:in `new'
d:/Ruby187/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
d:/Ruby187/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:162:in `start'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:95:in `start'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:92:in `each'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:92:in `start'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:23:in `start'
d:/Ruby187/lib/ruby/1.8/webrick/server.rb:82:in `start'

Rendering D:/biz/apps/redmine_trunk/public/500.html (500 Internal Server Error)
==============end of log======================

not working with redmine 2.4

Hi!

I've just upgraded our staging redmine instance to 2.4.1 and you plugin does not work anymore. There's no error, it just won't display the popup.

This is the output when rendering the new issue page:

Started GET "/projects/test/issues/new" for x.x.x.x at 2013-11-26 11:09:00 +0100
Processing by IssuesController#new as HTML
  Parameters: {"project_id"=>"admin"}
  Current user: test.user (id=15)
  Rendered plugins/redmine_issue_templates/app/views/issue_templates/_issue_select_form.html.erb (1.4ms)
  Rendered issues/_form_custom_fields.html.erb (4.4ms)
  Rendered issues/_attributes.html.erb (80.7ms)
DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:erb] instead. (called from block in render_on at /usr/share/redmine/redmine-2.4-stable/lib/redmine/hook.rb:111)
  Rendered plugins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb (2.7ms)
  Rendered plugins/redmine_issue_checklist/app/views/issues/_checklist_form.html.erb (1.2ms)
  Rendered plugins/redmine_wiki_extensions/app/views/wiki_extensions/_issues_form_details_bottom.html.erb (4.5ms)
  Rendered issues/_form.html.erb (103.4ms)
  Rendered attachments/_form.html.erb (1.3ms)
  Rendered issues/new.html.erb within layouts/base (110.4ms)
  Rendered plugins/redmine_sudo/app/views/sudo/_sudo_styles.html.erb (0.1ms)
  Rendered plugins/redmine_wiki_extensions/app/views/wiki_extensions/_html_header.html.erb (4.2ms)
  Rendered plugins/redmine_wiki_extensions/app/views/wiki_extensions/_body_bottom.html.erb (0.2ms)
Completed 200 OK in 234.7ms (Views: 118.1ms | ActiveRecord: 32.5ms)

Dependency issue with Redmine 3.2.3

When installing with redmine 3.2.3 i get the following error

You have requested:
  rake ~> 10.1.1

The bundle currently has rake locked at 11.2.2.
Try running `bundle update rake`

If you are updating multiple gems in your Gemfile at once,
try passing them all to `bundle update`
Run `bundle install` to install missing gems.

Needs adaptation for Redmine 2.5 (no "match" route)

On Debian "Jessie" Redmine-2.5.2.devel fails to start with the following error:

An error occurred while loading the routes definition of redmine_didyoumean plugin (/usr/share/redmine/plugins/redmine_didyoumean/config/routes.rb):
You should not use the `match` method in your router without specifying an HTTP method.
If you want to expose your action to both GET and POST, add `via: [:get, :post]` option.
If you want to expose your action to GET, use `get` in the router:
  Instead of: match "controller#action"
  Do: get "controller#action".

[BUG] Redmine 2.2.1 undefined local variable or method `issues_didyoumean_event_type'

This [BUG]came in with the last 2 commits.

ActionView::Template::Error (undefined local variable or method issues_didyoumean_event_type' for #<#<Class:0xc0e8538>:0xf6b9248>): 19: }; 20: </script> 21: 22: <%= javascript_tag "observeIssueSubjectField('#{@project.id}', #{@issue.id or '\'\''}, '#{issues_didyoumean_event_type}');" %> lib/redmine/hook.rb:111:inblock in render_on'
lib/redmine/hook.rb:61:in block (2 levels) in call_hook' lib/redmine/hook.rb:61:ineach'
lib/redmine/hook.rb:61:in block in call_hook' lib/redmine/hook.rb:58:intap'
lib/redmine/hook.rb:58:in call_hook' lib/redmine/hook.rb:158:incall_hook'
app/views/issues/_form.html.erb:44:in block in _app_views_issues__form_html_erb__850087821_112555030' app/helpers/application_helper.rb:996:inlabelled_fields_for'
app/views/issues/_form.html.erb:1:in _app_views_issues__form_html_erb__850087821_112555030' app/views/issues/_edit.html.erb:8:inblock in _app_views_issues__edit_html_erb___120103334_112125860'
app/helpers/application_helper.rb:989:in labelled_form_for' app/views/issues/_edit.html.erb:1:in_app_views_issues__edit_html_erb___120103334_112125860'
app/views/issues/show.html.erb:136:in _app_views_issues_show_html_erb___213414361_115290710' app/controllers/issues_controller.rb:119:inblock (2 levels) in show'
app/controllers/issues_controller.rb:116:in `show'

plugin doesn't support redmine 2

Trying to install on Redmine 2.0.2 fails

bundle exec rake redmine:plugins:migrate RAILS_ENV=production 

An error occurred while loading the routes definition of redmine_didyoumean plugin (/srv/redmine2/plugins/redmine_didyoumean/config/routes.rb): uninitialized constant ActionDispatch::Routing::Routes.

problems installing in redmine 2.6

root@helios:/var/www/projekte/redmine# bundle install
Your Gemfile lists the gem mysql2 (~> 0.3.11) more than once.
You should probably keep only one of them.
While it's not a problem now, it could cause errors if you change the version of just one of them later.
Your Gemfile lists the gem activerecord-jdbcmysql-adapter (>= 0) more than once.
You should probably keep only one of them.
While it's not a problem now, it could cause errors if you change the version of just one of them later.
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
You have requested:
  rake ~> 10.1.1

The bundle currently has rake locked at 10.4.2.
Try running `bundle update rake`

Why is an old version of rake needed in this plugin?

I also get this error:

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    thinking-sphinx (~> 3.1.1) ruby depends on
      activerecord (>= 4.1.0) ruby

    thinking-sphinx (~> 3.1.1) ruby depends on
      activerecord (3.2.21)

the plugin not support the redmine 1.4

when create new issue, the error occurs:

ActionController::RoutingError in Issues#new

Showing vendor/plugins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb where line #18 raised:

No route matches {:action=>"index", :controller=>"searchissues", :format=>"json"}

Extracted source (around line #18):

15: label_more: "<%= l(:dym_more_issues) %>",
16: label_in: "<%= l(:dym_in_project) %>",
17: issue_url: "<%= url_for(Issue.new) %>",
18: search_url: "<%= url_for(:action => 'index', :controller => 'searchissues', :format => 'json') %>"
19: };
20: </script>
21:

Trace of template inclusion: app/views/issues/_form.html.erb, app/views/issues/new.html.erb

RAILS_ROOT: C:/Rails_Prj/Redmine14

css and javascript not found

"NetworkError: 404 Not Found - http://...:8080/plugin_assets/redmine_didyoumean/stylesheets/didyoumean.css"
"NetworkError: 404 Not Found - http://...:8080/plugin_assets/redmine_didyoumean/javascripts/didyoumean.js"

this results into:
observeIssueSubjectField is not defined

The installations is done by using:
ruby script/plugin install https://github.com/abahgat/redmine_didyoumean.git

plugin seems to break in redmine 2.2.0

Hi,

after downloading the plugin for redmine 2.2.0 (under REDMINE_ROOT/plugins), I gave a successful
rake redmine:plugins:migrate RAILS_ENV=production. After restarting apache, I logged in and have the following problems:

  • when I hit on configure link in Settings/Plugins, log file records:

Started GET "/settings/plugin/redmine_didyoumean" for 10.0.0.182 at 2013-01-16 19:10:34 +0200
Processing by SettingsController#plugin as HTML
Parameters: {"id"=>"redmine_didyoumean"}
Current user: k.fardelas (id=63)
Rendered settings/plugin.html.erb within layouts/admin (2.3ms)
Missing template, responding with 404
Rendered common/error.html.erb within layouts/base (0.1ms)
Completed 404 Not Found in 37ms (Views: 21.1ms | ActiveRecord: 0.2ms)

and I get a 404.

  • when I hit on New Issue, log file records:

DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:erb] instead. (called from block in render_on at /usr/local/lib/redmine-2.2/lib/redmine/hook.rb:111)
Rendered issues/_form.html.erb (225.3ms)
Rendered issues/new.html.erb within layouts/base (231.1ms)
Missing template, responding with 404
Rendered common/error.html.erb within layouts/base (0.6ms)
Completed 404 Not Found in 454ms (Views: 23.0ms | ActiveRecord: 6.5ms)

and I get a 404.

So both Configure and New issue links went broken. Any recommendation?

Feature req. Instant trigger

"The search is triggered right after users leave the subject field"

Now with jQuery and Ajax, maybe it would be cool if a 'search' would be triggered right away when typing.

test new feature in redmine 2.1.6 and found an issue

@abahgat ,
please check it. Thanks.

the error appeared when I open new issue page, the log is
////////////////////////////////////////
Started GET "/projects/upmu/issues/new" for 192.168.3.35 at 2013-01-16 15:52:30 +0800
Processing by IssuesController#new as HTML
Parameters: {"project_id"=>"upmu"}
Current user: wanghui (id=39)
Rendered issues/_form_custom_fields.html.erb (220.4ms)
Rendered issues/_attributes.html.erb (586.6ms)
Rendered plugins/redmine_changeauthor/app/views/issues/_changeauthor.html.erb (7.3ms)
DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:erb] instead. (called from block in render_on at /opt/lampp/htdocs/redmine_2_1/lib/redmine/hook.rb:111)
Rendered plugins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb (375.1ms)
Rendered issues/_form.html.erb (1135.1ms)
Rendered issues/new.html.erb within layouts/base (1159.6ms)
Completed 500 Internal Server Error in 1508ms

ActionView::Template::Error (undefined local variable or method issues_didyoumean_event_type' for #<#<Class:0xccb95ec>:0xd0e9e78>): 19: }; 20: </script> 21: 22: <%= javascript_tag "observeIssueSubjectField('#{@project.id}', #{@issue.id or '\'\''}, '#{issues_didyoumean_event_type}');" %> lib/redmine/hook.rb:111:inblock in render_on'
lib/redmine/hook.rb:61:in block (2 levels) in call_hook' lib/redmine/hook.rb:61:ineach'
lib/redmine/hook.rb:61:in block in call_hook' lib/redmine/hook.rb:58:intap'
lib/redmine/hook.rb:58:in call_hook' lib/redmine/hook.rb:158:incall_hook'
app/views/issues/_form.html.erb:44:in block in _7bd6867026cd00b011506ff8633d70da' app/helpers/application_helper.rb:984:inlabelled_fields_for'
app/views/issues/_form.html.erb:1:in _7bd6867026cd00b011506ff8633d70da' app/views/issues/new.html.erb:11:inblock in _a9ba46013d6b3910b7cf2141367adf8c'
app/helpers/application_helper.rb:977:in labelled_form_for' app/views/issues/new.html.erb:5:in_a9ba46013d6b3910b7cf2141367adf8c'
app/controllers/issues_controller.rb:129:in block (2 levels) in new' app/controllers/issues_controller.rb:128:innew'

Started GET "/counts/user/issues/" for 192.168.3.49 at 2013-01-16 15:52:32 +0800
Processing by CountsController#user_issues as HTML
Current user: liufeng (id=173)
Rendered inline template (0.4ms)
Completed 200 OK in 12ms (Views: 1.1ms | ActiveRecord: 2.7ms)
Connecting to database specified by database.yml
OpenIdAuthentication.store is nil. Using in-memory store.

Redmine 3.x

Hi,

I would like to know if you plan to port your awesome plugin to redmine 3.x ?

Thanks

it seems not support redmine2.1.2?

Hi, @abahgat

I update redmine 2.1.2 these days, and found something interesting. the plugin can not work well on the redmine 2.1.2 with ruby 1.9.3.

do you have any idea? Thanks~

use thinking sphinxs error

when I bundle rake index , occured an error. How can I fix it? Thanks so much.

the error information is

[root@jira redmine]# bundle exec rake ts:index RAILS_ENV=production
Generating configuration to /opt/redmine/config/production.sphinx.conf
Sphinx 2.2.10-id64-release (2c212e0)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/opt/redmine/config/production.sphinx.conf'...
WARNING: key 'enable_star' was permanently removed from Sphinx configuration. Refer to documentation for details.
indexing index 'issue_core'...
ERROR: index 'issue_core': id is not a valid attribute name.
total 0 docs, 0 bytes
total 0.004 sec, 0 bytes/sec, 0.00 docs/sec
skipping non-plain index 'issue'...
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

italien locale makes ruby srv not start

the italien translation has errors:

Error message:
undefined method `deep_symbolize_keys' for "Qualsiasi progetto":String

removing the it.yml solves the problem

Deprecation warning on Redmine 2.5.1

With plugin version 1.2.0 Redmine_2.5.1 logs the following deprecation warning:

  Rendered issues/_form_custom_fields.html.erb (18.0ms)
  Rendered issues/_attributes.html.erb (45.2ms)
DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:erb] instead. (called from block in render_on at /usr/share/redmine/lib/redmine/hook.rb:111)
  Rendered plugins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb (4.9ms)

Plugin does not seem to work with Redmine 2.1.2

When I type in an issue that I know is a duplicate, nothing shows up. It appears no different than before the plugin was installed. I have checked my settings in the plugin to be sure that the duplicate would appear. Could you please test the plugin with this version? Thanks.

Environment:
Redmine version 2.1.2.stable
Ruby version 1.9.3 (x86_64-linux)
Rails version 3.2.8
Environment production
Database adapter Mysql2
Redmine plugins:
redmine_didyoumean 1.1.0
redmine_dmsf 1.4.5 stable
redmine_monitoring_controlling 0.1.1

Expose search json like api

Hello,
this plugin is great :)
I would like to pass search json to other apps, everything works for redmine API, but here login is required :( Is that possible to expose this route just like api (working with api-key token?)

Error while creating new issue

Steps that causes the error:

  1. Install plugin
  2. Restart redmine
  3. Trying to create new issue
    ->3. Error trying to create new issue

Expected result: No error while creating new issue


Environment:
Redmine version 2.2.3.stable
Ruby version 1.9.3 (i686-linux)
Rails version 3.2.12
Environment production
Database adapter Mysql2
Redmine plugins:
advanced_roadmap 0.8.0
redmine_contacts 3.1.2-light
redmine_contacts_helpdesk 2.1.3
redmine_issue_checklist 2.0.5
redmine_issue_templates 0.0.5
redmine_monitoring_controlling 0.1.1
redmine_people 0.1.6
redmine_questions 0.0.4
redmine_timesheet_plugin 0.7.0

Installed plugins are

Advanced roadmap & milestones plugin 0.8.0
Redmine CRM plugin 3.1.2-light
Redmine Helpdesk plugin 2.1.3
Redmine Issue Checklist plugin 2.0.5
Redmine Issue Templates plugin 0.0.5
Redmine (Monitoring & Controlling | Monitoramento & Controle) 0.1.1
Redmine People plugin 0.1.6
Redmine Q&A plugin 0.0.4
Redmine Timesheet Plugin 0.7.0

Trace from production.log

Started GET "/projects/sys/issues/new" for 127.0.0.1 at 2013-03-12 15:40:50 +0400
Processing by IssuesController#new as HTML
Parameters: {"project_id"=>"sys"}
Current user: dboldinov (id=1)
Rendered plugins/redmine_contacts_helpdesk/app/views/issues/_ticket_data_form.html.erb (1.2ms)
Rendered plugins/redmine_issue_templates/app/views/issue_templates/_issue_select_form.html.erb (1.1ms)
Rendered issues/_form_custom_fields.html.erb (4.5ms)
Rendered issues/_attributes.html.erb (27.0ms)
Rendered plugins/redmine_issue_checklist/app/views/issues/_checklist_form.html.erb (2.1ms)
DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:erb] instead. (called from block in render_on at /srv/app/redmine/lib/redmine/hook.rb:111)
Rendered plugins/redmine_didyoumean/app/views/issues/_didyoumean_injected.html.erb (147.8ms)
Rendered issues/_form.html.erb (194.5ms)
Rendered issues/new.html.erb within layouts/base (195.2ms)
Completed 500 Internal Server Error in 247ms

ActionView::Template::Error (undefined local variable or method issues_didyoumean_event_type' for #<#<Class:0xc71e3e4>:0xc7a3544>): 19: }; 20: </script> 21: 22: <%= javascript_tag "observeIssueSubjectField('#{@project.id}', #{@issue.id or '\'\''}, '#{issues_didyoumean_event_type}');" %> lib/redmine/hook.rb:111:inblock in render_on'
lib/redmine/hook.rb:61:in block (2 levels) in call_hook' lib/redmine/hook.rb:61:ineach'
lib/redmine/hook.rb:61:in block in call_hook' lib/redmine/hook.rb:58:intap'
lib/redmine/hook.rb:58:in call_hook' lib/redmine/hook.rb:158:incall_hook'
app/views/issues/_form.html.erb:44:in block in _app_views_issues__form_html_erb__902340551_104669920' app/helpers/application_helper.rb:998:inlabelled_fields_for'
app/views/issues/_form.html.erb:1:in _app_views_issues__form_html_erb__902340551_104669920' app/views/issues/new.html.erb:11:inblock in _app_views_issues_new_html_erb__1016058985_104438100'
app/helpers/application_helper.rb:991:in labelled_form_for' app/views/issues/new.html.erb:5:in_app_views_issues_new_html_erb__1016058985_104438100'
app/controllers/issues_controller.rb:134:in block (2 levels) in new' app/controllers/issues_controller.rb:133:innew'

Whether Can support Redmine3.X

An error occurred while loading the routes definition of redmine_didyoumean plugin (C:/Sites/redmine-3.1.0/plugins/redmine_didyoumean/config/routes.rb): You should not use the match method in your router without specifying an HTTP method.
If you want to expose your action to both GET and POST, add via: [:get, :post] option.
If you want to expose your action to GET, use get in the router:
Instead of: match "controller#action"
Do: get "controller#action".

Prompted for auth when Authentication Required is on

If you turn on "Authentication Required" in the Redmine Administration/Authentication I get prompted for an login by the browser when using the plugin.

I'm struggling to track down the cause, has anyone seen this issue?

Thanks

This plugin can not work with 1.4.4

When I copy and restart redmine. It has the following errors.

uninitialized constant Rails::Plugin::ActionDispatch
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:131:in const_missing' /var/www/redmine/vendor/plugins/redmine_didyoumean/init.rb:22:inevaluate_init_rb'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin.rb:158:in evaluate_init_rb' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/core_ext/kernel/reporting.rb:11:insilence_warnings'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin.rb:154:in evaluate_init_rb' /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin.rb:48:inload'
/var/www/redmine/config/../vendor/plugins/engines/lib/engines/plugin.rb:44:in load' /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin/loader.rb:38:inload_plugins'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin/loader.rb:37:in each' /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin/loader.rb:37:inload_plugins'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:369:in load_plugins' /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:165:inprocess'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:113:in send' /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:113:inrun'
/var/www/redmine/config/environment.rb:21
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:in require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:inrequire'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:547:in new_constants_in' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:inrequire'
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/tasks/misc.rake:4
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in call' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:inexecute'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in each' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:inexecute'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:158:in invoke_with_call_chain' /usr/local/lib/ruby/1.8/monitor.rb:242:insynchronize'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in invoke_with_call_chain' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:176:ininvoke_prerequisites'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:174:in each' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:174:ininvoke_prerequisites'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:157:in invoke_with_call_chain' /usr/local/lib/ruby/1.8/monitor.rb:242:insynchronize'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in invoke_with_call_chain' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:144:ininvoke'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:116:in invoke_task' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:intop_level'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in each' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:intop_level'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in standard_exception_handling' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:88:intop_level'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:66:in run' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:instandard_exception_handling'
/usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in run' /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/bin/rake:33 /usr/local/bin/rake:19:inload'
/usr/local/bin/rake:19
Tasks: TOP => db:migrate_plugins => environment

template error (issues_didyoumean_event_type) with 2.4.4

The plugin worked fine on 2.3. With 2.4.4, opening a specific issue results in the following crash:

Completed 500 Internal Server Error in 677.4ms

ActionView::Template::Error (undefined local variable or method `issues_didyoumean_event_type' for #<#<Class:0xbfea1b8>:0xd202b98>):
    19:   };
    20: </script>
    21:
    22: <%= javascript_tag "observeIssueSubjectField('#{@project.id}', #{@issue.id or '\'\''}, '#{issues_didyoumean_event_type}');" %>
  lib/redmine/hook.rb:111:in `block in render_on'
  lib/redmine/hook.rb:61:in `block (2 levels) in call_hook'
  lib/redmine/hook.rb:61:in `each'
  lib/redmine/hook.rb:61:in `block in call_hook'
  lib/redmine/hook.rb:58:in `tap'
  lib/redmine/hook.rb:58:in `call_hook'
  lib/redmine/hook.rb:158:in `call_hook'
  app/views/issues/_form.html.erb:44:in `block in _app_views_issues__form_html_erb___582396499_113230890'
  app/helpers/application_helper.rb:984:in `labelled_fields_for'
  app/views/issues/_form.html.erb:1:in `_app_views_issues__form_html_erb___582396499_113230890'
  app/views/issues/_edit.html.erb:8:in `block in _app_views_issues__edit_html_erb__915690113_112227570'
  app/helpers/application_helper.rb:977:in `labelled_form_for'
  app/views/issues/_edit.html.erb:1:in `_app_views_issues__edit_html_erb__915690113_112227570'
  app/controllers/issues_controller.rb:124:in `block (2 levels) in show'
  app/controllers/issues_controller.rb:121:in `show'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.