All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.44.44.a37bd6c43e2b13149f99.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
{"version":3,"sources":["webpack:///44.44.a37bd6c43e2b13149f99.js","webpack:///./src/pages/ShowDashboardPage.jsx"],"names":["webpackJsonp","875","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_react","_react2","_reflux","_reflux2","_reactBootstrap","_plugin","_deepEqual","_deepEqual2","_StoreProvider","_StoreProvider2","_DocsHelper","_DocsHelper2","_UserNotification","_UserNotification2","_Routes","_Routes2","_common","_PermissionsMixin","_PermissionsMixin2","_DocumentationLink","_DocumentationLink2","_EditDashboardModalTrigger","_EditDashboardModalTrigger2","_Widget","_Widget2","CurrentUserStore","getStore","DashboardsStore","FocusStore","WidgetsStore","ShowDashboardPage","createClass","displayName","mixins","connect","propTypes","history","PropTypes","object","isRequired","getInitialState","locked","forceUpdateInBackground","componentDidMount","this","loadData","listenTo","removeWidget","loadInterval","setInterval","setState","state","currentUser","preferences","updateUnfocussed","componentWillUnmount","clearInterval","DASHBOARDS_EDIT","DEFAULT_HEIGHT","DEFAULT_WIDTH","_this","dashboardId","props","params","get","then","dashboard","isMounted","widgets","sort","w1","w2","id","localeCompare","response","additional","status","error","pushState","DASHBOARDS","shouldUpdate","Boolean","focus","emptyDashboard","createElement","Row","className","Col","md","Alert","page","PAGES","text","_defaultWidgetDimensions","widget","dimensions","col","row","widgetPlugin","PluginStore","filter","plugin","type","toUpperCase","height","defaultHeight","width","defaultWidth","_dashboardIsEmpty","length","formatDashboard","_this2","positions","forEach","persistedDimensions","defaultDimensions","undefined","widget1","widget2","position1","position2","map","key","GridsterContainer","ref","onPositionsChange","_onPositionsChange","_unlockDashboard","event","preventDefault","_onUnlock","refs","gridsterContainer","lockGrid","unlockGrid","newPositions","updatePositions","_toggleFullscreen","element","document","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","_toggleUpdateInBackground","forceUpdate","success","render","Spinner","actions","Button","bsStyle","onClick","IfPermitted","permissions","supportText","href","role","editDashboardTrigger","action","title","description","buttonClass","dashboardTitle","data-dashboard-id","PageHeader"],"mappings":"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","file":"44.44.a37bd6c43e2b13149f99.js","sourcesContent":["webpackJsonp([44],{\n\n/***/ 875:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reflux = __webpack_require__(4);\n\t\n\tvar _reflux2 = _interopRequireDefault(_reflux);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _plugin = __webpack_require__(42);\n\t\n\tvar _deepEqual = __webpack_require__(145);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _StoreProvider = __webpack_require__(3);\n\t\n\tvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\t\n\tvar _DocsHelper = __webpack_require__(17);\n\t\n\tvar _DocsHelper2 = _interopRequireDefault(_DocsHelper);\n\t\n\tvar _UserNotification = __webpack_require__(8);\n\t\n\tvar _UserNotification2 = _interopRequireDefault(_UserNotification);\n\t\n\tvar _Routes = __webpack_require__(11);\n\t\n\tvar _Routes2 = _interopRequireDefault(_Routes);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tvar _PermissionsMixin = __webpack_require__(25);\n\t\n\tvar _PermissionsMixin2 = _interopRequireDefault(_PermissionsMixin);\n\t\n\tvar _DocumentationLink = __webpack_require__(29);\n\t\n\tvar _DocumentationLink2 = _interopRequireDefault(_DocumentationLink);\n\t\n\tvar _EditDashboardModalTrigger = __webpack_require__(151);\n\t\n\tvar _EditDashboardModalTrigger2 = _interopRequireDefault(_EditDashboardModalTrigger);\n\t\n\tvar _Widget = __webpack_require__(531);\n\t\n\tvar _Widget2 = _interopRequireDefault(_Widget);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar CurrentUserStore = _StoreProvider2.default.getStore('CurrentUser');\n\tvar DashboardsStore = _StoreProvider2.default.getStore('Dashboards');\n\tvar FocusStore = _StoreProvider2.default.getStore('Focus');\n\tvar WidgetsStore = _StoreProvider2.default.getStore('Widgets');\n\t\n\tvar ShowDashboardPage = _react2.default.createClass({\n\t  displayName: 'ShowDashboardPage',\n\t\n\t  mixins: [_reflux2.default.connect(CurrentUserStore), _reflux2.default.connect(FocusStore), _PermissionsMixin2.default],\n\t  propTypes: {\n\t    history: _react2.default.PropTypes.object.isRequired\n\t  },\n\t\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      locked: true,\n\t      forceUpdateInBackground: false\n\t    };\n\t  },\n\t  componentDidMount: function componentDidMount() {\n\t    this.loadData();\n\t    this.listenTo(WidgetsStore, this.removeWidget);\n\t    this.loadInterval = setInterval(this.loadData, 2000);\n\t    // eslint-disable-next-line react/no-did-mount-set-state\n\t    this.setState({ forceUpdateInBackground: this.state.currentUser.preferences.updateUnfocussed });\n\t  },\n\t  componentWillUnmount: function componentWillUnmount() {\n\t    if (this.loadInterval) {\n\t      clearInterval(this.loadInterval);\n\t    }\n\t  },\n\t\n\t  DASHBOARDS_EDIT: 'dashboards:edit',\n\t  DEFAULT_HEIGHT: 1,\n\t  DEFAULT_WIDTH: 2,\n\t  loadData: function loadData() {\n\t    var _this = this;\n\t\n\t    var dashboardId = this.props.params.dashboardId;\n\t    DashboardsStore.get(dashboardId).then(function (dashboard) {\n\t      if (!_this.isMounted()) {\n\t        return;\n\t      }\n\t\n\t      // Compare dashboard in state with the one received, need to sort widgets to avoid that they come in\n\t      // a different order, affecting the comparison.\n\t      dashboard.widgets.sort(function (w1, w2) {\n\t        return w1.id.localeCompare(w2.id);\n\t      });\n\t      if (!_this.state.dashboard || !(0, _deepEqual2.default)(_this.state.dashboard, dashboard)) {\n\t        _this.setState({ dashboard: dashboard });\n\t      }\n\t    }, function (response) {\n\t      if (response.additional && response.additional.status === 404) {\n\t        _UserNotification2.default.error('Unable to find a dashboard with the id <' + dashboardId + '>. Maybe it was deleted in the meantime.');\n\t        _this.props.history.pushState(null, _Routes2.default.DASHBOARDS);\n\t      }\n\t    });\n\t  },\n\t  shouldUpdate: function shouldUpdate() {\n\t    return Boolean(this.state.forceUpdateInBackground || this.state.focus);\n\t  },\n\t  removeWidget: function removeWidget(props) {\n\t    if (props.delete) {\n\t      this.loadData();\n\t    }\n\t  },\n\t  emptyDashboard: function emptyDashboard() {\n\t    return _react2.default.createElement(\n\t      _reactBootstrap.Row,\n\t      { className: 'content' },\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Col,\n\t        { md: 12 },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Alert,\n\t          { className: 'no-widgets' },\n\t          'This dashboard has no widgets yet. Learn how to add widgets in the ',\n\t          _react2.default.createElement(_DocumentationLink2.default, {\n\t            page: _DocsHelper2.default.PAGES.DASHBOARDS, text: 'documentation' }),\n\t          '.'\n\t        )\n\t      )\n\t    );\n\t  },\n\t  _defaultWidgetDimensions: function _defaultWidgetDimensions(widget) {\n\t    var dimensions = { col: 0, row: 0 };\n\t\n\t    var widgetPlugin = _plugin.PluginStore.exports('widgets').filter(function (plugin) {\n\t      return plugin.type.toUpperCase() === widget.type.toUpperCase();\n\t    })[0];\n\t    if (widgetPlugin) {\n\t      dimensions.height = widgetPlugin.defaultHeight;\n\t      dimensions.width = widgetPlugin.defaultWidth;\n\t    } else {\n\t      dimensions.height = this.DEFAULT_HEIGHT;\n\t      dimensions.width = this.DEFAULT_WIDTH;\n\t    }\n\t\n\t    return dimensions;\n\t  },\n\t  _dashboardIsEmpty: function _dashboardIsEmpty(dashboard) {\n\t    return dashboard.widgets.length === 0;\n\t  },\n\t  formatDashboard: function formatDashboard(dashboard) {\n\t    var _this2 = this;\n\t\n\t    if (this._dashboardIsEmpty(dashboard)) {\n\t      return this.emptyDashboard();\n\t    }\n\t\n\t    var positions = {};\n\t    dashboard.widgets.forEach(function (widget) {\n\t      var persistedDimensions = dashboard.positions[widget.id] || {};\n\t      var defaultDimensions = _this2._defaultWidgetDimensions(widget);\n\t      positions[widget.id] = {\n\t        col: persistedDimensions.col === undefined ? defaultDimensions.col : persistedDimensions.col,\n\t        row: persistedDimensions.row === undefined ? defaultDimensions.row : persistedDimensions.row,\n\t        height: persistedDimensions.height === undefined ? defaultDimensions.height : persistedDimensions.height,\n\t        width: persistedDimensions.width === undefined ? defaultDimensions.width : persistedDimensions.width\n\t      };\n\t    });\n\t\n\t    var widgets = dashboard.widgets.sort(function (widget1, widget2) {\n\t      var position1 = positions[widget1.id];\n\t      var position2 = positions[widget2.id];\n\t      if (position1.col === position2.col) {\n\t        return position1.row - position2.row;\n\t      }\n\t\n\t      return position1.col - position2.col;\n\t    }).map(function (widget) {\n\t      return _react2.default.createElement(_Widget2.default, { id: widget.id, key: 'widget-' + widget.id, widget: widget, dashboardId: dashboard.id,\n\t        locked: _this2.state.locked, shouldUpdate: _this2.shouldUpdate() });\n\t    });\n\t\n\t    return _react2.default.createElement(\n\t      _reactBootstrap.Row,\n\t      null,\n\t      _react2.default.createElement(\n\t        'div',\n\t        { className: 'dashboard' },\n\t        _react2.default.createElement(\n\t          _common.GridsterContainer,\n\t          { ref: 'gridsterContainer', positions: positions, onPositionsChange: this._onPositionsChange },\n\t          widgets\n\t        )\n\t      )\n\t    );\n\t  },\n\t  _unlockDashboard: function _unlockDashboard(event) {\n\t    event.preventDefault();\n\t    this.setState({ locked: false });\n\t  },\n\t  _onUnlock: function _onUnlock() {\n\t    var locked = !this.state.locked;\n\t    this.setState({ locked: locked });\n\t\n\t    if (locked) {\n\t      this.refs.gridsterContainer.lockGrid();\n\t    } else {\n\t      this.refs.gridsterContainer.unlockGrid();\n\t    }\n\t  },\n\t  _onPositionsChange: function _onPositionsChange(newPositions) {\n\t    DashboardsStore.updatePositions(this.state.dashboard, newPositions);\n\t  },\n\t  _toggleFullscreen: function _toggleFullscreen() {\n\t    var element = document.documentElement;\n\t    if (element.requestFullscreen) {\n\t      element.requestFullscreen();\n\t    } else if (element.mozRequestFullScreen) {\n\t      element.mozRequestFullScreen();\n\t    } else if (element.webkitRequestFullscreen) {\n\t      element.webkitRequestFullscreen();\n\t    } else if (element.msRequestFullscreen) {\n\t      element.msRequestFullscreen();\n\t    }\n\t  },\n\t  _toggleUpdateInBackground: function _toggleUpdateInBackground() {\n\t    var forceUpdate = !this.state.forceUpdateInBackground;\n\t    this.setState({ forceUpdateInBackground: forceUpdate });\n\t    _UserNotification2.default.success('Graphs will be updated ' + (forceUpdate ? 'even' : 'only') + ' when the browser is in the ' + (forceUpdate ? 'background' : 'foreground'), '');\n\t  },\n\t  render: function render() {\n\t    if (!this.state.dashboard) {\n\t      return _react2.default.createElement(_common.Spinner, null);\n\t    }\n\t\n\t    var dashboard = this.state.dashboard;\n\t\n\t    var actions = void 0;\n\t    if (!this._dashboardIsEmpty(dashboard)) {\n\t      actions = _react2.default.createElement(\n\t        'div',\n\t        null,\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Button,\n\t          { id: 'update-unfocussed', bsStyle: 'info', onClick: this._toggleUpdateInBackground },\n\t          'Update in ',\n\t          this.state.forceUpdateInBackground ? 'foreground' : 'background'\n\t        ),\n\t        ' ',\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Button,\n\t          { className: 'toggle-fullscreen', bsStyle: 'info', onClick: this._toggleFullscreen },\n\t          'Fullscreen'\n\t        ),\n\t        _react2.default.createElement(\n\t          _common.IfPermitted,\n\t          { permissions: this.DASHBOARDS_EDIT + ':' + dashboard.id },\n\t          ' ',\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Button,\n\t            { bsStyle: 'success', onClick: this._onUnlock },\n\t            this.state.locked ? 'Unlock / Edit' : 'Lock'\n\t          )\n\t        )\n\t      );\n\t    }\n\t\n\t    var supportText = void 0;\n\t    if (!this._dashboardIsEmpty(dashboard)) {\n\t      supportText = _react2.default.createElement(\n\t        _common.IfPermitted,\n\t        { permissions: this.DASHBOARDS_EDIT + ':' + dashboard.id },\n\t        _react2.default.createElement(\n\t          'div',\n\t          { id: 'drag-widgets-description' },\n\t          'Drag widgets to any position you like in ',\n\t          _react2.default.createElement(\n\t            'a',\n\t            { href: '#', role: 'button', onClick: this._unlockDashboard },\n\t            'unlock / edit'\n\t          ),\n\t          ' mode.'\n\t        )\n\t      );\n\t    }\n\t\n\t    var editDashboardTrigger = !this.state.locked && !this._dashboardIsEmpty(dashboard) ? _react2.default.createElement(\n\t      _EditDashboardModalTrigger2.default,\n\t      { id: dashboard.id, action: 'edit', title: dashboard.title,\n\t        description: dashboard.description, buttonClass: 'btn-info btn-xs' },\n\t      _react2.default.createElement('i', { className: 'fa fa-pencil' })\n\t    ) : null;\n\t    var dashboardTitle = _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        'span',\n\t        { 'data-dashboard-id': dashboard.id, className: 'dashboard-title' },\n\t        dashboard.title\n\t      ),\n\t      '\\xA0',\n\t      editDashboardTrigger\n\t    );\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: dashboardTitle },\n\t        _react2.default.createElement(\n\t          'span',\n\t          { 'data-dashboard-id': dashboard.id, className: 'dashboard-description' },\n\t          dashboard.description\n\t        ),\n\t        supportText,\n\t        actions\n\t      ),\n\t      this.formatDashboard(dashboard),\n\t      _react2.default.createElement('div', { className: 'clearfix' })\n\t    );\n\t  }\n\t});\n\t\n\texports.default = ShowDashboardPage;\n\tmodule.exports = exports['default'];\n\n/***/ }\n\n});\n\n\n/** WEBPACK FOOTER **\n ** 44.44.a37bd6c43e2b13149f99.js\n **/","import React from 'react';\nimport Reflux from 'reflux';\nimport { Row, Col, Button, Alert } from 'react-bootstrap';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport deepEqual from 'deep-equal';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst CurrentUserStore = StoreProvider.getStore('CurrentUser');\nconst DashboardsStore = StoreProvider.getStore('Dashboards');\nconst FocusStore = StoreProvider.getStore('Focus');\nconst WidgetsStore = StoreProvider.getStore('Widgets');\n\nimport DocsHelper from 'util/DocsHelper';\nimport UserNotification from 'util/UserNotification';\nimport Routes from 'routing/Routes';\n\nimport { GridsterContainer, PageHeader, Spinner, IfPermitted } from 'components/common';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport DocumentationLink from 'components/support/DocumentationLink';\nimport EditDashboardModalTrigger from 'components/dashboard/EditDashboardModalTrigger';\nimport Widget from 'components/widgets/Widget';\n\nconst ShowDashboardPage = React.createClass({\n  mixins: [Reflux.connect(CurrentUserStore), Reflux.connect(FocusStore), PermissionsMixin],\n  propTypes: {\n    history: React.PropTypes.object.isRequired,\n  },\n\n  getInitialState() {\n    return {\n      locked: true,\n      forceUpdateInBackground: false,\n    };\n  },\n  componentDidMount() {\n    this.loadData();\n    this.listenTo(WidgetsStore, this.removeWidget);\n    this.loadInterval = setInterval(this.loadData, 2000);\n    // eslint-disable-next-line react/no-did-mount-set-state\n    this.setState({ forceUpdateInBackground: this.state.currentUser.preferences.updateUnfocussed });\n  },\n  componentWillUnmount() {\n    if (this.loadInterval) {\n      clearInterval(this.loadInterval);\n    }\n  },\n  DASHBOARDS_EDIT: 'dashboards:edit',\n  DEFAULT_HEIGHT: 1,\n  DEFAULT_WIDTH: 2,\n  loadData() {\n    const dashboardId = this.props.params.dashboardId;\n    DashboardsStore.get(dashboardId)\n      .then((dashboard) => {\n        if (!this.isMounted()) {\n          return;\n        }\n\n        // Compare dashboard in state with the one received, need to sort widgets to avoid that they come in\n        // a different order, affecting the comparison.\n        dashboard.widgets.sort((w1, w2) => w1.id.localeCompare(w2.id));\n        if (!this.state.dashboard || !deepEqual(this.state.dashboard, dashboard)) {\n          this.setState({ dashboard: dashboard });\n        }\n      }, (response) => {\n        if (response.additional && response.additional.status === 404) {\n          UserNotification.error(`Unable to find a dashboard with the id <${dashboardId}>. Maybe it was deleted in the meantime.`);\n          this.props.history.pushState(null, Routes.DASHBOARDS);\n        }\n      });\n  },\n  shouldUpdate() {\n    return Boolean(this.state.forceUpdateInBackground || this.state.focus);\n  },\n  removeWidget(props) {\n    if (props.delete) {\n      this.loadData();\n    }\n  },\n  emptyDashboard() {\n    return (\n      \n        \n          \n            This dashboard has no widgets yet. Learn how to add widgets in the .\n          \n        \n      \n    );\n  },\n  _defaultWidgetDimensions(widget) {\n    const dimensions = { col: 0, row: 0 };\n\n    const widgetPlugin = PluginStore.exports('widgets').filter(plugin => plugin.type.toUpperCase() === widget.type.toUpperCase())[0];\n    if (widgetPlugin) {\n      dimensions.height = widgetPlugin.defaultHeight;\n      dimensions.width = widgetPlugin.defaultWidth;\n    } else {\n      dimensions.height = this.DEFAULT_HEIGHT;\n      dimensions.width = this.DEFAULT_WIDTH;\n    }\n\n    return dimensions;\n  },\n  _dashboardIsEmpty(dashboard) {\n    return dashboard.widgets.length === 0;\n  },\n  formatDashboard(dashboard) {\n    if (this._dashboardIsEmpty(dashboard)) {\n      return this.emptyDashboard();\n    }\n\n    const positions = {};\n    dashboard.widgets.forEach(widget => {\n      const persistedDimensions = dashboard.positions[widget.id] || {};\n      const defaultDimensions = this._defaultWidgetDimensions(widget);\n      positions[widget.id] = {\n        col: (persistedDimensions.col === undefined ? defaultDimensions.col : persistedDimensions.col),\n        row: (persistedDimensions.row === undefined ? defaultDimensions.row : persistedDimensions.row),\n        height: (persistedDimensions.height === undefined ? defaultDimensions.height : persistedDimensions.height),\n        width: (persistedDimensions.width === undefined ? defaultDimensions.width : persistedDimensions.width),\n      };\n    });\n\n    const widgets = dashboard.widgets.sort((widget1, widget2) => {\n      const position1 = positions[widget1.id];\n      const position2 = positions[widget2.id];\n      if (position1.col === position2.col) {\n        return position1.row - position2.row;\n      }\n\n      return position1.col - position2.col;\n    }).map((widget) => {\n      return (\n        \n      );\n    });\n\n    return (\n      \n        
\n \n {widgets}\n \n
\n
\n );\n },\n _unlockDashboard(event) {\n event.preventDefault();\n this.setState({ locked: false });\n },\n _onUnlock() {\n const locked = !this.state.locked;\n this.setState({ locked: locked });\n\n if (locked) {\n this.refs.gridsterContainer.lockGrid();\n } else {\n this.refs.gridsterContainer.unlockGrid();\n }\n },\n _onPositionsChange(newPositions) {\n DashboardsStore.updatePositions(this.state.dashboard, newPositions);\n },\n _toggleFullscreen() {\n const element = document.documentElement;\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n },\n _toggleUpdateInBackground() {\n const forceUpdate = !this.state.forceUpdateInBackground;\n this.setState({ forceUpdateInBackground: forceUpdate });\n UserNotification.success(`Graphs will be updated ${forceUpdate ? 'even' : 'only'} when the browser is in the ${forceUpdate ? 'background' : 'foreground'}`, '');\n },\n render() {\n if (!this.state.dashboard) {\n return ;\n }\n\n const dashboard = this.state.dashboard;\n\n let actions;\n if (!this._dashboardIsEmpty(dashboard)) {\n actions = (\n
\n \n {' '}\n \n \n {' '}\n \n \n
\n );\n }\n\n let supportText;\n if (!this._dashboardIsEmpty(dashboard)) {\n supportText = (\n \n
\n Drag widgets to any position you like in \n unlock / edit mode.\n
\n
\n );\n }\n\n const editDashboardTrigger = !this.state.locked && !this._dashboardIsEmpty(dashboard) ?\n \n \n : null;\n const dashboardTitle = (\n \n {dashboard.title}\n  \n {editDashboardTrigger}\n \n );\n return (\n \n \n {dashboard.description}\n {supportText}\n {actions}\n \n\n {this.formatDashboard(dashboard)}\n
\n \n );\n },\n});\n\nexport default ShowDashboardPage;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/pages/ShowDashboardPage.jsx\n **/"],"sourceRoot":""}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy