periodicjs.ext.reactapp
Version:
448 lines (389 loc) • 15.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRouter = require('react-router');
var _reactRedux = require('react-redux');
var _reactRouterRedux = require('react-router-redux');
var _history = require('../../routers/history');
var _stores = require('../../stores');
var _stores2 = _interopRequireDefault(_stores);
var _actions = require('../../actions');
var _actions2 = _interopRequireDefault(_actions);
var _Main = require('./Main');
var _Main2 = _interopRequireDefault(_Main);
var _util = require('../../util');
var _util2 = _interopRequireDefault(_util);
var _routes = require('../../routers/routes');
var _index = require('../../constants/index');
var _index2 = _interopRequireDefault(_index);
var _pluralize = require('pluralize');
var _pluralize2 = _interopRequireDefault(_pluralize);
var _numeral = require('numeral');
var _numeral2 = _interopRequireDefault(_numeral);
var _capitalize = require('capitalize');
var _capitalize2 = _interopRequireDefault(_capitalize);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _luxon = require('luxon');
var _luxon2 = _interopRequireDefault(_luxon);
var _flat = require('flat');
var _flat2 = _interopRequireDefault(_flat);
var _socket = require('socket.io-client');
var _socket2 = _interopRequireDefault(_socket);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// import constants from '../../constants';
// import combinedReducers from '../../reducers';
// import { Notification } from 're-bulma';
// import { Nav, NavGroup, NavItem, Button, Icon, NavToggle, } from 're-bulma';
// import { createStore, } from 'redux';
var AppConfigSettings = {
name: 'Admin Panel',
basename: 'http://localhost:8786',
adminPath: '/r-admin',
routerHistory: 'browserHistory',
hot_reload: false,
use_sockets: true,
socket_server: false,
disableLogger: false,
includeCoreData: {
manifest: true,
navigation: true
},
allHistoryOptions: 'browserHistory|hashHistory|createMemoryHistory',
application: {
environment: 'development',
use_offline_cache: false
},
ui: {
initialization: {
show_header: false,
show_footer: false,
show_sidebar_overlay: true,
refresh_manifests: true,
refresh_navigation: true,
refresh_components: true
},
notifications: {
error_timeout: 10000,
timed_timeout: 10000,
hide_login_notification: false,
supressResourceErrors: false
},
fixedSidebar: true,
sidebarBG: '#ffffff',
header: {
isBold: true,
color: 'isBlack',
buttonColor: 'isWhite',
useGlobalSearch: false,
useHeaderLogout: false,
customButton: false,
navLabelStyle: {},
containerStyle: {},
userNameStyle: {}
},
footer: {
navStyle: {}
},
sidebar: {
containerStyle: {},
use_floating_nav: false
}
},
auth: {
logged_in_homepage: '/r-admin/dashboard',
logged_out_path: '/'
},
login: {
url: '/api/jwt/token',
devurl: '/api/jwt/token',
options: {
method: 'POST',
headers: {
Accept: 'application/json',
clientid: 'e2852fd35ef3c16ef206d4e34252e0e5',
entitytype: 'account'
}
}
},
userprofile: {
url: '/api/jwt/profile',
devurl: '/api/jwt/profile',
options: {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
clientid: 'e2852fd35ef3c16ef206d4e34252e0e5',
clientid_default: 'clientIDNEEDED',
entitytype: 'account'
}
}
}
};
// import AppLoginSettings from '../../content/config/login.json';
// import logo from './logo.svg';
// import './App.css';
window.io = _socket2.default;
// import debounce from 'debounce';
var history = (0, _history.getHistory)(_history.historySettings, AppConfigSettings, _stores2.default);
var mapStateToProps = function mapStateToProps(state) {
return {
dynamic: state.dynamic,
page: state.page,
settings: state.settings,
ui: state.ui,
log: state.log,
user: state.user,
manifest: state.manifest,
notification: state.notification
// tabBarExtensions: state.tabBarExtensions,
// fetchData: state.fetchData,
// messageBar: state.messageBar,
};
};
window.__reactapp = (0, _assign2.default)({}, {
__ra_helpers: {
numeral: _numeral2.default,
moment: _moment2.default,
luxon: _luxon2.default,
capitalize: _capitalize2.default,
pluralize: _pluralize2.default,
flatten: _flat2.default
}
}, window.__reactapp);
window.__reactapp.setDynamicData = function (prop, val) {
return _stores2.default.dispatch(_actions2.default.dynamic.setDynamicData(prop, val));
};
var reduxActions = {
isLoggedIn: function isLoggedIn() {
return _stores2.default.getState().user.isLoggedIn;
},
getState: function getState() {
return _stores2.default.getState();
}, //.dispatch(actions.user.getUserStatus()),
debug: function debug(data) {
console.debug(data);
}, //.dispatch(actions.user.getUserStatus()),
fetchAction: function fetchAction(pathname, fetchOptions, success) {
// console.debug('in redux actions this', this);
return _util2.default.fetchAction.call(this, pathname, fetchOptions, success);
}, //.dispatch(actions.user.getUserStatus()),
redirect: function redirect(locationURL) {
// console.debug({ locationURL, });
if (typeof locationURL === 'string') {
window.location = locationURL;
} else {
window.location = locationURL.location;
}
},
getUserProfile: function getUserProfile(jwt_token) {
return _stores2.default.dispatch(_actions2.default.user.getUserProfile(jwt_token));
},
updateUserProfile: function updateUserProfile(profile) {
return _stores2.default.dispatch(_actions2.default.user.updateUserProfile(profile));
},
setNavLabel: function setNavLabel(label) {
return _stores2.default.dispatch(_actions2.default.ui.setNavLabel(label));
},
saveUserProfile: function saveUserProfile(url, response, json) {
return _stores2.default.dispatch(_actions2.default.user.saveUserProfile(url, response, json));
},
initializeAuthenticatedUser: function initializeAuthenticatedUser(jwt_token) {
var enforceMFA = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
return _stores2.default.dispatch(_actions2.default.user.initializeAuthenticatedUser(jwt_token, enforceMFA));
},
loginUser: function loginUser(formdata) {
return _stores2.default.dispatch(_actions2.default.user.loginUser(formdata));
},
// ajaxModal: (options) => store.dispatch(actions.notification.ajaxModal(options)),
fileSaver: function fileSaver(options) {
return _stores2.default.dispatch(_actions2.default.output.fileSaver(options));
},
createModal: function createModal(options) {
return _stores2.default.dispatch(_actions2.default.notification.createModal(options));
},
useConfirmModal: function useConfirmModal(options) {
return _stores2.default.dispatch(_actions2.default.notification.createModal(_util2.default.confirmModalPopUp(options)));
},
hideModal: function hideModal(options) {
return _stores2.default.dispatch(_actions2.default.notification.hideModal(options));
},
createNotification: function createNotification(options) {
return _stores2.default.dispatch(_actions2.default.notification.createNotification(options));
},
errorNotification: function errorNotification(options, timeout) {
return _stores2.default.dispatch(_actions2.default.notification.errorNotification(options, timeout));
},
hideNotification: function hideNotification(id) {
return _stores2.default.dispatch(_actions2.default.notification.hideNotification(id));
},
toggleUISidebar: function toggleUISidebar() {
return _stores2.default.dispatch(_actions2.default.ui.toggleUISidebar());
},
setUILoadedState: function setUILoadedState(loaded, customLayout) {
return _stores2.default.dispatch(_actions2.default.ui.setUILoadedState(loaded, customLayout));
},
setDebugUILoadedState: function setDebugUILoadedState(loaded, customLayout) {
var t = setTimeout(function () {
_stores2.default.dispatch(_actions2.default.ui.setUILoadedState(loaded, customLayout));
clearTimeout(t);
}, 2000);
},
logoutUser: function logoutUser() {
return _stores2.default.dispatch(_actions2.default.user.logoutUser());
},
setDynamicData: function setDynamicData(prop, val) {
return _stores2.default.dispatch(_actions2.default.dynamic.setDynamicData(prop, val));
},
setSocket: function setSocket(socket) {
return _stores2.default.dispatch(_actions2.default.dynamic.setSocket(socket));
},
fetchLoginComponent: function fetchLoginComponent() {
return _stores2.default.dispatch(_util2.default.setCacheConfiguration(_actions2.default.ui.fetchComponent(_index2.default.ui.LOGIN_COMPONENT), 'components.login'));
},
fetchMainComponent: function fetchMainComponent() {
return _stores2.default.dispatch(_util2.default.setCacheConfiguration(_actions2.default.ui.fetchComponent(_index2.default.ui.MAIN_COMPONENT), 'components.main'));
},
fetchErrorComponents: function fetchErrorComponents() {
return _stores2.default.dispatch(_util2.default.setCacheConfiguration(_actions2.default.ui.fetchComponent(_index2.default.ui.ERROR_COMPONENTS), 'components.error'));
},
setLoginComponent: function setLoginComponent() {
return _stores2.default.dispatch(_actions2.default.ui.handleFetchedComponent(_index2.default.ui.LOGIN_COMPONENT));
},
setMainComponent: function setMainComponent() {
return _stores2.default.dispatch(_actions2.default.ui.handleFetchedComponent(_index2.default.ui.MAIN_COMPONENT));
},
setErrorComponents: function setErrorComponents() {
return _stores2.default.dispatch(_actions2.default.ui.handleFetchedComponent(_index2.default.ui.ERROR_COMPONENTS));
},
setConfigurationFromCache: function setConfigurationFromCache() {
return _stores2.default.dispatch(_util2.default.getCacheConfiguration((0, _assign2.default)({}, _actions2.default, {
setLoginComponent: reduxActions.setLoginComponent,
setMainComponent: reduxActions.setMainComponent,
setErrorComponents: reduxActions.setErrorComponents
})));
},
fetchUnauthenticatedManifest: function fetchUnauthenticatedManifest() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return _stores2.default.dispatch(_actions2.default.manifest.fetchUnauthenticatedManifest(options));
},
hideLog: function hideLog() {
return _stores2.default.dispatch(_actions2.default.log.hideLog());
},
showLog: function showLog() {
return _stores2.default.dispatch(_actions2.default.log.showLog());
},
createLog: function createLog(logData) {
_stores2.default.dispatch(_actions2.default.log.createLog(logData));
},
setActiveNavLink: function setActiveNavLink(id) {
return _stores2.default.dispatch(_actions2.default.ui.setActiveNavItem(id));
},
enforceMFA: function enforceMFA(noRedirect) {
return _stores2.default.dispatch(_actions2.default.user.enforceMFA(noRedirect));
},
validateMFA: function validateMFA(jwt_token) {
return _stores2.default.dispatch(_actions2.default.user.validateMFA(jwt_token));
},
authenticatedMFA: function authenticatedMFA() {
return _stores2.default.dispatch(_actions2.default.user.authenticatedMFA());
},
refresh: function refresh() {
return _stores2.default.dispatch((0, _reactRouterRedux.push)(window.location.pathname + window.location.search));
},
reduxRouter: {
push: function push(location) {
return _stores2.default.dispatch((0, _reactRouterRedux.push)(location));
},
replace: function replace(location) {
return _stores2.default.dispatch((0, _reactRouterRedux.replace)(location));
},
go: function go(number) {
return _stores2.default.dispatch((0, _reactRouterRedux.go)(number));
},
goForward: function goForward() {
return _stores2.default.dispatch((0, _reactRouterRedux.goForward)());
},
goBack: function goBack() {
return _stores2.default.dispatch((0, _reactRouterRedux.goBack)());
}
},
routerFormSubmit: function routerFormSubmit(formdata) {
// console.log({ formdata, });
var nonFormFields = ['$loki', 'formDataError', 'meta', '__formIsSubmitting', '__formOptions'];
var fields = (0, _keys2.default)(formdata).filter(function (field) {
return nonFormFields.indexOf(field) === -1;
});
var qs = fields.reduce(function (querystring, field) {
if (typeof formdata[field] !== 'undefined') querystring += '&' + field + '=' + formdata[field];
return querystring;
}, '');
var pathname = window.location.pathname;
var redirect = pathname + '?' + qs;
// console.log({ fields, qs, pathname, redirect});
_stores2.default.dispatch((0, _reactRouterRedux.push)(redirect));
}
};
var mapDispatchToProps = function mapDispatchToProps() /*dispatch*/{
return reduxActions;
};
var MainAppContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_Main2.default);
var useExtraProps = {
renderRouteComponent: function renderRouteComponent(child) {
return _react2.default.cloneElement(child, (0, _assign2.default)({}, reduxActions));
}
};
var Main = function (_Component) {
(0, _inherits3.default)(Main, _Component);
function Main() {
(0, _classCallCheck3.default)(this, Main);
return (0, _possibleConstructorReturn3.default)(this, (Main.__proto__ || (0, _getPrototypeOf2.default)(Main)).apply(this, arguments));
}
(0, _createClass3.default)(Main, [{
key: 'componentDidMount',
value: function componentDidMount() {
if (document && document.body && document.body.classList && document.body.classList.add) {
document.body.classList.add('__reactapp_body_loaded');
} else if (document && document.body && document.body.className) {
document.body.className = document.body.className += ' __reactapp_body_loaded';
}
if (document && document.querySelector && document.querySelector('html') && document.querySelector('html').add) {
document.querySelector('html').classList.add('__reactapp_html_loaded');
}
}
}, {
key: 'render',
value: function render() {
// console.log('initial store',{store})
return _react2.default.createElement(
_reactRedux.Provider,
{ store: _stores2.default },
_react2.default.createElement(_reactRouter.Router, {
history: history,
routes: (0, _routes.getRoutes)(MainAppContainer),
render: (0, _reactRouter.applyRouterMiddleware)(useExtraProps)
})
);
}
}]);
return Main;
}(_react.Component);
exports.default = Main;