Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge dev-0.3 #536

Merged
merged 80 commits into from
Oct 26, 2018
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
c43cac7
Merge pull request #497 from shanmengm/dev-0.3
RichardShan Oct 16, 2018
9f11a6d
feature drilldown
ruanhan Oct 17, 2018
9a5063c
feat(Display): add Editor or Layers based vertical and horizontal bas…
AndyFong Oct 17, 2018
d6e41f7
Merge pull request #500 from AndyFong/dev-0.3
AndyFong Oct 17, 2018
2c58ab1
drill
ruanhan Oct 17, 2018
970883b
feature drilldown
ruanhan Oct 17, 2018
bebad43
drill
ruanhan Oct 17, 2018
0d10375
Merge branch 'dev-0.3.1' of https://github.com/ruanhan1988/davinci in…
ruanhan Oct 17, 2018
b8fface
Merge pull request #501 from ruanhan/dev-0.3.1
ruanhan Oct 17, 2018
1eb3d6d
feature drillup
ruanhan Oct 18, 2018
15b5705
Merge pull request #502 from ruanhan/dev-0.3.1
ruanhan Oct 18, 2018
822addb
在widgetprops中添加model
scottsut Oct 18, 2018
341358a
Merge pull request #503 from scottsut/dev-0.3
scottsut Oct 18, 2018
c3a71a0
修改Share Dto
RichardShan Oct 18, 2018
c063a2d
Merge pull request #504 from shanmengm/dev-0.3
RichardShan Oct 18, 2018
0ba5359
fix bug drill
ruanhan Oct 18, 2018
f7ff272
Merge pull request #505 from ruanhan/dev-0.3.1
ruanhan Oct 18, 2018
0a79ed9
地图(temp)
yuhouchuhe1 Oct 18, 2018
d56d949
Merge pull request #506 from yuhouchuhe1/dev-0.3
yuhouchuhe1 Oct 18, 2018
c86b17e
chart mode wordCloud & waterfall
scottsut Oct 18, 2018
34fecdf
Merge pull request #507 from scottsut/dev-0.3
scottsut Oct 18, 2018
87635d4
feat(Widget): add basic Parallel, Sankey, Radar diagrams support
AndyFong Oct 18, 2018
e21cbb7
map
scottsut Oct 18, 2018
5f44c88
Merge pull request #508 from scottsut/dev-0.3
scottsut Oct 18, 2018
e68a183
fix(merge): fix merge conflict from upstream/dev-0.3
AndyFong Oct 18, 2018
795d3f1
Merge branch 'dev-0.3' of https://github.com/edp963/davinci into dev-0.3
AndyFong Oct 18, 2018
ee601f7
fix(Widget): change city.json import yo geo.json
AndyFong Oct 18, 2018
25d98e2
fix(Share): fix Display Share SecondaryLayer widget null error
AndyFong Oct 18, 2018
c1a2a7e
Merge pull request #509 from AndyFong/dev-0.3
AndyFong Oct 18, 2018
8294700
feature drill toolbox
ruanhan Oct 18, 2018
cfbc5bf
fix(Display): fix Reducer array reduce initial value error and make a…
AndyFong Oct 19, 2018
ebd490e
fix(Display): fix keyboard move layers no bounds bug
AndyFong Oct 19, 2018
398e502
fix(Display): fix undo/redo via keyboards error
AndyFong Oct 19, 2018
dbd06a0
fix(Widget): fix Parallel diagram multi dimensions data error
AndyFong Oct 19, 2018
51fc4f6
Merge pull request #510 from AndyFong/dev-0.3
AndyFong Oct 19, 2018
74e6b25
some temp fix
scottsut Oct 19, 2018
758afa0
Merge pull request #511 from scottsut/dev-0.3
scottsut Oct 19, 2018
5eb41a4
feature share drill
ruanhan Oct 19, 2018
af682d5
Merge pull request #512 from ruanhan/dev-0.3.1
ruanhan Oct 19, 2018
bedde23
fix share dirll history
ruanhan Oct 19, 2018
5571787
remove console
ruanhan Oct 19, 2018
4bb3e02
Merge pull request #513 from ruanhan/dev-0.3.1
ruanhan Oct 19, 2018
4f3b0f2
add drill swtich
ruanhan Oct 22, 2018
012d00c
Merge pull request #514 from ruanhan/dev-0.3.1
ruanhan Oct 23, 2018
2e96053
合并 getChartData 与 downloadCsv
scottsut Oct 23, 2018
96c7e47
Merge pull request #515 from scottsut/dev-0.3
scottsut Oct 23, 2018
328b708
修改定时发送图片邮件逻辑
RichardShan Oct 23, 2018
dcda44e
Merge pull request #516 from shanmengm/dev-0.3
RichardShan Oct 23, 2018
bb3677a
fix drill data download csv
ruanhan Oct 23, 2018
519af33
Merge pull request #517 from ruanhan/dev-0.3.1
ruanhan Oct 23, 2018
b670b4d
fix phantomjs render error and authorized login css error
scottsut Oct 24, 2018
2c58b4b
Merge pull request #519 from scottsut/dev-0.3
scottsut Oct 24, 2018
e04842a
fix
RichardShan Oct 25, 2018
b15fe8d
Merge pull request #520 from shanmengm/dev-0.3
RichardShan Oct 25, 2018
4e97f86
fix schedule minutes
ruanhan Oct 25, 2018
40ab871
Merge pull request #521 from ruanhan/dev-0.3.1
ruanhan Oct 25, 2018
609ff2f
fix
ruanhan Oct 26, 2018
b54d466
Merge pull request #522 from ruanhan/dev-0.3.1
ruanhan Oct 26, 2018
9166ed1
feat(Widget): add Sankey,Radar,Parallel style config and enrich axis …
AndyFong Oct 26, 2018
8e43f40
Merge branch 'dev-0.3' of https://github.com/edp963/davinci into dev-…
AndyFong Oct 26, 2018
6b58433
Merge pull request #523 from AndyFong/dev-0.3.1
AndyFong Oct 26, 2018
6e8edbb
飞行图
yuhouchuhe1 Oct 26, 2018
35641c9
Merge pull request #524 from yuhouchuhe1/dev-0.3
yuhouchuhe1 Oct 26, 2018
7cae60c
Merge branch 'dev-0.3' of https://github.com/edp963/davinci into dev-…
AndyFong Oct 26, 2018
1459a12
fix
scottsut Oct 26, 2018
4e1b87c
fix
scottsut Oct 26, 2018
19c61cd
Merge pull request #525 from scottsut/dev-0.3
scottsut Oct 26, 2018
4b970bb
fix(Widget): fix parallel multi categories axis label bug
AndyFong Oct 26, 2018
7fa3525
fix(Widget): remove sankey legend config
AndyFong Oct 26, 2018
1632018
Merge branch 'dev-0.3' of https://github.com/edp963/davinci into dev-…
AndyFong Oct 26, 2018
4a70ac5
fix
yuhouchuhe1 Oct 26, 2018
34a610d
Merge pull request #527 from yuhouchuhe1/dev-0.3
yuhouchuhe1 Oct 26, 2018
f00d6f3
Merge branch 'dev-0.3' of https://github.com/edp963/davinci into dev-…
AndyFong Oct 26, 2018
2e5789b
fix(Widget): remove parallel label config and clear chart while prop …
AndyFong Oct 26, 2018
8c643cf
Merge pull request #534 from AndyFong/dev-0.3.1
AndyFong Oct 26, 2018
ff0cfd0
fix
yuhouchuhe1 Oct 26, 2018
27d0c00
Merge pull request #535 from yuhouchuhe1/dev-0.3
yuhouchuhe1 Oct 26, 2018
2f53753
update ui and shell
RichardShan Oct 26, 2018
0f9bc73
Merge branch 'dev-0.3'
RichardShan Oct 26, 2018
836fb54
fix
RichardShan Oct 26, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions webapp/app/containers/Bizlogic/reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ import {
LOAD_VIEW_TEAM_SUCCESS,
LOAD_VIEW_TEAM_FAILURE
} from './constants'
import { LOAD_DASHBOARD_DETAIL_SUCCESS } from '../Dashboard/constants'
import { ActionTypes } from '../Display/constants'
import { fromJS } from 'immutable'

