Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions dist/compressed/static/be5-react.min.js

Large diffs are not rendered by default.

51 changes: 41 additions & 10 deletions dist/lib/be5-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,8 @@ var ROLE_SYSTEM_DEVELOPER = "SystemDeveloper";
var ROLE_GUEST = "Guest";

var OPEN_DEFAULT_ROUTE = 'OPEN_DEFAULT_ROUTE';
var OPEN_NEW_WINDOW = 'OPEN_NEW_WINDOW';
var GO_BACK = 'GO_BACK';

var UPDATE_PARENT_DOCUMENT = 'UPDATE_PARENT_DOCUMENT';

Expand All @@ -867,6 +869,8 @@ var constants = Object.freeze({
ROLE_SYSTEM_DEVELOPER: ROLE_SYSTEM_DEVELOPER,
ROLE_GUEST: ROLE_GUEST,
OPEN_DEFAULT_ROUTE: OPEN_DEFAULT_ROUTE,
OPEN_NEW_WINDOW: OPEN_NEW_WINDOW,
GO_BACK: GO_BACK,
UPDATE_PARENT_DOCUMENT: UPDATE_PARENT_DOCUMENT
});

Expand Down Expand Up @@ -942,16 +946,19 @@ var forms = {
switch (attributes.status) {
case 'redirect':
bus.fire("alert", { msg: json.data.attributes.message || be5.messages.successfullyCompleted, type: 'success' });
if (attributes.details.startsWith("http://") || attributes.details.startsWith("https://") || attributes.details.startsWith("ftp://")) {
window.location.href = attributes.details;

var url = attributes.details;

if (url.startsWith("http://") || url.startsWith("https://") || url.startsWith("ftp://")) {
window.location.href = url;
} else {
if (documentName === be5.MAIN_DOCUMENT) {
be5.url.set(attributes.details);
be5.url.set(url);
} else {
if (be5.url.parse(attributes.details).positional[0] === 'form') {
this.load(this.getOperationParams(attributes.details, {}), frontendParams);
if (be5.url.parse(url).positional[0] === 'form') {
this.load(this.getOperationParams(url, {}), frontendParams);
} else {
be5.url.process(documentName, '#!' + attributes.details);
be5.url.process(documentName, '#!' + url);
}
}
}
Expand Down Expand Up @@ -994,25 +1001,49 @@ var forms = {
},


executeActions: function executeActions(actions, json, frontendParams, applyParams) {
Preconditions.passed((typeof actions === 'undefined' ? 'undefined' : _typeof(actions)) === 'object', "actions must be object:" + actions);
executeActions: function executeActions(actionsArrayOrOneObject, json, frontendParams, applyParams) {
var actions = this.getActionsMap(actionsArrayOrOneObject);

if (actions[UPDATE_USER_INFO] !== undefined) {
be5.store.dispatch(updateUserInfo(actions[UPDATE_USER_INFO]));
}

if (actions[OPEN_DEFAULT_ROUTE] !== undefined) {
if (actions[OPEN_NEW_WINDOW] !== undefined) {
window.open(actions[OPEN_NEW_WINDOW]);
}

if (actions.hasOwnProperty(OPEN_DEFAULT_ROUTE)) {
be5.url.set(getDefaultRoute(be5.getStoreState()));
}

if (actions.hasOwnProperty(GO_BACK)) {
window.history.back();
}

if (actions[UPDATE_PARENT_DOCUMENT] !== undefined) {
var tableJson = Object.assign({}, actions[UPDATE_PARENT_DOCUMENT], { meta: json.meta });
changeDocument(frontendParams.parentDocumentName, { value: tableJson });
}

bus.fire("actionsAfterFinished", { actions: actions, json: json, frontendParams: frontendParams, applyParams: applyParams });
bus.fire("executeFrontendActions", { actions: actions, json: json, frontendParams: frontendParams, applyParams: applyParams });
},

getActionsMap: function getActionsMap(actionsArrayOrOneObject) {
var map = {};
if (Array.isArray(actionsArrayOrOneObject)) {
for (var i = 0; i < actionsArrayOrOneObject.length; i++) {
Preconditions.passed(typeof actionsArrayOrOneObject[i].type === "string", "Actions must be object with string type:" + actionsArrayOrOneObject);

map[actionsArrayOrOneObject[i].type] = actionsArrayOrOneObject[i].value;
}
} else {
Preconditions.passed(typeof actionsArrayOrOneObject.type === "string", "Actions must be object with string type:" + actionsArrayOrOneObject);

map[actionsArrayOrOneObject.type] = actionsArrayOrOneObject.value;
}

return map;
},
_performForm: function _performForm(json, frontendParams) {
var operationResult = json.data.attributes.operationResult;

Expand Down
75 changes: 54 additions & 21 deletions dist/uncompressed/static/be5-react.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "be5-react",
"version": "0.2.16",
"version": "0.2.17",
"description": "React client UI for be5 server api",
"main": "dist/lib/be5-react.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion src/css/menu.css
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,6 @@ a.rootMenuItem.inactive + div + ul {
text-decoration: underline;
}

.nav-link {
.navbar .nav-link {
font-size: 16px;
}
2 changes: 2 additions & 0 deletions src/scripts/be5/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ export const ROLE_SYSTEM_DEVELOPER = "SystemDeveloper";
export const ROLE_GUEST = "Guest";

export const OPEN_DEFAULT_ROUTE = 'OPEN_DEFAULT_ROUTE';
export const OPEN_NEW_WINDOW = 'OPEN_NEW_WINDOW';
export const GO_BACK = 'GO_BACK';

export const UPDATE_PARENT_DOCUMENT = 'UPDATE_PARENT_DOCUMENT';
59 changes: 46 additions & 13 deletions src/scripts/be5/services/forms.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Preconditions from '../utils/preconditions';
import changeDocument from '../core/changeDocument';
import {updateUserInfo} from "../store/actions/user.actions";
import {UPDATE_USER_INFO} from "../store/constants/user.constants";
import {OPEN_DEFAULT_ROUTE, UPDATE_PARENT_DOCUMENT} from "../constants";
import {GO_BACK, OPEN_DEFAULT_ROUTE, OPEN_NEW_WINDOW, UPDATE_PARENT_DOCUMENT} from "../constants";
import {getDefaultRoute} from "../store/selectors/user.selectors";


Expand Down Expand Up @@ -88,27 +88,28 @@ export default
switch (attributes.status) {
case 'redirect':
bus.fire("alert", {msg: json.data.attributes.message || be5.messages.successfullyCompleted, type: 'success'});
if(attributes.details.startsWith("http://")
|| attributes.details.startsWith("https://")
|| attributes.details.startsWith("ftp://"))

const url = attributes.details;

if(url.startsWith("http://") || url.startsWith("https://") || url.startsWith("ftp://"))
{
window.location.href = attributes.details;
window.location.href = url;
}
else
{
if (documentName === be5.MAIN_DOCUMENT)
{
be5.url.set(attributes.details);
be5.url.set(url);
}
else
{
if(be5.url.parse(attributes.details).positional[0] === 'form')
if(be5.url.parse(url).positional[0] === 'form')
{
this.load(this.getOperationParams(attributes.details, {}), frontendParams);
this.load(this.getOperationParams(url, {}), frontendParams);
}
else
{
be5.url.process(documentName, '#!' + attributes.details);
be5.url.process(documentName, '#!' + url);
}
}
}
Expand Down Expand Up @@ -158,27 +159,59 @@ export default
return attributes.status === 'finished' && attributes.details !== undefined
},

executeActions: function (actions, json, frontendParams, applyParams)
executeActions: function (actionsArrayOrOneObject, json, frontendParams, applyParams)
{
Preconditions.passed(typeof actions === 'object', "actions must be object:" + actions);
const actions = this.getActionsMap(actionsArrayOrOneObject);

if(actions[UPDATE_USER_INFO] !== undefined)
{
be5.store.dispatch(updateUserInfo(actions[UPDATE_USER_INFO]));
}

if(actions[OPEN_DEFAULT_ROUTE] !== undefined)
if(actions[OPEN_NEW_WINDOW] !== undefined)
{
window.open(actions[OPEN_NEW_WINDOW]);
}

if(actions.hasOwnProperty(OPEN_DEFAULT_ROUTE))
{
be5.url.set(getDefaultRoute(be5.getStoreState()));
}

if(actions.hasOwnProperty(GO_BACK))
{
window.history.back();
}

if(actions[UPDATE_PARENT_DOCUMENT] !== undefined)
{
const tableJson = Object.assign({}, actions[UPDATE_PARENT_DOCUMENT], {meta: json.meta});
changeDocument(frontendParams.parentDocumentName, {value: tableJson});
}

bus.fire("actionsAfterFinished", {actions, json, frontendParams, applyParams});
bus.fire("executeFrontendActions", {actions, json, frontendParams, applyParams});
},

getActionsMap(actionsArrayOrOneObject) {
let map = {};
if(Array.isArray(actionsArrayOrOneObject))
{
for (let i = 0; i < actionsArrayOrOneObject.length; i++) {
Preconditions.passed(typeof actionsArrayOrOneObject[i].type === "string",
"Actions must be object with string type:" + actionsArrayOrOneObject);

map[actionsArrayOrOneObject[i].type] = actionsArrayOrOneObject[i].value;
}
}
else
{
Preconditions.passed(typeof actionsArrayOrOneObject.type === "string",
"Actions must be object with string type:" + actionsArrayOrOneObject);

map[actionsArrayOrOneObject.type] = actionsArrayOrOneObject.value;
}

return map;
},

_performForm(json, frontendParams)
Expand Down
22 changes: 14 additions & 8 deletions test/scripts/be5/services/forms.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ test('performOperationResult UPDATE_USER_INFO', () => {
const res = {
data: {
type: "operationResult",
attributes: {"status":"finished", details: {
UPDATE_USER_INFO: getTestUser()
}},
attributes: {"status":"finished", details:
new FrontendAction("UPDATE_USER_INFO", getTestUser())
},
links: {"self":"form/categories/Doc categories/Edit"},
},
meta: {"_ts_":"1503244989281"},
Expand All @@ -105,10 +105,10 @@ test('performOperationResult UPDATE_USER_INFO', () => {
expect(getUser(store.getState())).toEqual(getTestUser());
});

test('actionsAfterFinished TEST', () => {
test('executeFrontendActions TEST', () => {
let out = '';

bus.listen("actionsAfterFinished", ({actions, json, frontendParams, applyParams}) => {
bus.listen("executeFrontendActions", ({actions, json, frontendParams, applyParams}) => {
if(actions["TEST"] !== undefined)
{
out = actions["TEST"] + ' 1'
Expand All @@ -118,9 +118,9 @@ test('actionsAfterFinished TEST', () => {
const res = {
data: {
type: "operationResult",
attributes: {"status":"finished", details: {
TEST: "test data"
}},
attributes: {"status":"finished", details:
[new FrontendAction("TEST", "test data")]
},
links: {"self":"form/categories/Doc categories/Edit"},
},
meta: {"_ts_":"1503244989281"},
Expand Down Expand Up @@ -191,3 +191,9 @@ test('load and _performForm test', () => {
expect(component.toJSON()).toMatchSnapshot();
});

class FrontendAction {
constructor(type, value) {
this.type = type;
this.value = value;
}
}