Oinone
Products
Oinone
Oinone Framework
Enterprise Low-code Framework
Aino
Aino
Intelligent AI Platform
Use CasesPricingBlogCommunity
Resources
📖
Documentation
Guides and API References
💬
Support
Get Technical Support
📄
Changelog
Latest Release Notes
🏡
About
Our Team and Vision
Search K
v6.xv7.x
简体中文English
Installation and Upgrade
Community Edition
Enterprise Edition
Transition from Community Edition to Enterprise Edition
Oinone Designer Configuration Guide
Version Upgrade
Version List
FAQ
Dev Manual
Tutorials
Dev ENV
Git Setup
JDK Setup
Maven Setup
Node.js Setup
Setup Guide
Back-end Framework
Chapter 1:Architecture Overview
Chapter 2:A New Application
Chapter 3:Models And Basic Fields
Chapter 4:A Brief Introduction To Security
Chapter 5:Finally, Some UI To Play With
Chapter 6:Basic Views
Chapter 7:Relations Between Models
Chapter 8:Field Interlinkage
Chapter 9:Ready For Some Action
Chapter 10:Constraints
Chapter 11:Add The Sprinkles
Chapter 12:Inheritance
Chapter 13:Interact With Other Modules
Chapter 14:Customized Features
Discover the Front-end Framework
Chapter 1:Widget
Chapter 2:Build a Dashboard
Master the Front-End Framework
Chapter 1:Front-End Overview
Chapter 2:Create a Gantt View
Chapter 3:Customize a Gallery View
Init Module Data
Restrict Access to Data
Export and Import
Debug Tools
Operation Guide
Customize a Field Widget
Customize a action widget
Customize a view widget
Customize GraphQL Requests
Customize Themes
Default Themes
Dark Themes
Combination Of Customized Widget And Designer
Reference Guide
Back-End framework
Module API
ORM API
Functions API
Actions API
UX API
Security in Oinone
Advance API
Protocol API
Request Context API
Meta Directive API
Hint API
Message Hub API
FileClient API
MQ API
Redis API
ES API
Tools API
Front-End framework
Framework Overview
Environment
Context
Widget
Component Lifecycle
Basic
Mask
Layout
DSL
View
Element
Pack
Action
Field
Table Field
Search Field
Form Field
Detail Field
Gallery Field
Router
Oio Components
Vue UI Antd
Vue UI El
Vue UI
Services
Metadata Service
SPI Service
Router Service
GraphQL Service
HttpClient Service
RSQL Service
Message Hub Service
Event Bus Service
Stream Service (peer to peer)
Expression Service
Translate Service
User interface
View architectures
Table
Form
Detail
Gallery
Tree
UI icons
Standard Modules
User & Business API
Message API
Workflow
Import and Export
Resources API
EIP API
Common Extension Points And SPI List
Error Codes
R&D Paradigm
R&D Paradigm:R&D Process
R&D Paradigm:Modular Design
R&D Paradigm:Model Design
Software Companies:The Paradigm of Standardization and Customization Symbiosis
Common Solutions
Frontend
Global Layout:Custom Tree Component with Default First Value Selection
Release:Frontend Release Process
Field:How to Automatically Refresh Views When Switching Between Multi-Tabs
Field:Data Pop-Back from Popup Operations to Fields
Application:Embedding as Iframe into Existing Systems
Application:Introducing Qiankun Micro-Frontend
Button:How to Display Workflow Approval Buttons in Business Model Lists
Button:Passing Extra Parameters Across Pages
Network Requests:Detailed Explanation of OioProvider (Custom Request Error Interception)
Network Requests:Request Encryption
Views:Implementing Multiple View Switching
Views:Table Column Merging
Views:Table Column Footer Statistics
Views:Table Row Copy Functionality
Route Extension:Adding New Routes, such as Overriding the Default Login Page
Backend
Dependency Configuration:How to Add Data Visualization Runtime Dependencies
Feature Introduction:Data Visualization - How to Reference Charts, Reports, and Dashboards in Projects
Visual Construction:Low-Code and No-Code Integration for Charts in Data Visualization
Visual Query:Data Visualization - How to Customize Query Data Methods
Scenario Application:Excel Watermark Addition Functionality
Scenario Application:Asynchronous Execution of Functions
Scenario Application:Dynamic Forms (Same Button Jumps to Different Pages)
External Integration:Enterprise WeChat OAuth2.0 Integration
External Integration:DingTalk Integration with OAuth2.0
Sequence Acquisition:How to Manually Obtain Sequences in Projects
Development Mode:Collaborative Development (Revised)
Development Specifications:Function and Action Function Usage Specifications
Development Aid:Configuration Issues and Troubleshooting Paths for O2M, M2O, and M2M Relationship Fields
Development Assistance:Oinone Platform Visual Debugging Tool
Development Aid:Implementing Page Data Linkage in Low-Code
Development Aid:Implement Duplication Creation in Low-code Manner
Development Aid:Generating API Documentation with GraphQL
Development Aid:Automatic Form Filling with User-related Information
Release Process:Back-end release process
Development practice:Business implementation of a multi-tenant solution
Open Interface:EIP Open Interface Request with MD5 Signature
Search Enhancement:Oinone Introduces Search Engine (Enhanced Model)
Data Operation:DsHint(Specify Data Source) and BatchSizeHint(Specify Batch Quantity)
Search Enhancement:Common Problem Solutions for Introducing Search Enhancement Model Channel
Data Operation:Excel Import/Export Template Translation
Data Operation:Batch Excel Import
Data Operation:Usage of IWrapper, QueryWrapper, and LambdaQueryWrapper
Data Operation:Oinone External Data Source Connection Solution
Data Operation:Database and Table Sharding with Custom Sharding Rules
Data Operation:Complex Excel Template Definition
Data Operations:Import and Export of Complex Field Types
Data Operation:Multi-Sheet Import and Export Example
Data Operation:Multi-table Join Query Solutions
Data Operation:How to Use Bitwise Operation Data Dictionary
Data Operation:How to Customize Excel Import and Export Functions
Data Operation:Custom Sort Fields and Sorting Rules During Query
Data Operations:Custom RSQL Placeholders and Their Usage in Permissions
Data Operations:Custom SQL (Mapper) Statements
Data Operation:Unstored Field Search
Data Dialect:[DM] Backend Deployment with Dameng Database
Data Dialect:【KDB】Using Kingbase Database (Renmin Kingbase/KE Kingbase) for Backend Deployment
Data Dialect:[MSSQL] Backend Deployment with MSSQL Database (SQL Server)
Data Dialect:【OpenGauss】Using OpenGauss Database for Backend Deployment
Data Dialect:[PostgreSQL] Backend Deployment with PostgreSQL Database
File Storage:OSS Configuration for MINIO Without Public Network Access
File Storage:OSS (CDN) Configuration and File System Operations
Permission Extension:How to Skip Permission Interception for Functions
Permission Extension:How to Delete the Default Homepage Node in System Permissions
Permission Extension:How to Extend Action Permissions
Permission Extension:How to Add Menu Permissions to Roles
Permission Extension:How to Skip Fixed Path Permissions
Tree-Table Configuration:How to Configure Tree-Tables
Validation Customization:How to Implement Special Requirements with Custom Expressions? Extending Built-in Function Expressions
Process Extension:How to Add Workflow Runtime Dependencies
Process Extension:Workflow Audit Withdrawal, Rollback, and Rejection Hook Usage
Process expansion:Operate the workflow through business data (such as urging, canceling, etc.)
Process Extension:Summary of Custom Function Example Codes for Workflow Extension
Process Configuration:Workflow Introduction and Process Triggering in Projects
Message Customization:How to Push Custom Messages
Source Code Configuration:How to Configure Expressions Using Source Code
Environmental Protection:Oinone Environmental Protection (above v5.2.3)
Environment Upgrade:Cache Connection Switched from Jedis to Lettuce
Environment Deployment:Deploying Oinone Projects on TongWeb and Tomcat
Environment Deployment:Deploy Designer on NeoKylin (mips64 Architecture)
Environment Deployment:Backend No-Code Designer Jar Package Startup Method
Login Extension:Oinone Login Extension:Docking with SSO
Development Framework:Framework MessageHub(Information Prompt)
Network Request:Forced Password Change on First Login
Auto-increment ID:How to Use Auto-increment IDs in Projects
Authentication Integration:Single Sign-On (SSO)
Configuration Instructions:Detailed Dubbo Configuration (Revised)
Configuration Guide:Function Trigger and Scheduling Configuration with Examples
Page Design:Configuration Methods for Global Home and Application Home Pages (homepage)
Page Design:How to Achieve Page Navigation
Page Design:Customizing User Center Menu
Project Integration:Nacos as a Registration Center:How to Invoke SpringCloud Services of Other Systems?
Project Integration:How Oinone Supports Building Distributed Projects
Project Integration:Introducing Nacos as the Registration Center in Oinone Projects
Project Deployment:Common Issues in Docker Deployment
Project Deployment:Oinone Offline Deployment of Designer JAR Package
Project Deployment:Oinone Offline Deployment of Designer Image
Project Deployment:Oinone Designer Deployment Parameter Instructions
Project Deployment:Import and Export of Data Visualization
Project Deployment:Import and Export of Workflow Designer
Project Deployment:Import and Export of UI Designer
FAQ
Startup:Common Issues with Oinone License Usage
Startup:Issues with Startup Dependency Errors
Startup:Scheduling Server Unassigned Task Queue Keeps Logging Continuously
Startup:Common Issues with Backend Startup
How to Configure Multi-value Fields and Field Default Values During Development
How to Obtain the Requested Model During Development
Under Development:Model Copy Tool Class
How to Create Indexes, Unique Indexes, and Composite Indexes During Development
How to Obtain Current Logged-in User Information During Development
Environment Preparation:npm Installation Dependencies on Windows Environment Prompt Insufficient Permissions
Environment Migration:Dubbo Timeout Causes Import Failure When Importing Design Data
Operation and Maintenance Related:Does the Platform Have a Health Check Interface?
Runtime:Dubbo Service Not Found
Runtime:SQL Execution Error When Saving Multivalue Fields
Runtime:How to Properly Initiate Requests Using GQL Tools
Runtime:How to Implement Synchronous Excel Download
Runtime:Export Task Stuck in "Processing" State
Runtime:Field Not Found - Unknown field ‘xx’
Runtime:Permission Configuration Not Taking Effect
Runtime:Unable to Select Models in Interface Designer
Runtime:Troubleshooting "No Permission" Errors in Navigation Actions
Runtime:Context Parameters Configured but Values Not Passed to Redirected Page
AI Coding Practical Combat
Best Practices of AI Coding When Oinone Meets Trae (Backend)
Best Practices of AI Coding When Oinone Meets Qoder (Backend)
User Manual
Designer
Model Designer
Model
Data Dictionary
Data Coding
UI Designer
View Management
View Type
View Design
Widgets And Model Overview
Components
Layout
Fields
Media
Actions
Customized Components
Customized Component Management
Meta of Customized Component
Design of Customized Component Meta
Application Menu
Print Template Management
Print Template Design
Workflow Designer
Workflow Management
Workflow Design
Node Actions
Data Visualization
Chart Management
Chart Types
Chart Design
Reports
Data Dashboard Management
Data Dashboard Design
Chart Template
Integrated Designer
Workbench
Connector
Data Workflow
Workflow Logs
Open Platform
MCP
Business Domain
Api Logs
Microflow Designer
Microflow Management
Microflow Design
AI Integrated Designer
Connector
AI Workflow
Api Logs
Expressions Guide
Standard Modules
Workbench
Profile
Preferences
Administration Center
Users
Partners
Organization
Role and Permission
Workflow
Workflow
Workflow Management
Message
Business Audit
Files
Resources
Translation
Integration App
Apps Hub
Apps ENV
Low-Code No-Code Integration
Contribution Manual
CLA
R&D Contribution
Git Guidelines
Coding Guidelines
Documentation Contribution
Content Guidelines
Third-Party Open-Source Software and License Notice
Software Licenses and Agreements
  1. Home/
  2. Dev Manual/
  3. Reference Guide/
  4. User interface/
  5. View architectures/
  6. Gallery
