@adaptabletools/adaptable-plugin-ipushpull 22.0.2 → 22.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptabletools/adaptable-plugin-ipushpull",
3
- "version": "22.0.2",
3
+ "version": "22.0.3",
4
4
  "description": "",
5
5
  "homepage": "http://www.adaptabletools.com/",
6
6
  "author": {
@@ -4,14 +4,14 @@ import * as PopupRedux from '@adaptabletools/adaptable/src/Redux/ActionsReducers
4
4
  import * as IPushPullRedux from '../Redux/ActionReducers/IPushPullRedux';
5
5
  import { StringExtensions } from '@adaptabletools/adaptable/src/Utilities/Extensions/StringExtensions';
6
6
  import FormLayout, { FormRow } from '@adaptabletools/adaptable/src/components/FormLayout';
7
- import Input from '@adaptabletools/adaptable/src/components/Input';
7
+ import AdaptableInput from '@adaptabletools/adaptable/src/View/Components/AdaptableInput';
8
8
  import SimpleButton from '@adaptabletools/adaptable/src/components/SimpleButton';
9
9
  import { PanelWithImage } from '@adaptabletools/adaptable/src/View/Components/Panels/PanelWithImage';
10
10
  import { usePopupContext } from '@adaptabletools/adaptable/src/View/Components/Popups/AdaptablePopup/PopupContext';
11
11
  import ErrorBox from '@adaptabletools/adaptable/src/components/ErrorBox';
12
12
  import HelpBlock from '@adaptabletools/adaptable/src/components/HelpBlock';
13
13
  import { Flex } from '@adaptabletools/adaptable/src/components/Flex';
14
- import Dropdown from '@adaptabletools/adaptable/src/components/Dropdown';
14
+ import { Select } from '@adaptabletools/adaptable/src/components/Select';
15
15
  import { EMPTY_STRING, EMPTY_ARRAY, } from '@adaptabletools/adaptable/src/Utilities/Constants/GeneralConstants';
16
16
  import ArrayExtensions from '@adaptabletools/adaptable/src/Utilities/Extensions/ArrayExtensions';
17
17
  const IPushPullAddPageComponent = (props) => {
@@ -35,11 +35,11 @@ const IPushPullAddPageComponent = (props) => {
35
35
  setState({ ...state, Page: e.value });
36
36
  };
37
37
  const onFolderChanged = (folderName) => {
38
- if (StringExtensions.IsNotNullOrEmpty(folderName) && folderName !== 'Select Folder') {
39
- let avaialablePages = props.IPushPullDomainsPages.find((f) => f.Name == folderName).Pages;
38
+ if (StringExtensions.IsNotNullOrEmpty(folderName)) {
39
+ let availablePages = props.IPushPullDomainsPages.find((f) => f.Name == folderName)?.Pages ?? [];
40
40
  setState({
41
41
  Folder: folderName,
42
- AvailablePages: avaialablePages,
42
+ AvailablePages: availablePages,
43
43
  Page: EMPTY_STRING,
44
44
  ErrorMessage: EMPTY_STRING,
45
45
  });
@@ -67,10 +67,10 @@ const IPushPullAddPageComponent = (props) => {
67
67
  React.createElement(Flex, { flexDirection: "column", className: "twa:p-2 twa:m-2" },
68
68
  React.createElement(HelpBlock, { className: "twa:mb-1" }, "Select a folder and then choose the name of the new ipushpull page it should contain."),
69
69
  React.createElement(FormLayout, { className: "twa:m-3" },
70
- React.createElement(FormRow, { label: "Folder:" },
71
- React.createElement(Dropdown, { disabled: availableFolders.length == 0, options: availableFolders, className: "ab-Popup__IPushPull__select twa:min-w-[50%] twa:mr-2", onChange: (folder) => onFolderChanged(folder), value: state.Folder ? state.Folder : null, placeholder: "Select Folder" })),
70
+ React.createElement(FormRow, { label: "Folder" },
71
+ React.createElement(Select, { disabled: availableFolders.length == 0, options: availableFolders, className: "ab-Popup__IPushPull__select twa:min-w-[50%] twa:mr-2", onChange: (folder) => onFolderChanged(folder), value: state.Folder || undefined, placeholder: "Select Folder", isClearable: true })),
72
72
  React.createElement(FormRow, { label: "Page" },
73
- React.createElement(Input, { className: "twa:w-1/2", type: "text", placeholder: "Page Name", value: state.Page, onChange: onPageNameChange })),
73
+ React.createElement(AdaptableInput, { className: "twa:w-1/2", type: "text", placeholder: "Page Name", value: state.Page, disabled: StringExtensions.IsNullOrEmpty(state.Folder), onChange: onPageNameChange })),
74
74
  state.ErrorMessage ? (React.createElement(FormRow, { label: "" },
75
75
  React.createElement(ErrorBox, null, state.ErrorMessage))) : null)),
76
76
  React.createElement(Flex, { className: "twa:p-2", justifyContent: "space-between" },
@@ -5,7 +5,7 @@ import * as PopupRedux from '@adaptabletools/adaptable/src/Redux/ActionsReducers
5
5
  import * as IPushPullRedux from '../Redux/ActionReducers/IPushPullRedux';
6
6
  import { StringExtensions } from '@adaptabletools/adaptable/src/Utilities/Extensions/StringExtensions';
7
7
  import FormLayout, { FormRow } from '@adaptabletools/adaptable/src/components/FormLayout';
8
- import Input from '@adaptabletools/adaptable/src/components/Input';
8
+ import AdaptableInput from '@adaptabletools/adaptable/src/View/Components/AdaptableInput';
9
9
  import SimpleButton from '@adaptabletools/adaptable/src/components/SimpleButton';
10
10
  import { PanelWithImage } from '@adaptabletools/adaptable/src/View/Components/Panels/PanelWithImage';
11
11
  import { usePopupContext } from '@adaptabletools/adaptable/src/View/Components/Popups/AdaptablePopup/PopupContext';
@@ -39,10 +39,10 @@ const IPushPullLoginComponent = (props) => {
39
39
  React.createElement(Flex, { flexDirection: "column", className: "twa:p-2 twa:m-2" },
40
40
  React.createElement(HelpBlock, { className: "twa:mb-1" }, "Login to ipushpull using your login (email address) and password."),
41
41
  React.createElement(FormLayout, { className: "twa:m-3" },
42
- React.createElement(FormRow, { label: "ipushpull login:" },
43
- React.createElement(Input, { className: "twa:w-full", type: "email", placeholder: "Email address", value: state.Login, onChange: onLoginChange })),
44
- React.createElement(FormRow, { label: "ipushpull password:" },
45
- React.createElement(Input, { className: "twa:w-full", type: "password", placeholder: "Password", value: state.Password, onChange: onPasswordChange })),
42
+ React.createElement(FormRow, { label: "User" },
43
+ React.createElement(AdaptableInput, { className: "twa:w-full", type: "email", placeholder: "Email address", value: state.Login, onChange: onLoginChange })),
44
+ React.createElement(FormRow, { label: "Password" },
45
+ React.createElement(AdaptableInput, { className: "twa:w-full", type: "password", placeholder: "Password", value: state.Password, onChange: onPasswordChange })),
46
46
  props.pushpullLoginErrorMessage ? (React.createElement(FormRow, { label: "" },
47
47
  React.createElement(ErrorBox, null, props.pushpullLoginErrorMessage))) : null)),
48
48
  React.createElement(Flex, { className: "twa:p-2", justifyContent: "space-between" },
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import ObjectFactory from '@adaptabletools/adaptable/src/Utilities/ObjectFactory';
5
5
  import { StringExtensions } from '@adaptabletools/adaptable/src/Utilities/Extensions/StringExtensions';
6
6
  import { Flex } from '@adaptabletools/adaptable/src/components/Flex';
7
- import DropdownButton from '@adaptabletools/adaptable/src/components/DropdownButton';
7
+ import { Select } from '@adaptabletools/adaptable/src/components/Select';
8
8
  import { ButtonExport } from '@adaptabletools/adaptable/src/View/Components/Buttons/ButtonExport';
9
9
  import { ButtonPause } from '@adaptabletools/adaptable/src/View/Components/Buttons/ButtonPause';
10
10
  import { ButtonPlay } from '@adaptabletools/adaptable/src/View/Components/Buttons/ButtonPlay';
@@ -62,58 +62,42 @@ const IPushPullViewPanelComponent = (props) => {
62
62
  let allReports = systemReports
63
63
  .filter((s) => props.api.exportApi.internalApi.isSystemReportActive(s))
64
64
  .concat(props.Reports.map((r) => r.Name));
65
- let availableReports = allReports.map((report) => {
66
- return {
67
- label: report,
68
- value: report,
69
- onClick: () => onSelectedReportChanged(report),
70
- };
71
- });
72
- let availableFolders = props.IPushPullDomainsPages?.map((iPushPullDomain) => {
73
- return {
74
- label: iPushPullDomain.Name,
75
- value: iPushPullDomain.Name,
76
- onClick: () => onFolderChanged(iPushPullDomain.Name),
77
- };
78
- }) ?? [];
79
- let availablePages = props.CurrentIPushPullAvailablePages?.map((page) => {
80
- return {
81
- label: page,
82
- value: page,
83
- onClick: () => onPageChanged(page),
84
- };
85
- }) ?? [];
86
- // this is clearly ridiculous!
87
- // im getting tired...
88
- let isCompletedReport = StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullReportName) &&
89
- StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullFolder) &&
90
- StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullPage);
65
+ let availableReports = allReports.map((report) => ({
66
+ label: report,
67
+ value: report,
68
+ }));
69
+ let availableFolders = props.IPushPullDomainsPages?.map((iPushPullDomain) => ({
70
+ label: iPushPullDomain.Name,
71
+ value: iPushPullDomain.Name,
72
+ })) ?? [];
73
+ let availablePages = props.CurrentIPushPullAvailablePages?.map((page) => ({
74
+ label: page,
75
+ value: page,
76
+ })) ?? [];
77
+ let hasReport = StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullReportName);
78
+ let hasFolder = StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullFolder);
79
+ let hasPage = StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullPage);
80
+ let isCompletedReport = hasReport && hasFolder && hasPage;
91
81
  let isLiveIPushPullReport = isCompletedReport &&
92
82
  props.CurrentLiveIPushPullReport &&
93
83
  props.CurrentIPushPullReportName == props.CurrentLiveIPushPullReport.ReportName &&
94
84
  props.CurrentIPushPullFolder == props.CurrentLiveIPushPullReport.Folder &&
95
85
  props.CurrentIPushPullPage == props.CurrentLiveIPushPullReport.Page;
96
86
  const elementType = props.viewType === 'Toolbar' ? 'DashboardToolbar' : 'ToolPanel';
97
- return props.IsIPushPullRunning ? (React.createElement(Flex, { flexDirection: "row", className: `ab-${elementType}__IPushPull__wrap`, flexWrap: props.viewType === 'ToolPanel' ? 'wrap' : 'nowrap' },
98
- React.createElement(Flex, null,
99
- React.createElement(DropdownButton, { disabled: allReports.length == 0 || isLiveIPushPullReport, items: availableReports, columns: ['label'], className: `ab-${elementType}__IPushPull__select twa:min-w-[140px] twa:text-0 twa:mr-2`, onClear: () => onSelectedReportChanged(''), showClearButton: StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullReportName), variant: "outlined" }, StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullReportName)
100
- ? props.CurrentIPushPullReportName
101
- : 'Select Report')),
102
- React.createElement(Flex, null,
103
- React.createElement(DropdownButton, { disabled: allReports.length == 0 || isLiveIPushPullReport, items: availableFolders, columns: ['label'], className: `ab-${elementType}__IPushPull__select twa:min-w-[140px] twa:text-0 twa:mr-2`, onClear: () => onFolderChanged(''), showClearButton: StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullFolder), variant: "outlined" }, StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullFolder)
104
- ? props.CurrentIPushPullFolder
105
- : 'Select Folder')),
106
- React.createElement(Flex, null,
107
- React.createElement(DropdownButton, { disabled: allReports.length == 0 || isLiveIPushPullReport, items: availablePages, columns: ['label'], className: `ab-${elementType}__IPushPull__select twa:min-w-[140px] twa:text-0 twa:mr-2`, onClear: () => onPageChanged(''), showClearButton: StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullPage), variant: "outlined" }, StringExtensions.IsNotNullOrEmpty(props.CurrentIPushPullPage)
108
- ? props.CurrentIPushPullPage
109
- : 'Select Page')),
110
- React.createElement(Flex, { className: "twa:min-w-[148px]" },
111
- React.createElement(ButtonExport, { className: `ab-${elementType}__IPushPull__export twa:ml-1`, onClick: () => onIPushPullSendSnapshot(), tooltip: "Send Snapshot to ipushpull", disabled: isLiveIPushPullReport || !isCompletedReport, accessLevel: props.accessLevel }),
112
- isLiveIPushPullReport ? (React.createElement(ButtonPause, { className: `ab-${elementType}__IPushPull__pause twa:ml-1 twa:fill-red-500`, onClick: () => props.onIPushPullStopLiveData(), tooltip: "Stop sync with ipushpull", disabled: !isLiveIPushPullReport, accessLevel: props.accessLevel })) : (React.createElement(ButtonPlay, { className: `ab-${elementType}__IPushPull__play twa:ml-1`, onClick: () => onIPushPullStartLiveData(), tooltip: "Start sync with ipushpull", disabled: isLiveIPushPullReport || !isCompletedReport, accessLevel: props.accessLevel })),
113
- isCompletedReport && (React.createElement(Flex, { className: join(props.accessLevel == 'ReadOnly' ? GeneralConstants.READ_ONLY_STYLE : '', `ab-${elementType}__IPushPull__controls`), alignItems: "stretch" }, props.api.entitlementApi.isModuleFullEntitlement('Schedule') && (React.createElement(ButtonSchedule, { className: `ab-${elementType}__IPushPull__schedule twa:ml-1`, onClick: () => onNewIPushPullSchedule(), tooltip: "Schedule", disabled: isLiveIPushPullReport || !isCompletedReport, accessLevel: props.accessLevel })))),
114
- ' ',
115
- React.createElement(ButtonNewPage, { className: `ab-${elementType}__IPushPull__newpage twa:ml-1`, onClick: () => props.onShowAddIPushPullPage(), tooltip: "New Page", disabled: isLiveIPushPullReport, accessLevel: props.accessLevel }),
116
- React.createElement(ButtonLogout, { className: `ab-${elementType}__IPushPull__logout twa:ml-1`, onClick: () => getIPPApi().logoutFromIPushPull(), tooltip: "Logout", disabled: isLiveIPushPullReport, accessLevel: props.accessLevel })))) : (React.createElement(ButtonLogin, { className: `ab-${elementType}__IPushPull__login twa:ml-1`, onClick: () => props.onShowIPushPullLogin(), tooltip: "Login to ipushpull", accessLevel: props.accessLevel },
87
+ return props.IsIPushPullRunning ? (React.createElement(Flex, { flexDirection: "row", className: `ab-${elementType}__IPushPull__wrap twa:gap-1`, flexWrap: props.viewType === 'ToolPanel' ? 'wrap' : 'nowrap' },
88
+ React.createElement(Flex, { className: "twa:min-w-[140px]" },
89
+ React.createElement(Select, { disabled: allReports.length == 0 || isLiveIPushPullReport, options: availableReports, className: `ab-${elementType}__IPushPull__select twa:w-full`, placeholder: "Select Report", onChange: (reportName) => onSelectedReportChanged(reportName), value: props.CurrentIPushPullReportName, isClearable: true })),
90
+ React.createElement(Flex, { className: "twa:min-w-[140px]" },
91
+ React.createElement(Select, { disabled: !hasReport || isLiveIPushPullReport, options: availableFolders, className: `ab-${elementType}__IPushPull__select twa:w-full`, placeholder: "Select Folder", onChange: (folder) => onFolderChanged(folder), value: props.CurrentIPushPullFolder, isClearable: true })),
92
+ React.createElement(Flex, { className: "twa:min-w-[140px]" },
93
+ React.createElement(Select, { disabled: !hasFolder || isLiveIPushPullReport, options: availablePages, className: `ab-${elementType}__IPushPull__select twa:w-full`, placeholder: "Select Page", onChange: (page) => onPageChanged(page), value: props.CurrentIPushPullPage, isClearable: true })),
94
+ React.createElement(Flex, { className: join(props.accessLevel == 'ReadOnly' ? GeneralConstants.READ_ONLY_STYLE : '', `ab-${elementType}__IPushPull__controls twa:w-full`) },
95
+ React.createElement(Flex, null,
96
+ React.createElement(ButtonExport, { className: `ab-${elementType}__IPushPull__export`, onClick: () => onIPushPullSendSnapshot(), tooltip: "Send Snapshot to ipushpull", disabled: isLiveIPushPullReport || !isCompletedReport, accessLevel: props.accessLevel }),
97
+ isLiveIPushPullReport ? (React.createElement(ButtonPause, { className: `ab-${elementType}__IPushPull__pause twa:fill-red-500`, onClick: () => props.onIPushPullStopLiveData(), tooltip: "Stop sync with ipushpull", disabled: !isLiveIPushPullReport, accessLevel: props.accessLevel })) : (React.createElement(ButtonPlay, { className: `ab-${elementType}__IPushPull__play`, onClick: () => onIPushPullStartLiveData(), tooltip: "Start sync with ipushpull", disabled: isLiveIPushPullReport || !isCompletedReport, accessLevel: props.accessLevel })),
98
+ props.api.entitlementApi.isModuleFullEntitlement('Schedule') && (React.createElement(ButtonSchedule, { className: `ab-${elementType}__IPushPull__schedule`, onClick: () => onNewIPushPullSchedule(), tooltip: "Schedule", disabled: isLiveIPushPullReport || !isCompletedReport, accessLevel: props.accessLevel })),
99
+ React.createElement(ButtonNewPage, { className: `ab-${elementType}__IPushPull__newpage`, onClick: () => props.onShowAddIPushPullPage(), tooltip: "New Page", disabled: !hasFolder || isLiveIPushPullReport, accessLevel: props.accessLevel }),
100
+ React.createElement(ButtonLogout, { className: `ab-${elementType}__IPushPull__logout`, onClick: () => getIPPApi().logoutFromIPushPull(), tooltip: "Logout", disabled: isLiveIPushPullReport, accessLevel: props.accessLevel }))))) : (React.createElement(ButtonLogin, { className: `ab-${elementType}__IPushPull__login twa:ml-1`, onClick: () => props.onShowIPushPullLogin(), tooltip: "Login to ipushpull", accessLevel: props.accessLevel },
117
101
  ' ',
118
102
  "Login"));
119
103
  };
package/src/index.d.ts CHANGED
@@ -19,5 +19,5 @@ declare class IPushPullPlugin extends AdaptablePlugin {
19
19
  afterInitStore(adaptable: IAdaptable): void;
20
20
  }
21
21
  export type { IPushPullPluginOptions, IPushPullConfig } from './IPushPullPluginOptions';
22
- declare const _default: (options?: IPushPullPluginOptions) => IPushPullPlugin;
23
- export default _default;
22
+ export declare const ipushpullPlugin: (options?: IPushPullPluginOptions) => IPushPullPlugin;
23
+ export default ipushpullPlugin;
package/src/index.js CHANGED
@@ -132,7 +132,7 @@ class IPushPullPlugin extends AdaptablePlugin {
132
132
  return next(action);
133
133
  }
134
134
  case IPUSHPULL_DOMAIN_PAGES_SET: {
135
- //refresh the available pages
135
+ const result = next(action);
136
136
  const currentFolder = middlewareAPI.getState().Internal.IPushPullCurrentFolder;
137
137
  const isFolderValid = StringExtensions.IsNotNullOrEmpty(currentFolder);
138
138
  if (isFolderValid) {
@@ -141,7 +141,7 @@ class IPushPullPlugin extends AdaptablePlugin {
141
141
  .getPagesForIPushPullDomain(currentFolder);
142
142
  middlewareAPI.dispatch(IPushPullSetCurrentAvailablePages(availablePages));
143
143
  }
144
- return next(action);
144
+ return result;
145
145
  }
146
146
  default: {
147
147
  return next(action);
@@ -157,4 +157,5 @@ class IPushPullPlugin extends AdaptablePlugin {
157
157
  AdaptableViewPanelFactory.set(IPushPullModuleId, IPushPullViewPanelControl);
158
158
  }
159
159
  }
160
- export default (options) => new IPushPullPlugin(options);
160
+ export const ipushpullPlugin = (options) => new IPushPullPlugin(options);
161
+ export default ipushpullPlugin;
@@ -4,6 +4,7 @@ export declare class IPushPullClient {
4
4
  private tokens;
5
5
  private refreshPromise;
6
6
  constructor(config: IPushPullClientConfig);
7
+ private getBasicAuthHeader;
7
8
  private buildOAuthBody;
8
9
  login(username: string, password: string): Promise<IPushPullTokens>;
9
10
  refreshToken(): Promise<IPushPullTokens>;
@@ -5,13 +5,12 @@ export class IPushPullClient {
5
5
  constructor(config) {
6
6
  this.config = config;
7
7
  }
8
+ getBasicAuthHeader() {
9
+ const credentials = `${this.config.api_key}:${this.config.api_secret}`;
10
+ return `Basic ${btoa(credentials)}`;
11
+ }
8
12
  buildOAuthBody(params) {
9
- const allParams = {
10
- ...params,
11
- client_id: this.config.api_key,
12
- client_secret: this.config.api_secret,
13
- };
14
- return Object.entries(allParams)
13
+ return Object.entries(params)
15
14
  .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
16
15
  .join('&');
17
16
  }
@@ -26,6 +25,7 @@ export class IPushPullClient {
26
25
  method: 'POST',
27
26
  headers: {
28
27
  'Content-Type': 'application/x-www-form-urlencoded',
28
+ Authorization: this.getBasicAuthHeader(),
29
29
  },
30
30
  body,
31
31
  });
@@ -66,6 +66,7 @@ export class IPushPullClient {
66
66
  method: 'POST',
67
67
  headers: {
68
68
  'Content-Type': 'application/x-www-form-urlencoded',
69
+ Authorization: this.getBasicAuthHeader(),
69
70
  },
70
71
  body,
71
72
  });
@@ -1,2 +0,0 @@
1
- import * as React from 'react';
2
- export declare let IPushPullPopup: React.ComponentType<any>;
@@ -1,37 +0,0 @@
1
- import * as React from 'react';
2
- import { connect } from 'react-redux';
3
- import { PanelWithButton } from '@adaptabletools/adaptable/src/View/Components/Panels/PanelWithButton';
4
- import * as IPushPullRedux from '../Redux/ActionReducers/IPushPullRedux';
5
- import * as TeamSharingRedux from '@adaptabletools/adaptable/src/Redux/ActionsReducers/TeamSharingRedux';
6
- import * as ModuleConstants from '@adaptabletools/adaptable/src/Utilities/Constants/ModuleConstants';
7
- import { UIHelper } from '@adaptabletools/adaptable/src/View/UIHelper';
8
- class IPushPullPopupComponent extends React.Component {
9
- constructor(props) {
10
- super(props);
11
- this.state = UIHelper.getEmptyConfigState();
12
- }
13
- shouldClosePopupOnFinishWizard = false;
14
- componentDidMount() {
15
- if (this.props.popupParams) {
16
- this.shouldClosePopupOnFinishWizard =
17
- this.props.popupParams.source && this.props.popupParams.source == 'Toolbar';
18
- }
19
- }
20
- render() {
21
- return (React.createElement(PanelWithButton, { headerText: this.props.moduleInfo.FriendlyName, bodyProps: { className: 'twa:p-0' }, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed() }));
22
- }
23
- onApplyExport(iPushPullReport) {
24
- this.props.onIPushPullSendSnapshot(iPushPullReport);
25
- }
26
- }
27
- function mapStateToProps(state) {
28
- return {};
29
- }
30
- function mapDispatchToProps(dispatch) {
31
- return {
32
- onIPushPullSendSnapshot: (report) => dispatch(IPushPullRedux.IPushPullSendSnapshot(report)),
33
- onIPushPullStopLiveData: () => dispatch(IPushPullRedux.IPushPullStopLiveData()),
34
- onShare: (entity, config) => dispatch(TeamSharingRedux.TeamSharingShare(entity, ModuleConstants.IPushPullModuleId, config)),
35
- };
36
- }
37
- export let IPushPullPopup = connect(mapStateToProps, mapDispatchToProps)(IPushPullPopupComponent);