Just the other day, a new fourth version of the free open platform lsFusion was released. In this article I will try to briefly tell you about the main new features of this version and illustrate them as much as possible with gif-pictures and examples (at least for those who do not like to read a lot of text). Also, many of these features can be tried online on the official website or, for example, in a demo version of one of the solutions on lsFusion.
lsFusion ( ). , ( , ).
, ( ), ( ) β UI .
, , . . , , ( ). MyCompany. ( , , ), , . , , , , .
, , .
. : . , , β , , , , - , , .
, , . , frontend ( javascript HTML). , , ( Java Swing RCP) . . . , , , - ( http-). - lsFusion OLTP-, , . - , lsFusion -.
, lsFusion ( , , ) , , (BI) ( , BI- ). , , , , .
Note that at the physical level, the grouping operation in grouping views can be performed on both the database server and the client. The platform manages this choice automatically: if the number of groups decreases, or the amount of initial data is less than the threshold, then the data is processed on the client (to exclude unnecessary calls to the server). In most other cases, the grouping is performed on the SQL server using a query (however, subtotals are still calculated on the client).
Grouping can be changed by the user using the appropriate drag-drop interface. The developer can define groupings using the appropriate syntax in the FORM statement.
FORM myReport
|
Pivot table
. , :
- . , β --, .
- . , .
, , , , Excel . :
- ( ), ( drag-drop ). , ( , ).
- Excel , , /
(drill-down) β , , , , , .
, , , (, ), . - , .
, .
/ :
- ( / , / )
. open-source plotly, ( ). , ( , , , ), .
img-, ( / ) . , , , , , .
, ( -) , . , time-tracking, ..
lsFusion :
-
- / .
- , , ..
- ,
- ( ), ( ).
-
- .
- ( ).
, , . :
-
- longitude β
- latitude β
- polygon β
- line β
- icon β
- ..
-
- date, dateTime β /
- dateFrom, dateTimeFrom β /
- dateTo, dateTimeTo β /
- name β
- ..
FORM map 'Map'
|
Custom views
Whatever views are supported out of the box in lsFusion, they may not always be enough (well, or there may not be enough settings in existing views). To solve the problem in the general case, the platform supports the so-called custom views.
There are two parts to supporting these views:
- javascript css web-. , web ( ) , -, , web-. , , , , .
- . javascript-, ( window , javascript function window, ). :
- element β DOM,
- objects β javascript-, ( = , = )
- controller β javascript-, / (, , ).
.
function calendar(element, objects, controller) {
if(controller.calendar == null) { // lazy initialization
controller.calendar = new FullCalendar.Calendar(element, {
height: 'parent',
editable: true,
eventChange: function(info) {
controller.changeDateProperty('date', controller.objects[info.event.extendedProps.index], info.event.start.getFullYear(),
info.event.start.getMonth() + 1,info.event.start.getUTCDate() + 1); // month and day are zero-based in full calendar
},
eventClick: function(info) {
controller.changeSimpleGroupObject(controller.objects[info.event.extendedProps.index], false, info.el);
}
});
setTimeout(function () {
controller.calendar.render();
}, 0);
}
controller.objects = objects; // need to save it to work with changes
controller.calendar.setOption('events', objects.map((obj, index) =>
Object.assign({}, obj, {
index: index, // needed to work with changes
classNames: controller.isCurrent(obj) ? 'event-highlight' : '' // highlighting current element
})));
}
.event-highlight {
border-color: #2C4751;
background-color: #2C4751;
}
(web) ( js css, web, -, ).
, e:
CLASS Event;
|
lsFusion , Flatlaf, , , , Intellij. - Flatlaf , - «» . lsFusion :
- ( ) β -
- β -
«» . , , / ( ). , lsFusion , , , - ( ). (, ).
OAuth
«»: , , , . :
- - ( ). , .
- .
( ) OAuth . , (, lsFusion) / . / , / (, β ). Β« Β» lsFusion / : Facebook, Google, Github, . (Authorization URI, Token URI ..). , ( OAuth , , , ).
lsFusion β «» Β« Β». «» -. Β« Β» (, ).
, ( «», OAuth-) « ». , « ». , , , , .
url user password ( http://myserver?user=X&password=Y
). , , , , VPN.
lsFusion :
- ( ,
'Some text {x.y}'
). - - :
- ( ),
- .
, , . :
- / .
- ( ).
Β« Β». :
- , , .
- , , , .
- , ( ).
, , :
- , ;
- Β« Β», .
:
- , ;
- .
:
- .
- , , Google Translate. , . , .
- , .
- PROFIT
, , , - lsFusion. / : guestuk / guestuk ( ), guestbe / guestbe ( ).
lsFusion, , , . :
- CTRL ( Excel). , (
EDIT_OBJECT
) . - Β« Β» .
- ( ) Β« Β».
- (
CHANGE
, , )
, .
. , .
Β« Β»
lsFusion ( ), ( ) . :
- .
- , .
. N+1, , , .
onChange(a);
|
, f(a,b) :
DIALOG formX OBJECTS x = f(a,b) CHANGE; // formX, f(a,b) x
|
REQUEST
|
PUSH REQUEST
|
PUSH REQUEST
|
, (, , ).
( , ) β . , . , :
DESIGN order {
|
, . (, width pattern) ( )
:
- .
- , .
, , , . , , . , lsFusion . , ( ). , .
lsFusion Β« Β» β (, , , ..). , , , , , , , , ( ). / ( , ).
, , , «». .
, ( ), / - .
http-
, . , - 2 :
- . javascript, , , css html ( ) .
- «» . , / , .
( Chrome V8 ), , , . , , β , http-. http- , .
Now, back to lsFusion. To work with external systems, including the http-protocol, the platform uses the EXTERNAL operator. True, the peculiarity of this operator is that in the third version it could only be executed on the server, which means that it was impossible to use it for the same work with equipment on the client. Accordingly, in the fourth version of the platform for the HTTP protocol, it became possible to execute the EXTERNAL operator on the client. Syntactically, it looks like this:
reportX(Pos p) {
|
, . , , , . , , , . , β «» ( OBJECTS) / . , , β FILTERS :
exportAndShowIncomes (Supplier s) {
|
DOM optimization
, lsFusion -, - . , (- ), Swing ( , / ), / HTML DOM. , . , . , :
- ββ -.
- - .
β . , lsFusion- ( -), . - ( lsFusion), DOM . , - MyCompany ( ). , , ( , / , ).
( github). , (UX) developer experience (DX), . ( -) , .
MyCompany. (, custom-made ), , . -, ERP-, / «» . MyCompany. SME ( ERP ), ( , , Apache 2.0 ). WMS, , , WMS - ( lsFusion), - ( -).