On this page

I. View Characteristics ​

  • View Type: Gallery (GALLERY)
  • Data Type: List
  • DSL Characteristics: Supports layout functionality.
  • General Behaviors of Data Structure:
    • Query Behaviors: Pagination, sorting, searching.
    • Interaction Behaviors: Single selection, multiple selections.
  • Common Interfaces: (Default data manager functions)
    • queryPage: Supports query functions such as pagination, sorting, and searching.
    • create: Inline editing for creation. (When pk is null)
    • update: Inline editing for updates. (When pk is not null)
    • delete: Delete operation.

II. DSL Structure ​

A simplified version of the view can be written as follows: ("Simplified" means each tag has fewer attributes, not fewer nodes.)

xml
<view type="GALLERY" model="demo.DemoModel" name="demo_gallery_view">
	<template slot="searchFields">
		<field data="code" />
		<field data="name" />
	</template>
	<template slot="actions">
		<action name="redirectCreatePage" label="Create" />
		<action name="delete" label="Delete" />
	</template>
	<template slot="gallery">
    <field data="id" invisible="true" />
		<template slot="card">
			<template slot="title">
				<field data="name" labelInvisible="true" justifyContent="center" />
			</template>
			<template slot="content">
				<field data="code" />
			</template>
			<template slot="rowActions">
				<action name="redirectUpdatePage" label="Edit" />
				<action name="redirectDetailPage" label="Detail" />
			</template>
		</template>
	</template>
