Justo el otro día, se lanzó una nueva cuarta versión de la plataforma abierta gratuita lsFusion. En este artículo intentaré contarte brevemente las principales novedades de esta versión e ilustrarlas tanto como sea posible con imágenes gif y ejemplos (al menos para aquellos a los que no les gusta leer mucho texto). Además, muchas de estas funciones se pueden probar en línea en el sitio web oficial o, por ejemplo, en una versión de demostración de una de las soluciones de lsFusion.
lsFusion ( ). , ( , ).
, ( ), ( ) — UI .
, , . . , , ( ). MyCompany. ( , , ), , . , , , , .
, , .
. : . , , — , , , , - , , .
, , . , frontend ( javascript HTML). , , ( Java Swing RCP) . . . , , , - ( http-). - lsFusion OLTP-, , . - , lsFusion -.
, lsFusion ( , , ) , , (BI) ( , BI- ). , , , , .
Tenga en cuenta que, a nivel físico, la operación de agrupación en vistas de agrupación se puede realizar tanto en el servidor de base de datos como en el cliente. La plataforma gestiona esta elección automáticamente: si el número de grupos disminuye o la cantidad de datos iniciales es menor que el umbral, entonces los datos se procesan en el cliente (para excluir llamadas innecesarias al servidor). En la mayoría de los otros casos, la agrupación se realiza en el servidor SQL mediante una consulta (sin embargo, los subtotales aún se calculan en el cliente).
El usuario puede cambiar la agrupación mediante la correspondiente interfaz de arrastrar y soltar. El desarrollador puede definir agrupaciones utilizando la sintaxis adecuada en la declaración FORM.
FORM myReport
|
Tabla dinámica
. , :
- . , — --, .
- . , .
, , , , 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'
|
Vistas personalizadas
Independientemente de las vistas que se admitan desde el primer momento en lsFusion, es posible que no siempre sean suficientes (o que la configuración de las vistas existentes sea insuficiente). Para resolver el problema en el caso general, la plataforma admite las llamadas vistas personalizadas.
Hay dos partes para respaldar estas opiniones:
- 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- , .
Ahora, volvamos a lsFusion. Para trabajar con sistemas externos, incluido el protocolo http, la plataforma utiliza el operador EXTERNAL. Es cierto que la peculiaridad de este operador es que en la tercera versión solo se podía ejecutar en el servidor, lo que significa que era imposible utilizarlo para el mismo trabajo con equipos en el cliente. En consecuencia, en la cuarta versión de la plataforma para el protocolo HTTP, fue posible ejecutar el operador EXTERNO en el cliente. Sintácticamente, se ve así:
reportX(Pos p) {
|
, . , , , . , , , . , — «» ( OBJECTS) / . , , — FILTERS :
exportAndShowIncomes (Supplier s) {
|
Optimización DOM
, 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), - ( -).