Wednesday 28 December 2016

Upload multiple image and view convert into base 64 in rails



1. step :
 <script type="text/javascript">
window.onload = function(){
       
    //Check File API support
    if(window.File && window.FileList && window.FileReader)
    {
        var filesInput = document.getElementById("files");
       
        filesInput.addEventListener("change", function(event){
           
            var files = event.target.files; //FileList object
            var output = document.getElementById("result");
           
            for(var i = 0; i< files.length; i++)
            {
            var sep = '&&&=>'
     document.getElementById('fileDragName').value = document.getElementById('fileDragName').value + sep + files[i].name
     document.getElementById('fileDragSize').value =  document.getElementById('fileDragSize').value + sep + files[i].size
     document.getElementById('fileDragType').value = document.getElementById('fileDragType').value + sep + files[i].type
     // document.getElementById('fileDragData').value =document.getElementById('fileDragData').value + sep + files[i].slice();
         reader = new FileReader();
     reader.onload = function(event) {
       document.getElementById('fileDragData').value =  document.getElementById('fileDragData').value+sep+ event.target.result;}
     reader.readAsDataURL(files[i]);
                var file = files[i];
       
                //Only pics
                if(!file.type.match('image'))
                  continue;
               
                var picReader = new FileReader();
               
                picReader.addEventListener("load",function(event){
                   
                    var picFile = event.target;
                   
                    var div = document.createElement("div");
                   
                    div.innerHTML = "<img class='thumbnail' src='" + picFile.result + "'" +
                            "title='" + picFile.name + "'/>";
                   
                    output.insertBefore(div,null);          
                 
                });
               
                 //Read the image
                picReader.readAsDataURL(file);
            }                              
         
        });
    }
    else
    {
        console.log("Your browser does not support File API");
    }
}
   
</script>
<style type="text/css">
.thumbnail{
       margin: 10px;
    /* margin-top: -95px; */
    margin-left: 4px;
    float: left;
    height: 74px;
    width: 77px;
}
.upload{right: -9px !important; top: -42px !important;}
</style>


<script type="text/javascript">


  function image(image_id){
      $.ajax({
        type:'GET',
        url: '<%= image_path %>',
        dataType: 'script',
        data: $.param({ image_attachment: {image_id: image_id}})
      });
   
    }

</script>
<% if @event.present? %>
<div id="edit_image" style="margin-top:70px;margin-left:150px;z-index:1;position:absolute;">
<% ImageAttachment.where(event_id: @event.id).each do |image| %>
    <img src="<%= image.avatar %>" width="77" height="74" style="vertical-align:bottom;">
    <a href="/events/edit/<%= @event.id%>" onclick="image(<%= image.id %>);" style="">Remove</a>
<%end%>
</div>
<%end%>
 <output id="result"  width="77" height="74"  />

<input type="hidden" name="file_name" value="" id="fileDragName">
<input type="hidden" name="size" value="" id="fileDragSize">
<input type="hidden" name="type" value="" id="fileDragType">
<input type="hidden" name="image_base64" value="" id="fileDragData">
<%= file_field_tag :avatar, name: "image_attachments[avatar][]", :multiple => true, :class => 'uploads user_picture img_file',  :id=>"files" %>

step - 2 : Put two gem in gem file
       1.  gem 'carrierwave' #, '0.11.0'
       2. gem 'carrierwave-base64'
       bundle
  go to model image_attachment or any model write below given line
     mount_base64_uploader :image, ImageUploader

step: 3 go to controller create method

 if params[:file_name] && params[:size] && params[:type] && params[:image_base64]
                       file_names = params[:file_name].split("&&&=>")
                       file_names.shift
                       sizes = params[:size].split("&&&=>")
                       sizes.shift
                       types = params[:type].split("&&&=>")
                       types.shift
                       bases = params[:image_base64].split("&&&=>")
                       bases.shift
                       bases.each_with_index do |base|
                        @event.image_attachments.create(:avatar=> base, :user_id => @event.user_id)
                     
                       end
                     end
Step 4: go to controller event permit parameters
      image_attachments_attributes: [:id, :event_id, :user_id, :avatar]

  image_attachment is third model 

Thursday 22 December 2016

Remeber logs:-

Play with Postgres Console

Login to Postgress Console:-
$ psql -U postgres

See Database:-
$ \l;

Create New Database:-

$ create database Databasename;

To switch databases:
$\connect databasename;
To list all table
$\d
To Insert records:


INSERT
INTO TABLE_NAME (column1,
column2,
column3,...columnN)
VALUES
(value1,
value2,
value3,...valueN);
$insert into articles(title) values(33);


T0 list record:
$ SELECT * FROM articles;




Play with Mysql Console:

Login to Mysql Console:-
$ mysql -u root -p

See Database:-
$ show databases;

Create New Database:-

$ create database Databasename;

To switch databases:
$ use mydb; or connect dbnae;
To list all table
$ show tables;
To Insert records:


INSERT
INTO TABLE_NAME (column1,
column2,
column3,...columnN)
VALUES
(value1,
value2,
value3,...valueN);
$insert into articles(title) values(33);


T0 list record:
$ SELECT * FROM articles;




Dump in Import Postgres:-p -U USERNAME DBNAME > dbexport.pgsql
$ pg_dump -U root blog_development > blog_development.sql


$ psql -U root blog_production < blog_development.sql