</view>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Overall, the gallery view is similar to the table view, while the content in the title and content slots supports layout functionality.

The gallery view has a DSL structure designed based on view characteristics. It possesses the features of a List data structure and also supports layout functionality in the local cards.

In terms of component division of labor:

  • The Gallery component is used to render Card components in a loop, enabling each Card component to have an independent dataset and the ability to render a single piece of data.
  • Each Card component is divided into three parts: title area, content area, and action area, which are used to display business data and action behaviors.

III. Default Field Components ​

In the above DSL, we did not specify the widget attribute. In this case, the Widget framework will retrieve the corresponding default component based on the field metadata attributes. The following table lists all default components currently used in the gallery view:

Field TypeMulti-valueDefault ComponentTypeScript Class
Text (STRING)NoText (Input)GalleryStringFieldWidget
YesTag (Tag)GalleryStringTagFieldWidget
Multi-line Text (TEXT)NoMulti-line Text (TextArea)GalleryCommonFieldWidget
Rich Text (HTML)NoRich Text (RichText)GalleryHtmlFieldWidget
Phone (PHONE)NoPhone (Phone)GalleryStringFieldWidget
Email (EMAIL)NoEmail (Email)GalleryStringFieldWidget
Integer (INTEGER)NoInteger (Integer)GalleryNumberWidget
YesTag (Tag)GalleryStringTagFieldWidget
Float (FLOAT)NoNumber (Float)GalleryNumberWidget
Money (MONEY)NoCurrency (Currency)GalleryNumberWidget
Boolean (BOOLEAN)NoText (Yes/No)GalleryBooleanFieldWidget
Enumeration (ENUM)NoTag (Tag)GalleryEnumFieldWidget
YesTag (Tag)GalleryEnumMultiFieldWidget
Date Time (DATETIME)NoDate Time (DateTimePicker)GalleryDateTimeFieldWidget
Date (DATE)NoDate (DatePicker)GalleryDateFieldWidget
Time (TIME)NoTime (TimePicker)GalleryTimeFieldWidget
Year (YEAR)NoYear (YearPicker)GalleryYearFieldWidget
Key-Value Pair (MAP)NoKey-Value Pair (Map)GalleryMapFieldWidget
Many-to-One (M2O)NoDropdown Single-select (Select)GalleryM2OSelectFieldWidget
One-to-Many (O2M)YesDropdown Multi-select (Select)GalleryO2MSelectFieldWidget
Many-to-Many (M2M)YesDropdown Multi-select (Select)GalleryM2MSelectFieldWidget

