Skip to content

Editor User Manual

Document VersionContent RevisionReviserRevision Date
V1.0Official ReleaseWang Yao, Gao Guanghui2020-12-10
V1.1Added descriptions for new featuresWang Yao2021-01-23
v1.2Added example of using scripts to initiate network requestsWang Yao2021-03-08
v1.3Updated basic process document and supplemented new features of the event systemWang Yao2021-08-08
v1.4Added font descriptionWang Yao2023-04-20
v1.5Updated document content and added variable descriptionsWang Yao2024-01-17
v1.6Updated document contentWang Jiale2024-09-11
v1.7Updated document contentGuochenghao2024-09-20

This manual is for the usage of the editor. For deployment processes, please refer to the Deployment Manual.

Homepage Introduction

Create Project

image-20240117150444469

edit_project_create.png

Import Project

image-20240117150444469

Edit Project Information

image-20240117150444469

edit_project_name.png

Delete Project

image-20240117150444469

Run Project

edit_project_run1.png

Enter Editor

image-20240117150444469

img_002

A project is a basic container, a collection of several pages and functions. Each project can be considered as an App.

1. Project Menu

In the top navigation bar, you can view all projects, switch between editing projects, and create or delete projects.

img_013

2. Project Menu Functions

In the menu entries, different operation methods correspond to different functions, as shown in the figure below.

img_016

3. Import and Export Project

Projects support offline backups and data sharing through the export function, and loading backups or shared data through the import function.

img_017

The exported file format is .sccs, short for SANSI CENTER CONTROL SYSTEM.

The exported file is stored in the user's download directory, with the naming format: ProjectName_v1.0.3_20210101081500.sccs.

It is recommended to use the export function to back up the project to external devices after editing the project. In case of data loss due to hardware damage, the backup can be restored.

4. Project Run Entry

After editing the project, click the 【Run】 button in the upper right corner to run the project.

edit_project_run.png

Pages

All the content displayed during running is based on pages, which are similar to web pages or mobile application pages. However, in this system, the content displayed and the corresponding functions on the pages can be edited and adjusted.

1. Create New Page

Multiple pages can be created in a project, allowing you to create a brand new blank page.

img_004

2. Page Entries

When multiple pages are created, multiple page entries will exist simultaneously as shown below.

  • The light blue background indicates the currently selected entry, meaning that the current editing area displays this page.
  • Clicking on the page entry will switch to that page.
  • The first page is the homepage when entering the application by default.
  • You can drag and drop page entries by clicking and holding the entry with the left mouse button to reorder them.

img_018

3. Page Entry Menu

Right-clicking on the page entry will expand a menu that provides additional page operation functions.

  • Copy Page: Copies the current page to this project.
  • Cut: Copies the page to the clipboard for later pasting.
  • Paste Page: Pastes the page data from the clipboard into the current project.
  • Rename: Renames the current page.
  • Save as Template: Saves the current page as a template.
  • Delete: Removes the current page from the project.

img_019

Elements

All content added to the page is referred to as elements (or components). Different elements have different functions and roles. In this platform, there are:

1. Add Elements

All elements are found in the element panel, which can be added to the page by selecting and dragging. There are currently 9 basic elements and multiple custom elements. For details on elements, please refer to Appendix: Appendix Three: Basic Elements.

img_005

2. Element List

The following shows how the 9 basic elements look when added to the page. When an element is added to the page, it will be displayed in the left-side element list (highlighted in the lower left corner). The list displays in order. If there are hierarchical relationships or overlapping elements, you can try adjusting the sorting method to resolve the issue.

img_020

3. Element List Menu

Right-clicking on an entry in the element list will expand an operation menu, allowing you to perform basic operations like sorting, renaming, and deleting elements.

Note that the element name is its unique ID, which is very important in element operations.

img_021

4. Element Menu

Right-clicking directly on an element or selecting an element and right-clicking will expand that element’s menu. This menu, in addition to the sorting function in the list menu, also provides options for cutting, copying, and pasting.

