all files / src/ pageLayout.tsx

71.93% Statements 41/57
50% Branches 18/36
41.18% Functions 7/17
78.43% Lines 40/51
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133                                                                                                                                                                                         
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var React = require("react");
var react_1 = require("react");
var ReactDOM = require("react-dom");
var react_redux_1 = require("react-redux");
var Global = require("./dashboard/global.js");
var widgetGrid_ui_js_1 = require("./widgets/widgetGrid.ui.js");
var layouts_ui_js_1 = require("./layouts/layouts.ui.js");
var widgetConfigDialog_ui_js_1 = require("./widgets/widgetConfigDialog.ui.js");
var dashboardMenuEntry_ui_js_1 = require("./dashboard/dashboardMenuEntry.ui.js");
var importExportDialog_ui_js_1 = require("./dashboard/importExportDialog.ui.js");
var datasourceConfigDialog_ui_js_1 = require("./datasource/datasourceConfigDialog.ui.js");
var datasourceNavItem_ui_js_1 = require("./datasource/datasourceNavItem.ui.js");
var widgetsNavItem_ui_js_1 = require("./widgets/widgetsNavItem.ui.js");
var pluginNavItem_ui_1 = require("./pluginApi/pluginNavItem.ui");
var pluginsDialog_ui_1 = require("./pluginApi/pluginsDialog.ui");
var Persistence = require("./persistence");
var datasourceFrames_ui_1 = require("./datasource/datasourceFrames.ui");
var Layout = (function (_super) {
    __extends(Layout, _super);
    function Layout(props) {
        _super.call(this, props);
        this.state = { hover: false };
    }
    Layout.prototype.onReadOnlyModeKeyPress = function (e) {
        //console.log("key pressed", event.keyCode);
        var intKey = (window.event) ? e.which : e.keyCode;
        if (intKey === 27) {
            this.props.setReadOnly(!this.props.isReadOnly);
        }
    };
    Layout.prototype.componentDidMount = function () {
        if (this.props.devMode) {
            this.onReadOnlyModeKeyPress = this.onReadOnlyModeKeyPress.bind(this);
            ReactDOM.findDOMNode(this)
                .offsetParent
                .addEventListener('keydown', this.onReadOnlyModeKeyPress);
        }
    };
    Layout.prototype.render = function () {
        var _this = this;
        var props = this.props;
        var devMode = props.devMode;
        var showMenu = props.devMode && (!props.isReadOnly || this.state.hover);
        return React.createElement("div", {className: "slds-grid slds-wrap", onKeyUp: function (event) { return _this.onReadOnlyModeKeyPress(event); }}, 
            devMode ? React.createElement("div", null, 
                React.createElement(widgetConfigDialog_ui_js_1.default, null), 
                React.createElement(importExportDialog_ui_js_1.default, null), 
                React.createElement(datasourceConfigDialog_ui_js_1.default, null), 
                React.createElement(pluginsDialog_ui_1.default, null))
                : null, 
            devMode ? React.createElement("div", {className: showMenu ? "menu-trigger" : "menu-trigger", onMouseOver: function () { _this.setState({ hover: true }); }, onMouseEnter: function () { _this.setState({ hover: true }); }})
                : null, 
            devMode ?
                React.createElement("div", {className: "slds-size--1-of-1 slds-context-bar" + (showMenu ? " topnav--visible" : " topnav--hidden"), onMouseOver: function () { _this.setState({ hover: true }); }, onMouseLeave: function () { _this.setState({ hover: false }); }}, 
                    React.createElement("div", {className: "slds-context-bar__primary slds-context-bar__item--divider-right"}, 
                        React.createElement("div", {className: "slds-context-bar__item slds-context-bar__dropdown-trigger slds-dropdown-trigger slds-dropdown-trigger--click slds-no-hover"}, 
                            React.createElement("span", {className: "slds-context-bar__label-action slds-context-bar__app-name"}, 
                                React.createElement("span", {className: "slds-truncate"}, 
                                    React.createElement("a", {href: this.props.config.title.url}, this.props.config.title.text)
                                )
                            )
                        )
                    ), 
                    React.createElement("div", {className: "slds-context-bar__secondary", role: "navigation"}, 
                        React.createElement("ul", {className: "slds-grid"}, 
                            React.createElement(dashboardMenuEntry_ui_js_1.default, null), 
                            React.createElement(pluginNavItem_ui_1.default, null), 
                            React.createElement(widgetsNavItem_ui_js_1.default, null), 
                            React.createElement(datasourceNavItem_ui_js_1.default, null), 
                            React.createElement(layouts_ui_js_1.default, null), 
                            React.createElement("div", {className: "slds-context-bar__vertical-divider"}), 
                            React.createElement("li", {className: "slds-context-bar__item"}, 
                                React.createElement("a", {href: "javascript:void(0);", onClick: function () { return Persistence.clearData(); }, className: "slds-context-bar__label-action", title: "Reset Everything!"}, 
                                    React.createElement("span", {className: "slds-truncate"}, "Reset Everything!")
                                )
                            ), 
                            React.createElement("li", {className: "slds-context-bar__item"}, 
                                React.createElement("div", {className: "slds-context-bar__icon-action", onClick: function () { return props.setReadOnly(!props.isReadOnly); }}, 
                                    React.createElement("svg", {"aria-hidden": "true", className: "slds-icon slds-icon--small slds-icon-text-default"}, 
                                        React.createElement("use", {xlinkHref: "assets/icons/utility-sprite/svg/symbols.svg#" + (props.isReadOnly ? "lock" : "unlock")})
                                    ), 
                                    React.createElement("span", {className: "slds-assistive-text"}, "Lock / Unlock"))
                            ))
                    ), 
                    React.createElement("div", {className: "slds-context-bar__tertiary"}, 
                        React.createElement("ul", {className: "slds-grid slds-grid--vertical-align-center"}, 
                            props.config.auth && props.config.auth.username ?
                                React.createElement("div", {className: "slds-m-right--small"}, props.config.auth.username)
                                : null, 
                            props.config.auth && props.config.auth.logoutUrl ?
                                React.createElement("a", {className: "slds-button slds-button--neutral", href: props.config.auth.logoutUrl}, 
                                    React.createElement("svg", {"aria-hidden": "true", className: "slds-button__icon slds-button__icon--left"}, 
                                        React.createElement("use", {xlinkHref: "assets/icons/utility-sprite/svg/symbols.svg#logout"})
                                    ), 
                                    "Logout")
                                : null, 
                            React.createElement("div", {className: "slds-context-bar__vertical-divider"}), 
                            React.createElement("span", {className: "slds-truncate slds-m-left--small"}, 
                                "v", 
                                this.props.config.version))
                    ))
                : null, 
            React.createElement("div", {className: "slds-size--1-of-1"}, 
                React.createElement(widgetGrid_ui_js_1.default, null)
            ), 
            React.createElement(datasourceFrames_ui_1.default, null));
    };
    return Layout;
}(react_1.Component));
exports.Layout = Layout;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = react_redux_1.connect(function (state) {
    return {
        isReadOnly: state.global.isReadOnly,
        devMode: state.config.devMode,
        config: state.config
    };
}, function (dispatch) {
    return {
        setReadOnly: function (isReadOnly) { return dispatch(Global.setReadOnly(isReadOnly)); }
    };
})(Layout);