import React, {Fragment, useState} from 'react'; import {observer, inject} from "mobx-react"; import {List, ListItem, ListButton, Icon, Row, Page, Navbar, BlockTitle, Toggle, Range, Link, Tabs, Tab, NavRight} from 'framework7-react'; import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; import {CustomColorPicker, ThemeColorPalette} from "../../../../../common/mobile/lib/component/ThemeColorPalette.jsx"; import { f7 } from 'framework7-react'; const PageCustomFillColor = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); let fillColor = props.storeChartSettings.fillColor; if (typeof fillColor === 'object') { fillColor = fillColor.color; } const onAddNewColor = (colors, color) => { props.storePalette.changeCustomColors(colors); props.onFillColor(color); props.storeChartSettings.setFillColor(color); props.f7router.back(); }; return ( {Device.phone && } ) }; const PaletteFill = inject("storeFocusObjects", "storeChartSettings", "storePalette")(observer(props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const storeChartSettings = props.storeChartSettings; const shapeProperties = props.storeFocusObjects.shapeObject; const curFillColor = storeChartSettings.fillColor ? storeChartSettings.fillColor : storeChartSettings.getFillColor(shapeProperties); const customColors = props.storePalette.customColors; const changeColor = (color, effectId, effectValue) => { if (color !== 'empty') { if (effectId !==undefined ) { const newColor = {color: color, effectId: effectId, effectValue: effectValue}; props.onFillColor(newColor); storeChartSettings.setFillColor(newColor); } else { props.onFillColor(color); storeChartSettings.setFillColor(color); } } else { // open custom color menu props.f7router.navigate('/edit-chart-custom-fill-color/', {props: {onFillColor: props.onFillColor}}); } }; return ( ) })); const PageCustomBorderColor = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); let borderColor = props.storeChartSettings.borderColor; if (typeof borderColor === 'object') { borderColor = borderColor.color; } const onAddNewColor = (colors, color) => { props.storePalette.changeCustomColors(colors); props.onBorderColor(color); props.storeChartSettings.setBorderColor(color); props.f7router.back(); }; return ( {Device.phone && } ) }; const PageBorderColor = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const borderColor = props.storeChartSettings.borderColor; const customColors = props.storePalette.customColors; const changeColor = (color, effectId, effectValue) => { if (color !== 'empty') { if (effectId !==undefined ) { const newColor = {color: color, effectId: effectId, effectValue: effectValue}; props.onBorderColor(newColor); props.storeChartSettings.setBorderColor(newColor); } else { props.onBorderColor(color); props.storeChartSettings.setBorderColor(color); } } else { // open custom color menu props.f7router.navigate('/edit-chart-custom-border-color/', {props: {onBorderColor: props.onBorderColor}}); } }; return ( {Device.phone && } ) }; const PageStyle = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const storeChartSettings = props.storeChartSettings; const chartProperties = props.storeFocusObjects.chartObject ? props.storeFocusObjects.chartObject.get_ChartProperties() : null; const types = storeChartSettings.types; const curType = chartProperties ? chartProperties.getType() : null; const styles = storeChartSettings.styles; const shapeObject = props.storeFocusObjects.shapeObject; const chartStyles = storeChartSettings.chartStyles; const isAndroid = Device.android; let borderSize, borderType, borderColor; if(shapeObject) { const shapeStroke = shapeObject.get_stroke(); borderSize = shapeStroke.get_width() * 72.0 / 25.4; borderType = shapeStroke.get_type(); borderColor = !storeChartSettings.borderColor ? storeChartSettings.initBorderColor(shapeStroke) : storeChartSettings.borderColor; } // Init border size const borderSizeTransform = storeChartSettings.borderSizeTransform(); const displayBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.indexSizeByValue(borderSize); const displayTextBorderSize = (borderType == Asc.c_oAscStrokeType.STROKE_NONE || borderType === undefined) ? 0 : borderSizeTransform.sizeByValue(borderSize); const [stateBorderSize, setBorderSize] = useState(displayBorderSize); const [stateTextBorderSize, setTextBorderSize] = useState(displayTextBorderSize); // Init border color const displayBorderColor = borderColor !== 'transparent' ? `#${(typeof borderColor === "object" ? borderColor.color : borderColor)}` : borderColor; if (!chartProperties && Device.phone) { $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close(); return null; } return ( {_t.textType} {chartStyles ? {_t.textStyle} : null} {_t.textFill} {_t.textBorder} {isAndroid && } {Device.phone && } {types.map((row, rowIndex) => { return ( {row.map((type, index)=>{ return( {props.onType(type.type)}}> ) })} ) })} {chartStyles ? {styles ? styles.map((row, rowIndex) => { return ( {row.map((style, index)=>{ return( {props.onStyle(style.asc_getName())}}> ) })} ) }) : {_t.textNoStyles} } : null} {_t.textSize} {setBorderSize(value); setTextBorderSize(borderSizeTransform.sizeByIndex(value));}} onRangeChanged={(value) => {props.onBorderSize(borderSizeTransform.sizeByIndex(value))}} > {stateTextBorderSize + ' ' + Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt)} ) }; const PageReorder = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const chartObject = props.storeFocusObjects.chartObject; if (!chartObject && Device.phone) { $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close(); return null; } return ( {Device.phone && } {props.onReorder('all-up')}} link='#' className='no-indicator'> {props.onReorder('all-down')}} link='#' className='no-indicator'> {props.onReorder('move-up')}} link='#' className='no-indicator'> {props.onReorder('move-down')}} link='#' className='no-indicator'> ) }; const PageAlign = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const chartObject = props.storeFocusObjects.chartObject; if (!chartObject && Device.phone) { $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close(); return null; } return ( {Device.phone && } {props.onAlign('align-left')}} className='no-indicator'> {props.onAlign('align-center')}} className='no-indicator'> {props.onAlign('align-right')}} className='no-indicator'> {props.onAlign('align-top')}} className='no-indicator'> {props.onAlign('align-middle')}} className='no-indicator'> {props.onAlign('align-bottom')}} className='no-indicator'> {props.onAlign('distrib-hor')}} className='no-indicator'> {props.onAlign('distrib-vert')}} className='no-indicator'> ) }; const EditChart = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); return ( {props.onRemoveChart()}} className='button-red button-fill button-raised'/> ) }; const PageChartStyle = inject("storeChartSettings", "storeFocusObjects")(observer(PageStyle)); const PageChartCustomFillColor = inject("storeChartSettings", "storePalette")(observer(PageCustomFillColor)); const PageChartBorderColor = inject("storeChartSettings", "storePalette")(observer(PageBorderColor)); const PageChartCustomBorderColor = inject("storeChartSettings", "storePalette")(observer(PageCustomBorderColor)); const PageChartReorder = inject("storeFocusObjects")(observer(PageReorder)); const PageChartAlign = inject("storeFocusObjects")(observer(PageAlign)); export { EditChart, PageChartStyle, PageChartCustomFillColor, PageChartBorderColor, PageChartCustomBorderColor, PageChartReorder, PageChartAlign }