Elements can be cut (copied) after being selected. The cut (copied) elements support pasting across pages and projects. You can also paste elements in an empty area of the editing area via the right-click menu.

img_022

5. Multiple Element Selection

By pressing the left mouse button and dragging over the editing area, you will create a selection area. Elements within the selection area will be selected, and a red dotted box will appear around the selected elements. The selected elements will also be displayed in light blue in the element list as shown in the below image.

When multiple elements are selected at the same time, these selected elements will temporarily be called an element group, and you can perform alignment operations on this group.
The currently supported alignment methods include:
Left Align, Center Align Horizontally, Right Align, Distribute Horizontally, Align Top, Center Align Vertically, Align Bottom, Distribute Vertically.

img_023

6. Multiple Element Selection Menu

The multiple element selection menu is similar to the single selection menu. After selecting multiple elements, right-click to expand the menu. However, unlike the single selection element menu, it also includes an alignment option, allowing for quick alignment of multiple elements.

img_24

7. Undo and Redo

All edited content on the page, including but not limited to adding elements, deleting elements, moving elements, changing styles, adding events, and adding constraints, will be recorded. Currently, a maximum of 50 operations can be recorded on a page. You can undo to a previous recorded state or redo to restore the effect of an undo.

When buttons can execute operations, they are displayed in black; when unable to operate, they appear in gray.

img_25

Properties

Each element has its own property information, which can be adjusted to change its display state, including but not limited to the element's size, position, color, etc.

As shown in the figure, this is the property panel for a button element. The properties that different elements can adjust vary, which may be dynamically adjusted according to the software version. Thus, refer to the software's actual running results for specific adjustable information.

img_006

Events

The display effects of elements can be configured through properties, but to give functions to elements, such as: closing the screen by clicking, events need to be configured for the elements. Note that each element can add multiple events.

As shown in the figure, this illustrates the process of adding a new event:

img_007

Event Permissions

You can use the event permission selection box to add control over permissions for event execution. By default, all users can execute it; you can choose to limit it to administrators or specify a specific user.

Note:When specifying a particular user, remember to remove the permissions for all users.

img_0271

Double Confirmation

For critical events, such as shutting down screens or systems, you can configure double confirmation to prevent accidental triggers.

img_0272

Serial and Parallel

Assuming the following event sequence:

  • HTTP (Serial)
  • TCP1 (Serial)
  • TCP2 (Parallel)
  • TCP3 (Serial)
  • TCP4 (Parallel)

The actual running sequence is as follows:

HTTP -> TCP1 TCP2 -> TCP3 TCP4

Each parallel serves as a starting point. The sequencing allows for adjustments to the combination of parallel and serial strategies.

Implementation Principle

  1. When triggering an event, all events are traversed to obtain the events that should be triggered.
  2. Events in the event list are grouped based on their serial and parallel information, regrouping whenever a parallel is encountered.
  3. Events in each group are executed serially, with groups executing in parallel.

img_0273

Delayed Trigger

Events can be set with a delayed trigger time, measured in milliseconds (ms); 1 second = 1000 milliseconds. For example, to trigger after a delay of 2 seconds, input 2000.

img_0274

Trigger Method

The event trigger method defines the conditions under which the event will be executed. All elements share common trigger types: 【When the Element Loads】 and 【When the Element is Removed】. In addition to these, different elements will have extra trigger types; for example, clickable elements will have 【Click】, sliders and date pickers will have 【Value Change】, and lists will have 【Item Clicked】. The existing trigger methods are as follows:

Trigger MethodSummary
When the Element LoadsCalled when the element is loaded and displayed on the page.
When the Element is RemovedCalled when the element is removed from the page.
ClickCalled when the element is clicked.
Value ChangeCalled when the element's value changes.
Item ClickedCalled when a sub-item of the element is clicked.

Event triggers can be adjusted based on trigger methods, as shown in the figure below:

img_028

Event Types

Currently, there are five types of events, executing different operations based on different types.