IV. Optional Field Components ​

For each field type, in addition to the corresponding default components mentioned above, there are other components that can be used by specifying the widget attribute. The following table lists all existing field components in the gallery view:

Field TypeMulti-valueDefault ComponentTypeScript Class
Text (STRING)NoColor (ColorPicker)GalleryStringColorPickerFieldWidget
File (Upload)GalleryStringUploadFieldWidget
Image (UploadImg)GalleryStringUploadImgFieldWidget
Embedded Webpage (Iframe)GalleryStringIframeFieldWidget
Hyperlink (Hyperlinks)GalleryStringHyperlinksFieldWidget
File Download (Download)?
Media Player (MediaPlayer)GalleryStringMediaPlayerWidget
YesFile (Upload)GalleryStringUploadFieldWidget
Image (UploadImg)GalleryStringUploadImgFieldWidget
Multi-line Text (TEXT)NoHandwritten Signature (Signature)?
Drag-and-Drop Upload (UploadDraggable)?
File (Upload)GalleryStringUploadFieldWidget
Image (UploadImg)GalleryStringUploadImgFieldWidget
File Download (Download)?
Boolean (BOOLEAN)NoDropdown Single-select (Select)?
Radio Button (Radio)?
Checkbox (Checkbox)?
Many-to-One (M2O)NoRadio Button (Radio)?
Drag-and-Drop Upload (UploadDraggable)FormM2OUploadDraggableFieldWidget
File (Upload)FormM2OUploadFieldWidget
Image (UploadImg)?
One-to-Many (O2M)YesCheckbox (Checkbox)?
Drag-and-Drop Upload (UploadDraggable)FormO2MUploadDraggableFieldWidget
File (Upload)FormO2MUploadFieldWidget
Image (UploadImg)?
Many-to-Many (M2M)YesDrag-and-Drop Upload (UploadDraggable)FormM2MUploadDraggableFieldWidget
File (Upload)FormM2MUploadFieldWidget
Image (UploadImg)?

