LibUI 정제된 테이블 페이지 매김/필터링을 위한 Glimmer DSL
refined_table
이라는 새로운 알파 사용자 정의 컨트롤과 함께 제공됩니다. 이 컨트롤은 기본적으로 비즈니스 응용 프로그램에서 일반적으로 요구되는 페이지 매김 및 필터링 지원이 포함된 table
컨트롤입니다. 즉, 페이지 매김 및 필터링을 통해 사용자에게 좋은 사용자 경험을 제공하면서 문제 없이 수만 개의 행을 처리할 수 있습니다. 또한 필터링 성능이 향상되었을 뿐만 아니라 모든 테이블 열에 대해 실행되며 쿼리 용어에 대한 결과를 자동으로 캐시하고 반복되는 쿼리에 대해 결과를 즉시 재생합니다.50,000개의 연락처 행이 있는 새 사용자 지정 컨트롤을 보여 주기 위해 새 예제Paginated Refined Table가 포함되었습니다.
마지막으로
refined_table
애플리케이션에서 새로운 Rubio Radio 사용자 지정 컨트롤을 사용하여 뛰어난 성능과 유용성으로 10,000개의 상위 라디오 방송국을 탐색할 수 있습니다.페이지가 매겨진 정제된 테이블 예제 코드:
# From: https://github.com/AndyObtiva/glimmer-dsl-libui#paginated-refined-table
require 'glimmer-dsl-libui'
class PaginatedRefinedTable
Contact = Struct.new(:name, :email, :phone, :city, :state)
include Glimmer::LibUI::Application
NAMES_FIRST = %w[
Liam Noah William James Oliver Benjamin Elijah Lucas Mason Logan Alexander Ethan Jacob Michael Daniel Henry Jackson Sebastian
Aiden Matthew Samuel David Joseph Carter Owen Wyatt John Jack Luke Jayden Dylan Grayson Levi Isaac Gabriel Julian Mateo
Anthony Jaxon Lincoln Joshua Christopher Andrew Theodore Caleb Ryan Asher Nathan Thomas Leo Isaiah Charles Josiah Hudson
Christian Hunter Connor Eli Ezra Aaron Landon Adrian Jonathan Nolan Jeremiah Easton Elias Colton Cameron Carson Robert Angel
Maverick Nicholas Dominic Jaxson Greyson Adam Ian Austin Santiago Jordan Cooper Brayden Roman Evan Ezekiel Xaviar Jose Jace
Jameson Leonardo Axel Everett Kayden Miles Sawyer Jason Emma Olivia Bartholomew Corey Danielle Eva Felicity
]
NAMES_LAST = %w[
Smith Johnson Williams Brown Jones Miller Davis Wilson Anderson Taylor George Harrington Iverson Jackson Korby Levinson
]
CITIES = [
'Bellesville', 'Lombardia', 'Steepleton', 'Deerenstein', 'Schwartz', 'Hollandia', 'Saint Pete', 'Grandville', 'London',
'Berlin', 'Elktown', 'Paris', 'Garrison', 'Muncy', 'St Louis',
]
STATES = [ 'AK', 'AL', 'AR', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'GA',
'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME',
'MI', 'MN', 'MO', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM',
'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX',
'UT', 'VA', 'VT', 'WA', 'WI', 'WV', 'WY']
attr_accessor :contacts, :name, :email, :phone, :city, :state, :filter_value, :index
before_body do
@contacts = 50_000.times.map do |n|
n += 1
first_name = NAMES_FIRST.sample
last_name = NAMES_LAST.sample
city = CITIES.sample
state = STATES.sample
Contact.new("#{first_name} #{last_name}", "#{first_name.downcase}#{n}@#{last_name.downcase}.com", '555-555-5555', city, state)
end
end
body {
window("50,000 Paginated Contacts", 600, 700) {
margined true
vertical_box {
form {
stretchy false
entry {
label 'Name'
text <=> [self, :name] # bidirectional data-binding between entry text and self.name
}
entry {
label 'Email'
text <=> [self, :email]
}
entry {
label 'Phone'
text <=> [self, :phone]
}
entry {
label 'City'
text <=> [self, :city]
}
entry {
label 'State'
text <=> [self, :state]
}
}
button('Save Contact') {
stretchy false
on_clicked do
new_row = [name, email, phone, city, state]
if new_row.map(&:to_s).include?('')
msg_box_error('Validation Error!', 'All fields are required! Please make sure to enter a value for all fields.')
else
@contacts << Contact.new(*new_row) # automatically inserts a row into the table due to explicit data-binding
@unfiltered_contacts = @contacts.dup
self.name = '' # automatically clears name entry through explicit data-binding
self.email = ''
self.phone = ''
self.city = ''
self.state = ''
end
end
}
refined_table(
model_array: contacts,
table_columns: {
'Name' => {text: {editable: false}},
'Email' => :text,
'Phone' => :text,
'City' => :text,
'State' => :text,
},
table_editable: true,
per_page: 20,
)
}
}
}
end
PaginatedRefinedTable.launch
페이지가 매겨진 정제된 테이블 예시 스크린샷:
해피Glimmering !
Reference
이 문제에 관하여(LibUI 정제된 테이블 페이지 매김/필터링을 위한 Glimmer DSL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/andyobtiva/glimmer-dsl-for-libui-refined-table-paginationfiltering-2ka2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)