Event TypeSummary
Jump to PageJump from one page in the project to another.
HTTP CommunicationSend an HTTP request.
TCP CommunicationSend a TCP request, requiring Transfer to forward it.
UDP CommunicationSend a UDP request, requiring Transfer to forward it.
Serial CommunicationSend a serial request, requiring Transfer to forward it.
Execute ScriptExecute a script.

Events are roughly divided into three categories: the first category is to jump to a page, the second is to perform communication, and the third is to execute scripts.

Executing scripts is a special type of event that can also perform the first two categories of events. The functionality supported by executing scripts is the most extensive, but it requires some programming knowledge; familiarity with JavaScript is preferred.

img_029

1 Jump to Page

Jumping to a page allows you to select a page within this project or return to the previous page.

img_030

2 Communication

Supported communication methods include HTTP, TCP, UDP, and Serial, where HTTP communication involves direct communication between the client and the HTTP service. TCP, UDP, and Serial communication require the use of Transfer to facilitate communication, as browsers lack the ability to issue this type of communication directly.

As shown in the figure, the parameters to be configured for different communication methods can be seen. All communication methods include a 【Pre-processing (Script)】 and a 【Result Processing (Script)】, which can be used to process data before and after communication and to update the state of elements on the current page.

img_031

3 Script

Scripts here use JavaScript syntax, allowing users to define functional logic.

img_008

Variables

Variable Entry

Variables, fully named environment variables, can be used to provide global data for components within the project.

Typically used for storing some fixed public variables, such as the IP address of a service, facilitating unified modifications later.

⚠️Note: Generally, the content of this variable cannot be modified during the running phase. If you need dynamically modifiable data, please do so through interface methods.

image-20240117140258473

You can adjust variables through editing functions.

image-20240117140550798

Add Variable

After setting the key and value as shown in the figure, click save to store the variable.

image-20240117140720493

Variable Usage

1. Button and Text Display Content Reference Variable

Built-in text and button components support referencing variables, but most plugin components may not support this reference.

Usage is as follows, referencing a variable with two curly braces and its name, allowing for mixing with normal text.

shell
Text Content {{env.variable_key}}

image-20240117141851334

2. Event Reference

When adding events, you can reference service addresses from variables this way.

image-20240117142608672

3. Script Reference

If you need to use scripts, you can use related variables within the script in the script editor.

image-20240117145302191

In scripts, there is no need to use curly braces; simply use env.variable_key.

image-20240117145714698

After running, the effect is shown as follows:

image-20240117150159748

Font Functionality

In versions 2.2.0 and above, font functionality is supported. The program will default to include some fonts at release, and it can also use the operating system's fonts. Font functionality is available for use in both projects and components.

1. Project Font

Project fonts can be set through project settings, supporting the setting of Western and Chinese fonts.

project-font-set

2. Component Font

Component fonts are similar to project fonts and can also set Western and Chinese fonts.

element-font-set

3. Notes

  1. By default, only setting the Chinese font is sufficient; there is no need to set the Western font separately.
  2. If the Western font is set to include a font format that includes Chinese, it will overwrite the Chinese format.
  3. System fonts are limited to those supported by the operating system; to use on another operating system, the same fonts need to be installed.
  4. Project fonts are stored in the /lib/fonts directory under the installation directory. If you want to add fonts, you can copy the .ttf format files to this directory and then restart the service.
  5. Many fonts have both Chinese and English font families, such as 微软雅黑 and Microsoft YaHei, which are equivalent.
  6. If system fonts are set but have no effect when accessed on other devices, please check whether the font has been installed on the accessing device or use project fonts instead.

Appendix One: Shortcuts

ShortcutFunction
Ctrl + ASelect all elements on the current page
Ctrl + XCut selected elements
Ctrl + CCopy selected elements
Ctrl + VPaste selected elements
Ctrl + DDelete currently selected elements
Backspace/DeleteDelete currently selected elements
Arrow keys (Up, Down, Left, Right)Move currently selected elements
Ctrl + ZUndo
Ctrl + Shift + ZRedo

