/* eslint-disable react/static-property-placement */ import _ from 'lodash'; import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import i18n from 'vj/utils/i18n'; import request from 'vj/utils/request'; import * as languageEnum from 'vj/constant/language'; import Icon from 'vj/components/react/IconComponent'; import Toolbar, { ToolbarItemComponent as ToolbarItem, ToolbarButtonComponent as ToolbarButton, ToolbarSplitComponent as ToolbarSplit, } from './ToolbarComponent'; const mapStateToProps = (state) => ({ pretestVisible: state.ui.pretest.visible, recordsVisible: state.ui.records.visible, isPosting: state.ui.isPosting, isRunning: state.pretest.isRunning, editorLang: state.editor.lang, }); const mapDispatchToProps = (dispatch) => ({ togglePanel(uiElement) { dispatch({ type: 'SCRATCHPAD_UI_TOGGLE_VISIBILITY', payload: { uiElement }, }); }, setEditorLanguage(lang) { dispatch({ type: 'SCRATCHPAD_EDITOR_SET_LANG', payload: lang, }); }, postPretest(context) { const state = context.store.getState(); const { input } = state.pretest; const req = request.post(Context.postPretestUrl, { lang: state.editor.lang, code: state.editor.code, input, }); dispatch({ type: 'SCRATCHPAD_POST_PRETEST', payload: req, }); }, postSubmit(context) { const state = context.store.getState(); const req = request.post(Context.postSubmitUrl, { lang: state.editor.lang, code: state.editor.code, }); dispatch({ type: 'SCRATCHPAD_POST_SUBMIT', payload: req, }); }, loadSubmissions() { dispatch({ type: 'SCRATCHPAD_RECORDS_LOAD_SUBMISSIONS', payload: request.get(Context.getSubmissionsUrl), }); }, handleClickRefresh() { this.loadSubmissions(); }, }); @connect(mapStateToProps, mapDispatchToProps) export default class ScratchpadToolbarContainer extends React.PureComponent { static contextTypes = { store: PropTypes.object, }; componentDidMount() { this.props.loadSubmissions(); } render() { return ( this.props.postPretest(this.context)} data-global-hotkey="f9" data-tooltip={`${i18n('Pretest Your Code')} (F9)`} > {' '} {i18n('Run Pretest')} {' '} (F9) this.props.postSubmit(this.context)} data-global-hotkey="f10" data-tooltip={`${i18n('Submit Your Code')} (F10)`} > {' '} {i18n('Submit Solution')} {' '} (F10) this.props.handleClickRefresh()} > {' '} {i18n('Refresh')} {' '} (Alt+F) this.props.togglePanel('pretest')} data-global-hotkey="alt+p" data-tooltip={`${i18n('Toggle Pretest Panel')} (Alt+P)`} > {' '} {i18n('Pretest')} this.props.togglePanel('records')} data-global-hotkey="alt+r" data-tooltip={`${i18n('Toggle Records Panel')} (Alt+R)`} > {' '} {i18n('Records')} ); } }