V. DSL Property Configuration ​

(I) Gallery Property Configuration ​

xml
<element widget="Gallery">
    ......
</element>
1
2
3
  • cols: Number of cards per row (number)
  • gutter: Spacing between cards (gutter)

(II) Card Property Configuration ​

xml
<element widget="Card">
    ......
</element>
1
2
3
  • width: Width (number | string)
  • minWidth: Minimum width (number | string)
  • maxWidth: Maximum width (number | string)
  • height: Height (number | string)
  • minHeight: Minimum height (number | string)
  • maxHeight: Maximum height (number | string)
  • allowClick: Whether the card allows clicking (requires configuring the action in the click slot) (boolean)
  • inlineActiveCount: Number of actions displayed in the bottom action area (number)

(III) Common Field Configuration ​

  • justifyContent: Horizontal alignment (FlexRowJustify)
  • emptyStyle: Empty value style (string | 'hyphen' | 'empty' | 'null')

Note

Properties marked with "" are not completely universal. They depend on specific component implementations. If the component's interaction does not support or implement these properties, the configuration may be ineffective.

(IV) Field Component Property Configuration ​

1. String (STRING) ​

GalleryStringFieldWidget ​

xml
<field data="stringField" />
1
  • type: Input type ('text' | 'password' | expression)
  • prefix: Prefix text (string | icon)
  • prefixType: Prefix type ('TEXT' | 'ICON')
  • prefixStore: Whether to store the prefix (boolean)
  • suffix: Suffix text (string | icon)
  • suffixType: Suffix type ('TEXT' | 'ICON')
  • suffixStore: Whether to store the suffix (boolean)
  • crypto: Encrypted storage (boolean)