Dump in Import Mysql:-p -U USERNAME DBNAME >
dbmysqldump -u [username] -p [database name] > [database name].sql

STEP 1.export.pgsql
$ mysqldump -u root -p blog_development > blog_development.sql
STEP .2 pwd
copy server path : eg : home/ubuntu/app/chumaround/
go to local machine
step:3
scp -r ubuntu@xx.xxx.160.102:/home/ubuntu/app/chumaround/dump_gatherin_rockers.sql /home/bittern102/Desktop/


$ mysql -u root -p blog_production < blog_development.sql







How to Create Like as facebook

1.  rails g model like user_id:integer comment_id:integer

2. in like model make relation
    belongs_to :user
    belongs_to  :comment

3. User model : has_many :likes, dependent: :destroy

4. Comment model : has_many :likes, dependent: :destroy

5 rails g controller Likes create unlike

paste code in like controller 

def create
    @comment = Comment.find(params[:comment_id])
  @like = Like.new(user_id: current_user.id, comment_id: @comment.id)
  @like.save
  @post = @comment.post
  redirect_to @post

  end

  def unlike
 
  @comment = Comment.find(params[:comment_id])
  @like = Like.where(user_id: current_user.id, comment_id: @comment.id).first
  @like.destroy
  @post = @comment.post
  redirect_to @post
  end

6 routes.rb

    get '/like', to: "likes#create"

  get '/unlike', to: "likes#unlike"

7 in view  -> posts -> show.html.erb

<% @post.comments.each do |comment| %>
     <p>
      <strong>Commenter:</strong>
      <%= comment.commenter %>
    </p>
    <!-- <a href="/like?comment_id=<%#= comment.id %>">Like(<%#= Like.where(:comment_id => comment.id).count %>)</a> -->
      <% if comment.likes.where(:user_id => current_user.id).present? %>
      <a href="/unlike?comment_id=<%= comment.id %>">UnLike(<%= comment.likes.count %>)</a>
      <% else %>
      <a href="/like?comment_id=<%= comment.id %>">Like(<%= comment.likes.count %>)</a>
      <% end %>
  </div>
  <% end %>
   

Friday 23 September 2016

How to create like in rails

                   How to Create Like in Rails

create like table

class CreateLikes < ActiveRecord::Migration
  def change
    create_table :likes do |t|
      t.boolean :like
      t.integer :user_id
      t.integer :event_id
      t.timestamps
    end
  end
end

relationship  like model
    belongs_to :user
    belongs_to :event
    validates_uniqueness_of :user, scope: :event

relationship in user or any model like this

 has_many :like, dependent: :destroy

  def thumbs_up_total
      self.like.where(like: true).size
  end
 
  def thumbs_down_total
      self.like.where(like: false).size
  end

Controller code in productcontroller , eventcontroller any model you want to use
   def like
       #used set_event on bottom and top
       like = Like.create(like: params[:like], user: current_user, event: @event)
        if like.valid?
            flash[:success] = "Your selection was successfull"
            redirect_to :back
        else
           flash[:danger] = "You can only like/dislike a event once"
           redirect_to :back
        end
    end


view in you write same as ( x is local object you can replace from your object like event , product)

  <div class="thumbs">
                    <%= link_to like_event_path(x, like: true), method: :post do %>
                    <i class="white glyphicon glyphicon-thumbs-up">&nbsp<%= x.thumbs_up_total %></i>
                    <% end %> &nbsp&nbsp&nbsp&nbsp
                    <%= link_to like_event_path(x, like: false), method: :post do %>
                    <i class="white glyphicon glyphicon-thumbs-down">&nbsp<%= x.thumbs_down_total %></i>
                    <% end %>
                   
                </div>


route
resources :events do
    member do
      post 'like'
      end







Friday 10 June 2016

How to create dropdown in active_admin using scope


     1.First create scope in your model like this :-
         
           1.  scope :generalnews, -> { where(news_type: 'generalnews') }
   2.  scope :ceonews, -> { where(news_type: 'ceonews') }

      2. in active_admin

   f.input :news_type, :collection => News.all.map{|u| [u.news_type, u.id]}

  

How to Create video Thumbnailer in rails



                      How to Create video Thumbnailer in rails


                     1.     In model you have to write 
                         
                             mount_uploader :video, AvatarUploader
                    
                      2.   write gem in your gemfile
                             
                              gem 'carrierwave' 
                              gem 'carrierwave-video-thumbnailer' 
                      
                      3.  and install dependance for thumbnailer
                                    
                              sudo apt-get install ffmpegthumbnailer
                      
                    4.   write code in your uploader folder
                      include CarrierWave::Video  # for your video processing
                      include CarrierWave::Video::Thumbnailer

                      version :thumb do
    process thumbnail: [{format: 'png', quality: 10, size: 192, strip: false, logger: Rails.logger}]
    def full_filename for_file
      png_name for_file, version_name
    end
  end

  def png_name for_file, version_name
    %Q{#{version_name}_#{for_file.chomp(File.extname(for_file))}.png}
  end


Note : strip  should be false for thumbnailer , go to public folder -> tmp->video -> 1-> you can file thumbnailer in your folder




Revert last commit or second last and more....

 Git revert commit_id -m 1 this command willl revert last commit  Git revert commit_id -m 2 this command will revert second commit with same...