const initialState = fromJS({
Expand Down Expand Up @@ -115,6 +117,10 @@ function bizlogicReducer (state = initialState, action) {
return state.set('viewTeam', payload.result)
case LOAD_VIEW_TEAM_FAILURE:
return state
case LOAD_DASHBOARD_DETAIL_SUCCESS:
return state.set('bizlogics', payload.bizlogics)
case ActionTypes.LOAD_DISPLAY_DETAIL_SUCCESS:
return state.set('bizlogics', payload.bizlogics)
default:
return state
}
Expand Down
11 changes: 4 additions & 7 deletions webapp/app/containers/Dashboard/Grid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ import {
makeSelectCurrentLinkages
} from './selectors'
import {
loadBizlogics,
loadDataFromItem,
loadCascadeSource,
loadBizdataSchema,
Expand Down Expand Up @@ -165,7 +164,6 @@ interface IGridProps {
onEditDashboardItem: (item: IDashboardItem, resolve: () => void) => void
onEditDashboardItems: (item: IDashboardItem[]) => void
onDeleteDashboardItem: (id: number, resolve?: () => void) => void
onLoadBizlogics: (projectId: number, resolve?: any) => any
onLoadDataFromItem: (
renderType: RenderType,
dashboardItemId: number,
Expand Down Expand Up @@ -291,12 +289,10 @@ export class Grid extends React.Component<IGridProps, IGridStates> {

public componentWillMount () {
const {
onLoadBizlogics,
onLoadDashboardDetail,
params
} = this.props
const { pid, portalId, dashboardId } = params
onLoadBizlogics(pid)
if (dashboardId && Number(dashboardId) !== -1) {
onLoadDashboardDetail(pid, portalId, Number(dashboardId))
}
Expand Down Expand Up @@ -885,16 +881,18 @@ export class Grid extends React.Component<IGridProps, IGridStates> {
})
}
private currentWidgetInFullScreen = (id) => {
const {currentItems, currentItemsInfo, widgets} = this.props
const {currentItems, currentItemsInfo, widgets, bizlogics} = this.props
const item = currentItems.find((ci) => ci.id === id)
const widget = widgets.find((w) => w.id === item.widgetId)
const model = JSON.parse(bizlogics.find((b) => b.id === widget.viewId).model)
const data = currentItemsInfo[id]
const loading = currentItemsInfo['loading']
this.setState({
currentDataInFullScreen: {
itemId: id,
widgetId: widget.id,
widget,
model,
data,
loading,
onGetChartData: this.getChartData
Expand Down Expand Up @@ -1110,8 +1108,8 @@ export class Grid extends React.Component<IGridProps, IGridStates> {
} = currentItemsInfo[id]

const widget = widgets.find((w) => w.id === widgetId)
const interacting = interactingStatus[id] || false
const view = bizlogics.find((b) => b.id === widget.viewId)
const interacting = interactingStatus[id] || false
const drillHistory = currentItemsInfo[id]['queryParams']['drillHistory'] ? currentItemsInfo[id]['queryParams']['drillHistory'] : void 0

itemblocks.push((
Expand Down Expand Up @@ -1362,7 +1360,6 @@ export function mapDispatchToProps (dispatch) {
onEditDashboardItem: (item, resolve) => dispatch(editDashboardItem(item, resolve)),
onEditDashboardItems: (items) => dispatch(editDashboardItems(items)),
onDeleteDashboardItem: (id, resolve) => dispatch(deleteDashboardItem(id, resolve)),
onLoadBizlogics: (projectId, resolve) => dispatch(loadBizlogics(projectId, resolve)),
onLoadDataFromItem: (renderType, itemId, viewId, params) =>
dispatch(loadDataFromItem(renderType, itemId, viewId, params, 'dashboard')),
onClearCurrentDashboard: () => dispatch(clearCurrentDashboard()),
Expand Down
5 changes: 3 additions & 2 deletions webapp/app/containers/Dashboard/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,13 +233,14 @@ export function loadDashboardDetail (projectId, portalId, dashboardId) {
}
}

export function dashboardDetailLoaded (dashboardId, dashboardDetail, widgets) {
export function dashboardDetailLoaded (dashboardId, dashboardDetail, widgets, bizlogics) {
return {
type: LOAD_DASHBOARD_DETAIL_SUCCESS,
payload: {
dashboardId,
dashboardDetail,
widgets
widgets,
bizlogics
}
}
}
Expand Down
65 changes: 34 additions & 31 deletions webapp/app/containers/Dashboard/components/DashboardItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ const utilStyles = require('../../../assets/less/util.less')
interface IDashboardItemProps {
itemId: number
widget: any
view?: Partial<IView>
data: any
loading: boolean
polling: string
view?: IView
interacting: boolean
frequency: string
shareInfo: string
Expand All @@ -67,7 +67,7 @@ interface IDashboardItemProps {
router?: InjectedRouter
currentProject?: IProject
container?: string
onSelectDrillHistory: (history?: any, item?: number, itemId?: number, widgetId?: number) => void
onSelectDrillHistory?: (history?: any, item?: number, itemId?: number, widgetId?: number) => void
onGetChartData: (renderType: RenderType, itemId: number, widgetId: number, queryParams?: any) => void
onShowEdit?: (itemId: number) => (e: React.MouseEvent<HTMLSpanElement>) => void
onDeleteDashboardItem?: (itemId: number) => () => void
Expand All @@ -85,6 +85,7 @@ interface IDashboardItemStates {
controlPanelVisible: boolean
sharePanelAuthorized: boolean
widgetProps: IWidgetProps
model: IModel
isDrilling: boolean
dataDrillPanelPosition: boolean | object
whichDataDrillBrushed: boolean | object []
Expand All @@ -100,6 +101,7 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
controlPanelVisible: false,
sharePanelAuthorized: false,
widgetProps: null,
model: null,
isDrilling: false,
dataDrillPanelPosition: false,
whichDataDrillBrushed: false,
Expand All @@ -117,20 +119,24 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
private container: HTMLDivElement = null

public componentWillMount () {
const { itemId, widget, onGetChartData, container } = this.props
const { itemId, widget, view, onGetChartData, container } = this.props
if (container === 'share') {
onGetChartData('clear', itemId, widget.id)
this.setFrequent(this.props)
}
const widgetProps = JSON.parse(widget.config)
this.setState({
widgetProps: JSON.parse(widget.config)
widgetProps,
model: JSON.parse(view.model),
cacheWidgetProps: {...widgetProps}
})
}

public componentWillReceiveProps (nextProps) {
if (nextProps.widget !== this.props.widget) {
this.setState({
widgetProps: JSON.parse(nextProps.widget.config)
widgetProps: JSON.parse(nextProps.widget.config),
model: JSON.parse(nextProps.view.model)
})
}
}
Expand Down Expand Up @@ -215,9 +221,17 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
renderType,
onGetChartData
} = this.props
const chartsData = {itemId, widget, data, loading, renderType, onGetChartData}

if (onShowFullScreen) {
onShowFullScreen(chartsData)
onShowFullScreen({
itemId,
widget,
model: this.state.model,
data,
loading,
renderType,
onGetChartData
})
}
}

Expand Down Expand Up @@ -287,10 +301,7 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
}
}
}
public componentDidMount () {
const {widgetProps} = this.state
this.setState({cacheWidgetProps: {...widgetProps}})
}

private drillDataHistory = (history, item, itemId, widgetId) => {
const {onSelectDrillHistory, drillHistory} = this.props
const { widgetProps, cacheWidgetProps } = this.state
Expand Down Expand Up @@ -364,7 +375,6 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
widget,
data,
loading,
view,
interacting,
shareInfo,
secretInfo,
Expand All @@ -383,7 +393,8 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
const {
controlPanelVisible,
sharePanelAuthorized,
widgetProps
widgetProps,
model
} = this.state

let downloadButton
Expand Down Expand Up @@ -511,12 +522,6 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
<span style={{marginLeft: '8px', cursor: 'pointer'}} onClick={this.doDrill} className="iconfont icon-iconxiazuan"/>
</Tooltip>)

const chartClass = {
chart: styles.chartBlock,
table: styles.tableBlock,
container: styles.block
}

const gridItemClass = classnames({
[styles.gridItem]: true,
[styles.interact]: interacting
Expand All @@ -530,18 +535,15 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
})
}
const categoriesCol = []
if (view) {
const model: IModel = JSON.parse(view.model)
Object.entries(model).forEach(([key, m]) => {
if (m.modelType === 'category') {
categoriesCol.push({
name: key,
type: 'category',
visualType: m.visualType
})
}
})
}
Object.entries(model).forEach(([key, m]) => {
if (m.modelType === 'category') {
categoriesCol.push({
name: key,
type: 'category',
visualType: m.visualType
})
}
})

const dataDrillPanelClass = classnames({
[styles.dataDrillPanel]: true,
Expand Down Expand Up @@ -627,6 +629,7 @@ export class DashboardItem extends React.PureComponent<IDashboardItemProps, IDas
renderType={loading ? 'refresh' : renderType}
data={data}
loading={loading}
model={model}
onCheckTableInteract={this.checkTableInteract}
onDoInteract={this.doInteract}
getDataDrillDetail={this.getDataDrillDetail}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as echarts from 'echarts/lib/echarts'
import DashboardItemControlForm from '../DashboardItemControlForm'
import {iconMapping, echartsOptionsGenerator} from '../../../Widget/components/chartUtil'
import Chart from '../Chart'
import { IModel } from '../../../Widget/components/Workbench/index'
import Widget from '../../../Widget/components/Widget/WidgetInViz'
import {ECHARTS_RENDERER} from '../../../../globalConstants'
const styles = require('./fullScreenPanel.less')
Expand All @@ -17,11 +18,12 @@ interface IFullScreenPanelProps {
loading?: any
renderType?: string
widget?: any
model?: IModel
itemId?: number
onGetChartData?: any
}
currentItems?: any[]
widgets: any
widgets: any[]
currentDatasources: boolean | object
currentDashboard: {
widgets?: any[]
Expand Down Expand Up @@ -160,6 +162,7 @@ class FullScreenPanel extends React.PureComponent<IFullScreenPanelProps, IFullSc
{...widgetProps}
renderType="rerender"
data={data && data.datasource ? data.datasource : []}
model={currentDataInFullScreen.model}
/>
)
:
Expand Down
5 changes: 3 additions & 2 deletions webapp/app/containers/Dashboard/sagas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -155,9 +155,10 @@ export function* getDashboardDetail ({ payload }) {
try {
const result = yield all({
dashboardDetail: call(request, `${api.portal}/${portalId}/dashboards/${dashboardId}`),
widgets: call(request, `${api.widget}?projectId=${projectId}`)
widgets: call(request, `${api.widget}?projectId=${projectId}`),
bizlogics: call(request, `${api.bizlogic}?projectId=${projectId}`)
})
yield put(dashboardDetailLoaded(dashboardId, result.dashboardDetail.payload, result.widgets.payload))
yield put(dashboardDetailLoaded(dashboardId, result.dashboardDetail.payload, result.widgets.payload, result.bizlogics.payload))
} catch (err) {
yield put(loadDashboardDetailFail())
errorHandler(err)
Expand Down
20 changes: 7 additions & 13 deletions webapp/app/containers/Display/Editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@ const styles = require('./Display.less')
import { IWidgetProps, RenderType } from '../Widget/components/Widget'
import { decodeMetricName } from '../Widget/components/util'
import {
loadBizlogics,
loadDataFromItem,
loadCascadeSource, // TODO global filter in Display
loadBizdataSchema } from '../Bizlogic/actions'
Expand Down Expand Up @@ -145,12 +144,10 @@ interface IEditorProps extends RouteComponentProps<{}, IParams> {
currentState
nextState
editorBaselines: IBaseline[]
onLoadWidgets: (projectId) => void
onLoadBizlogics: (projectId, resolve?: any) => any
onEditCurrentDisplay: (display: any, resolve?: any) => void
onEditCurrentSlide: (displayId: number, slide: any, resolve?: any) => void
onUploadCurrentSlideCover: (cover: Blob, resolve: any) => void
onLoadDisplayDetail: (id: number) => void
onLoadDisplayDetail: (projectId: number, displayId: number) => void
onSelectLayer: (obj: { id: any, selected: boolean, exclusive: boolean }) => void
onClearLayersSelection: () => void
onDragSelectedLayer: (id: number, deltaX: number, deltaY: number) => void
Expand Down Expand Up @@ -227,15 +224,11 @@ export class Editor extends React.Component<IEditorProps, IEditorStates> {
public componentWillMount () {
const {
params,
onLoadWidgets,
onLoadBizlogics,
onLoadDisplayDetail
} = this.props
const projectId = +params.pid
const displayId = +params.displayId
// onLoadBizlogics(projectId)
onLoadDisplayDetail(displayId)
onLoadWidgets(projectId)
onLoadDisplayDetail(projectId, displayId)
}

public componentDidMount () {
Expand Down Expand Up @@ -767,6 +760,7 @@ export class Editor extends React.Component<IEditorProps, IEditorStates> {
currentLayersOperationInfo,
currentSelectedLayers,
widgets,
bizlogics,
currentDisplay,
onSelectLayer,
onLoadDisplayShareLink,
Expand All @@ -786,8 +780,9 @@ export class Editor extends React.Component<IEditorProps, IEditorStates> {

if (!currentDisplay) { return null }

const layerItems = !Array.isArray(widgets) ? null : currentLocalLayers.map((layer, idx) => {
const layerItems = !Array.isArray(widgets) ? null : currentLocalLayers.map((layer, idx) => {
const widget = widgets.find((w) => w.id === layer.widgetId)
const view = widget && bizlogics.find((b) => b.id === widget.viewId)
const layerId = layer.id

const { polling, frequency } = JSON.parse(layer.params)
Expand All @@ -807,6 +802,7 @@ export class Editor extends React.Component<IEditorProps, IEditorStates> {
dragging={dragging}
itemId={layerId}
widget={widget}
view={view}
data={datasource}
loading={loading}
polling={polling}
Expand Down Expand Up @@ -937,9 +933,7 @@ const mapStateToProps = createStructuredSelector({

function mapDispatchToProps (dispatch) {
return {
onLoadDisplayDetail: (id) => dispatch(loadDisplayDetail(id)),
onLoadWidgets: (projectId) => dispatch(loadWidgets(projectId)),
onLoadBizlogics: (projectId, resolve) => dispatch(loadBizlogics(projectId, resolve)),
onLoadDisplayDetail: (projectId, displayId) => dispatch(loadDisplayDetail(projectId, displayId)),
onEditCurrentDisplay: (display, resolve?) => dispatch(editCurrentDisplay(display, resolve)),
onEditCurrentSlide: (displayId, slide, resolve?) => dispatch(editCurrentSlide(displayId, slide, resolve)),
onUploadCurrentSlideCover: (cover, resolve) => dispatch(uploadCurrentSlideCover(cover, resolve)),
Expand Down
Loading