Appendix Two: Common Script Examples

1. Output Debug Information

js
console.log('Hello')

2. Get Element Properties

js
// Get self text property
let text1 = self.text
// Set self element text property
self.text = "替换文本"

// Get other element's text property
let text2 = that['text[0]'].text
//  Set other element's text property
that['text[0]'].text = "替换文本"

Different elements have different exposed properties; please refer to Appendix Four for details on dynamically adjustable properties.

3. Popup Notification

js
that.toast.show('Hello')
that.toast.show('Hello', 'info')
that.toast.show('Hello', 'success')
that.toast.show('Hello', 'warning')
that.toast.show('Hello', 'error')

4. Show Confirmation Popup

js
that.toast.confirm('Please Confirm').then(data => {
  // User clicked confirm
}).catch(err => {
  // User clicked cancel 
})

5. Sending Network Requests

js
axios.get('/sansi/ccs/api/v1/project/projects').then(res => {
  console.log('res =', res)
  if(res.status  === 200) {
    that.toast.show('Current project count '+res.data.data.length, 'info')
  } else {
    that.toast.show('Error: '+res.message, 'error')
  }
}).catch(err => {
  that.toast.show('Error: '+err.message, 'error')
})

For more usage methods of Axios, please refer to the axios Chinese documentation.

6. Script Parameters

ParameterSummary
paramsAll parameter data for the current script
selfRefers to the element that triggered the event
thatRefers to the VueComponent
routerRouting
axiosNetwork request interface

Appendix Three: Basic Elements

Element NameFunction
ButtonProvides a clickable area to trigger related events.
ImageUsed to display images.
TextUsed to display text.
SliderUsed to adjust data through sliding, like screen brightness.
Progress BarUsed to display progress information.
RectangleUsed to mark a specific area.
SVGUsed to display SVG images.
ListUsed to display list information.
Time PickerUsed to provide time selection.

Appendix Four: Dynamically Adjustable Properties of Elements

1. Common Properties

PropertyTypeFunctionParameter Example
disabledbooleanWhether it is disabledtrue, false
visiblebooleanWhether it is visibletrue, false

2. Button

PropertyTypeFunctionParameter Example
normalImageUrlurlDefault Image/api/v1/assets/image/btn_0_n.png
selectedImageUrlurlSelected Image/api/v1/assets/image/btn_0_s.png
activedImageUrlurlActive Image/api/v1/assets/image/btn_0_a.png
disabledImageUrlurlDisabled Image/api/v1/assets/image/btn_0_d.png
textStringDisplay TextButton, 按钮
backgroundColorcolorBackground Color#ffffff, #ccffffff
selectedbooleanSelectedtrue, false

3. Text

PropertyTypeFunctionParameter Example
textStringDisplay TextButton, 按钮
textColorcolorText Color#ffffff, #ccffffff
backgroundColorcolorBackground Color#ffffff, #ccffffff

4. Image

PropertyTypeFunctionParameter Example
urlurlImage/api/v1/assets/image/img.png
backgroundColorcolorBackground Color#ffffff, #ccffffff

5. Rect

PropertyTypeFunctionParameter Example
backgroundColorcolorBackground Color#ffffff, #ccffffff

6. Slider

PropertyTypeFunctionParameter Example
valuenumberCurrent Value0, 50

7. Progress

PropertyTypeFunctionParameter Example
valuenumberCurrent Value0, 50

8. List

PropertyTypeFunctionParameter Example
dataarrayCurrent List Array["Item 1", "Item 2"]
clickedIndex (read-only)numberCurrently Clicked Item Index1
clickedData (read-only)StringCurrently Clicked Item Content"Item 1"
backgroundColorcolorBackground Color#ffffff, #ccffffff

9. TimePicker

PropertyTypeFunctionParameter Example
valuedateCurrently Selected Time11:17:56

10.SVG

PropertyTypeFunctionParameter Example
backgroundImageurlBackground Image/api/v1/assets/image/bg.png
backgroundColorcolorBackground Color#ffffff, #ccffffff