You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2018/11/28 22:10:44 UTC

[GitHub] z0tomasz closed pull request #6460: Mistake

z0tomasz closed pull request #6460: Mistake
URL: https://github.com/apache/incubator-superset/pull/6460
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/superset/assets/src/SqlLab/components/ResultSet.jsx b/superset/assets/src/SqlLab/components/ResultSet.jsx
index c7c10cd586..0e7b6b9d3f 100644
--- a/superset/assets/src/SqlLab/components/ResultSet.jsx
+++ b/superset/assets/src/SqlLab/components/ResultSet.jsx
@@ -9,6 +9,7 @@ import ExploreResultsButton from './ExploreResultsButton';
 import HighlightedSql from './HighlightedSql';
 import FilterableTable from '../../components/FilterableTable/FilterableTable';
 import QueryStateLabel from './QueryStateLabel';
+import CopyToClipboard from "../../components/CopyToClipboard";
 
 const propTypes = {
   actions: PropTypes.object,
@@ -112,6 +113,16 @@ export default class ResultSet extends React.PureComponent {
                   <Button bsSize="small" href={'/superset/csv/' + this.props.query.id}>
                     <i className="fa fa-file-text-o" /> {t('.CSV')}
                   </Button>}
+
+                <CopyToClipboard
+                  text={this.prepareCopyToClipboardData(this.props.query.results.data)}
+                  wrapped={false}
+                  copyNode={
+                    <Button bsSize="small">
+                      <i className="fa fa-clipboard" /> {t('Clipboard')}
+                    </Button>
+                  }
+                />
               </ButtonGroup>
             </div>
             <div className="pull-right">
@@ -130,6 +141,13 @@ export default class ResultSet extends React.PureComponent {
     }
     return <div className="noControls" />;
   }
+  prepareCopyToClipboardData(data) {
+    let result = '';
+    for(let i = 0; i < data.length; ++i) {
+      result += Object.values(data[i]).join('\t') + '\n';
+    }
+    return result;
+  }
   render() {
     const query = this.props.query;
     const height = Math.max(0,
diff --git a/superset/assets/src/components/CopyToClipboard.jsx b/superset/assets/src/components/CopyToClipboard.jsx
index 199e8d430f..c81bbde5ed 100644
--- a/superset/assets/src/components/CopyToClipboard.jsx
+++ b/superset/assets/src/components/CopyToClipboard.jsx
@@ -10,6 +10,7 @@ const propTypes = {
   shouldShowText: PropTypes.bool,
   text: PropTypes.string,
   inMenu: PropTypes.bool,
+  wrapped: PropTypes.bool,
   tooltipText: PropTypes.string,
 };
 
@@ -18,6 +19,7 @@ const defaultProps = {
   onCopyEnd: () => {},
   shouldShowText: true,
   inMenu: false,
+  wrapped: true,
   tooltipText: t('Copy to clipboard'),
 };
 
@@ -94,6 +96,22 @@ export default class CopyToClipboard extends React.Component {
     return this.props.tooltipText;
   }
 
+  renderNotWrapped() {
+    return (
+      <OverlayTrigger
+        placement="top"
+        style={{ cursor: 'pointer' }}
+        overlay={this.renderTooltip()}
+        trigger={['hover']}
+        bsStyle="link"
+        onClick={this.onClick}
+        onMouseOut={this.onMouseOut}
+      >
+        {this.props.copyNode}
+      </OverlayTrigger>
+    );
+  }
+
   renderLink() {
     return (
       <span>
@@ -139,6 +157,8 @@ export default class CopyToClipboard extends React.Component {
   }
 
   render() {
+    if(!this.props.wrapped)
+      return this.renderNotWrapped();
     return this.props.inMenu ? this.renderInMenu() : this.renderLink();
   }
 }
diff --git a/superset/assets/src/explore/components/DisplayQueryButton.jsx b/superset/assets/src/explore/components/DisplayQueryButton.jsx
index 042ca24d83..b2a34a3425 100644
--- a/superset/assets/src/explore/components/DisplayQueryButton.jsx
+++ b/superset/assets/src/explore/components/DisplayQueryButton.jsx
@@ -124,12 +124,28 @@ export default class DisplayQueryButton extends React.PureComponent {
     }
     return null;
   }
+  prepareCopyToClipboardData(data) {
+    let result = '';
+    for(let i = 0; i < data.length; ++i) {
+      result += Object.values(data[i]).join('\t') + '\n';
+    }
+    return result;
+  }
   renderDataTable(data) {
     return (
       <div style={{ overflow: 'auto' }}>
         <Row>
           <Col md={9}>
             <RowCountLabel rowcount={data.length} suffix={t('rows retrieved')} />
+            <CopyToClipboard
+              text={this.prepareCopyToClipboardData(data)}
+              wrapped={false}
+              copyNode={
+                <Button style={{padding: "2px 10px", fontSize: "11px"}}>
+                  <i className="fa fa-clipboard" />
+                </Button>
+              }
+            />
           </Col>
           <Col md={3}>
             <FormControl


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org