GalleryStringColorPickerFieldWidget ​

xml
<field data="stringField" widget="ColorPicker" />
1

GalleryStringUploadFieldWidget ​

xml
<field data="stringField" widget="Upload" />
1
  • cdnKey: Specify the upload CDN key (used with backend OSS configuration) (string)
  • privateLink: Use backend for file upload/download (used when OSS direct upload from the client is unavailable) (boolean)

GalleryStringUploadImgFieldWidget ​

xml
<field data="stringField" widget="UploadImg" />
1

GalleryStringIframeFieldWidget ​

xml
<field data="stringField" widget="Iframe" />
1
  • crypto: Encrypted storage (boolean)

GalleryStringHyperlinksFieldWidget ​

xml
<field data="stringField" widget="Hyperlinks" />
1
  • target: Link opening method ('OPEN_WINDOW' | 'ROUTER')
  • text: Link display text (string)

GalleryStringMediaPlayerWidget ​

xml
<field data="stringField" widget="MediaPlayer" />
1

GalleryStringTagFieldWidget ​

xml
<field data="stringMultiField" />
1

2. Multi-line Text (TEXT) ​

GalleryCommonFieldWidget ​

xml
<field data="textField" />
1

3. Rich Text (HTML) ​

GalleryHtmlFieldWidget ​

xml
<field data="htmlField" />
1
  • showHeight: Display height (number | string)

4. Integer (INTEGER) ​

GalleryNumberWidget ​

xml
<field data="integerField" />
1
  • prefix: Prefix text (string | icon)
  • prefixType: Prefix type ('TEXT' | 'ICON')
  • prefixStore: Whether to store the prefix (boolean)
  • suffix: Suffix text (string | icon)
  • suffixType: Suffix type ('TEXT' | 'ICON')
  • suffixStore: Whether to store the suffix (boolean)
  • unit: Unit (string | expression)
  • showThousandth: Whether to display thousandths (boolean | expression)

5. Boolean (BOOLEAN) ​

GalleryBooleanFieldWidget ​

xml
<field data="booleanField" />
1

6. Enum (ENUM) ​

GalleryEnumFieldWidget ​

xml
<field data="enumField" />
1

GalleryEnumMultiFieldWidget ​

xml
<field data="enumMultiField" />
1

7. Date-Time (DATETIME) ​

GalleryDateTimeFieldWidget ​

xml
<field data="datetimeField" />
1
  • format: Date-time formatting text (string)

8. Date (DATE) ​

GalleryDateFieldWidget ​

xml
<field data="dateField" />
1
  • format: Date formatting text (string)

9. Time (TIME) ​

GalleryTimeFieldWidget ​

xml
<field data="timeField" />
1
  • format: Time formatting text (string)

10. Year (YEAR) ​

GalleryYearFieldWidget ​

xml
<field data="yearField" />
1
  • format: Year formatting text (string)

11. Key-Value Pair (MAP) ​

GalleryMapFieldWidget ​

xml
<field data="mapField" />
1

12. Many-to-One (M2O) ​

GalleryM2OSelectFieldWidget ​

xml
<field data="m2oField" />
1
  • optionLabel: Option title (expression)

13. One-to-Many (O2M) ​

GalleryO2MSelectFieldWidget ​

xml
<field data="o2mField" />
1
  • optionLabel: Option title (expression)

14. Many-to-Many (M2M) ​

GalleryM2MSelectFieldWidget ​

xml
<field data="m2mField" />
1
  • optionLabel: Option title (expression)
Pager
Previous pageDetail
Next pageTree
On this page