- vừa được xem lúc

Gem DataGrid

0 0 8

Người đăng: Thai Quoc Vuong

Theo Viblo Asia

Trong bài viết này tôi sẽ giới thiệu cho bạn gem DataGrid. Nó cho phép bạn dễ dàng xây dựng datagrid hay còn gọi là bảng dữ liệu với column được sắp xếp và filters.

Introduction

Thư viện Ruby giúp bạn xây dựng và biểu diễn dữ liệu dạng bảng với:

  • Customizable filtering
    
  • Columns
    
  • Sort order
    
  • Localization
    
  • Export to CSV
    

ORM Support

  • ActiveRecord
  • Mongoid
  • MongoMapper
  • Sequel
  • Array (slow but possible)

Để tạo một datagrid ta có đoạn code mẫu như sau

class UsersGrid include Datagrid scope do User.includes(:group) end filter(:category, :enum, select: ["first", "second"]) filter(:disabled, :xboolean) filter(:group_id, :integer, multiple: true) filter(:logins_count, :integer, range: true) filter(:group_name, :string, header: "Group") do |value| self.joins(:group).where(:groups => {:name => value}) end column(:name) column(:group, order: -> { joins(:group).order(groups: :name) }) do |user| user.name end column(:active, header: "Activated") do |user| !user.disabled end end

Grid DSL

Để tạo báo cáo, bạn cần xác định:

  1. Phạm vi của các đối tượng để xem qua
  2. Bộ lọc sẽ được sử dụng để lọc dữ liệu
  3. Cột sẽ được hiển thị và có thể sắp xếp (nếu có thể)

Scope

Phạm vi mặc định của các đối tượng để lọc và hiển thị. Trong trường hợp phổ biến, nó là lớp con ActiveRecord::Base (hoặc bất kỳ ORM nào khác được hỗ trợ) với một số phạm vi chung như :

scope do User.includes(:group)
end

Filters

Mỗi bộ lọc được define bao gồm:

  1. Tên của bộ lọc
  2. Loại bộ lọc sẽ được sử dụng cho định dạng giá trị
  3. Khối điều kiện áp dụng cho phạm vi đã xác định
  4. Tùy chọn bổ sung

Datagrid hỗ trợ các loại bộ lọc khác nhau bao gồm:

  • text
  • integer
  • float
  • date
  • datetime
  • boolean
  • xboolean - the select of "yes", "no" and any
  • enum - selection of the given values
  • string
  • dynamic - build dynamic SQL condition

Columns

Mỗi cột được biểu diễn bằng tên và code block để tính giá trị.

column(:activated, :header => "Active", :order => "activated", :after => :name) do self.activated?
end

Một số tùy chọn định dạng cũng có sẵn. Mỗi cột có thể sắp xếp được.

Front end

Using Generator

Datagrid có một builtin generator:

rails g datagrid:scaffold skills

Lệnh cung cấp cho bạn code sử dụng ngay:

create app/grids/skills_grid.rb
create app/controllers/skills_controller.rb
create app/views/skills/index.html.erb
route resources :skills
insert app/assets/stylesheet/application.css

Customize Built-in partials

Để có thể kiểm soát datagrid built-in partials hãy chạy:

rake datagrid:copy_partials

Advanced frontend

Advanced frontend được mô tả chi tiết ở đây

Ref: https://github.com/bogdan/datagrid Live Demo: http://datagrid.herokuapp.com/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 222

- vừa được xem lúc

Rails Memoization

Memoization is a process that can be used to speed up rails methods. It caches the results of methods that do time-consuming work, work that only needs to be done once. Here is an example. Example.

0 0 48

- vừa được xem lúc

Tại sao Rails lại dùng cả Webpack lẫn Sprocket?

Khi Rails 6 được ra mắt, có thể bạn đã từng tự hỏi. WTF, sao Webpack đã được add vào rồi, mà Sprocket vẫn tồn tại thế kia . Chẳng phải Webpack và Sprocket được dùng để giải quyết chung một công việc hay sao. Hoặc cả đây:.

0 0 59

- vừa được xem lúc

Bạn nên sử dụng Elasticsearch trong ứng dụng Ruby On Rails như thế nào?

Elasticsearch là một công cụ phân tích và mã nguồn mở mạnh mẽ và linh hoạt, phân tán, theo thời gian thực. Đó là tiêu chuẩn vàng trong công nghệ tìm kiếm.

0 0 80

- vừa được xem lúc

Form object pattern trong rails

1.Mở đầu.

0 0 111

- vừa được xem lúc

Sử dụng Twilio để gửi SMS trong ứng dụng Ruby on Rails

Ngoài cách xác nhận tài khoản hay gửi thông báo bằng email thì hôm nay mình sẽ hướng dẫn các bạn 1 cách nữa là thông qua SMS/Voice. Công cụ sử dụng sẽ là gem Twilio. Installation. Để cài đặt bằng Bundler, hãy lấy phiên bản mới nhất:.

0 0 67