diff --git a/frontend/src/metabase/pulse/components/PulseCardPreview.jsx b/frontend/src/metabase/pulse/components/PulseCardPreview.jsx index 652c2c55d5baca9d3d4f2dd4084f6103feaa530a..d225b0e8f429e35aba329d64c06109917597cb71 100644 --- a/frontend/src/metabase/pulse/components/PulseCardPreview.jsx +++ b/frontend/src/metabase/pulse/components/PulseCardPreview.jsx @@ -22,6 +22,7 @@ export default class PulseCardPreview extends Component { onRemove: PropTypes.func.isRequired, fetchPulseCardPreview: PropTypes.func.isRequired, attachmentsEnabled: PropTypes.bool, + trackPulseEvent: PropTypes.func.isRequired }; componentWillMount() { @@ -46,8 +47,12 @@ export default class PulseCardPreview extends Component { const { card, onChange } = this.props; if (this.hasAttachment()) { onChange({ ...card, include_csv: false, include_xls: false }) + + this.props.trackPulseEvent("RemoveAttachment") } else { onChange({ ...card, include_csv: true }) + + this.props.trackPulseEvent("AddAttachment", 'csv') } } diff --git a/frontend/src/metabase/pulse/components/PulseEditCards.jsx b/frontend/src/metabase/pulse/components/PulseEditCards.jsx index f714a6698b7d771f73efbca31d10275c5f48cc4e..dff1db88710a8505b08f4b04561c61e1aad30ed2 100644 --- a/frontend/src/metabase/pulse/components/PulseEditCards.jsx +++ b/frontend/src/metabase/pulse/components/PulseEditCards.jsx @@ -38,10 +38,17 @@ export default class PulseEditCards extends Component { }); } + trackPulseEvent = (eventName: string, eventValue: string) => { + MetabaseAnalytics.trackEvent( + (this.props.pulseId) ? "PulseEdit" : "PulseCreate", + eventName, + eventValue + ); + } + addCard(index, cardId) { this.setCard(index, { id: cardId }) - - MetabaseAnalytics.trackEvent((this.props.pulseId) ? "PulseEdit" : "PulseCreate", "AddCard", index); + this.trackPulseEvent("AddCard", index); } removeCard(index) { @@ -51,7 +58,7 @@ export default class PulseEditCards extends Component { cards: [...pulse.cards.slice(0, index), ...pulse.cards.slice(index + 1)] }); - MetabaseAnalytics.trackEvent((this.props.pulseId) ? "PulseEdit" : "PulseCreate", "RemoveCard", index); + this.trackPulseEvent("RemoveCard", index); } getNotices(card, cardPreview, index) { @@ -61,7 +68,7 @@ export default class PulseEditCards extends Component { if (hasAttachment) { notices.push({ head: t`Attachment`, - body: <AttachmentWidget card={card} onChange={(card) => this.setCard(index, card)} /> + body: <AttachmentWidget card={card} onChange={(card) => this.setCard(index, card)} trackPulseEvent={this.trackPulseEvent} /> }); } if (cardPreview) { @@ -134,6 +141,7 @@ export default class PulseEditCards extends Component { onRemove={this.removeCard.bind(this, index)} fetchPulseCardPreview={this.props.fetchPulseCardPreview} attachmentsEnabled={this.props.attachmentsEnabled} + trackPulseEvent={this.trackPulseEvent} /> : <CardPicker @@ -155,7 +163,7 @@ export default class PulseEditCards extends Component { const ATTACHMENT_TYPES = ["csv", "xls"]; -const AttachmentWidget = ({ card, onChange }) => +const AttachmentWidget = ({ card, onChange, trackPulseEvent }) => <div> { ATTACHMENT_TYPES.map(type => <span @@ -166,6 +174,8 @@ const AttachmentWidget = ({ card, onChange }) => for (const attachmentType of ATTACHMENT_TYPES) { newCard["include_" + attachmentType] = type === attachmentType; } + + trackPulseEvent("AttachmentTypeChanged", type); onChange(newCard) }} > @@ -176,5 +186,6 @@ const AttachmentWidget = ({ card, onChange }) => AttachmentWidget.propTypes = { card: PropTypes.object.isRequired, - onChange: PropTypes.func.isRequired + onChange: PropTypes.func.isRequired, + trackPulseEvent: PropTypes.func.isRequired }