datagear使用记录

datagear图表开发

当前文档仅是对datagear的前端开发作些说明, 因为图表的个性配置较多,基本上所有的图表都使用了自定义渲染器的方式

为了方便对数据的处理,页面中还引入了vue

一、 引入资源

下面动图展示了如何在看板中引入资源

  1. 示例代码(js部分)
<script type="text/javascript" src="res/js/vue.min.js"></script>
<script type="text/javascript" src="res/js/element-ui.min.js"></script>
<script type="text/javascript" src="res/js/customOptions.js"></script>
<script>
Vue.use(ELEMENT, { size: 'small' })
const vm = new Vue({
    el: '#app',
    data: function() {
        return {
            carData: {
                inCarNum: 0,
                outCarNum: 0,
                totalSpace: 0,
                inMonthCardNum: 0
            },
            areaInfo: {
                current: 'map',
                mapItems: [
                    { name: '在管面积', num: 0, unit: '万㎡' },
                    { name: '客户数量', num: 0, unit: '个' }
                ],
                industrialInfos: [
                    // { name: '写字楼', num: 0, unit: '万㎡', color: '#0263ff' },
                    // { name: '商铺', num: 0, unit: '万㎡', color: '#00eb9b' },
                    // { name: '产业园区', num: 0, unit: '万㎡', color: '#dd1116' },
                    // { name: '公租房', num: 0, unit: '万㎡', color: '#ecf1b0' },
                    // { name: '其他', num: 0, unit: '万㎡', color: '#f3b1ef' }
                ]
            }
        }
    }
})
</script>
  1. 自定义渲染器-非echarts图表展示数据
    开发思路:绑定图表去获取数据,通过自定义渲染器对返回的数据进行处理,如展示在页面

这个绑定的图表我们用样式将其隐藏,只使用它返回的数据

<!-- 客户数和在管面积 -->
<div dg-chart-widget="b78c1e5c21843c475dd7" dg-chart-renderer="areaRenderer" style="display:none"></div>

<script>
// 客户数量和在管面积
let areaRenderer = 
{
    render: function(chart){},
    update: function(chart, results) {
        let chartDataSet = chart.chartDataSetMain()
        let datas = chart.resultDatasOf(results, chartDataSet)
        let first = datas[0]
        vm.areaInfo.mapItems[0].num = first.minimumAreas // 拿到返回的数据后赋值给vue实例的数据
    }
}
</script>
  1. 自定义图表并传递参数
<div class="panel">
    <div class="title"><label>各业态资源出租情况</label></div>                   
    <div class="chart" dg-chart-listener="myChartListener" id="myChartResourceRent" dg-chart-renderer="myChartRentRenderer" dg-chart-widget="08ab69a8d1843b968305"></div>
</div>

<script>
    const myChartListener =
    {
        render: function(chart) {
            let ten = (dashboard.renderContextAttr("tenant_id") || 58 )
            chart.dataSetParamValue(0, "tenant_id", ten * 1)
        }
    }

    // 自定义图表渲染器
    let myChartRentRenderer = {
        render: function (chart) {
            let chartDataSet = chart.chartDataSetMain()
            chart.dataSetParamValue(chartDataSet, 'tenant_id', 58)
            let config = {
                tooltip: { unit: '万㎡', tipName: '出租率' },
                // xAxis: {
                //  data: ['商铺', '产业园区', '公租房', '写字楼', '其他']
                // },
                yAxis: {
                    unitName: '单位:万㎡'
                }
            }
            let options = customBarOptions(config)
            //初始化ECharts
            chart.echartsInit(options)
        },
        update: function (chart, results) {
            let chartDataSet = chart.chartDataSetMain()
            let datas = chart.resultDatasOf(results, chartDataSet); // 拿到返回的数据
            let [nameArr, seriesData, seriesData2 ] = [[], [], []]
            datas.forEach(x => {
                nameArr.push(x.propertyStatusName ? x.propertyStatusName : '其他')
                seriesData.push(x.propertyChargeArea)
                seriesData2.push(x.emptyArea)
            })
            var options = chart.inflateUpdateOptions(results, {
                xAxis: { data: nameArr },
                series: [{ data: seriesData }, { data: seriesData2 }]
            })
            //更新图表数据
            chart.echartsOptions(options)
        }
    }

    function refreshChart(chartId, query) {
        var chart = dashboard.chartOf(chartId);
        var cds = chart.chartDataSetMain();
        chart.dataSetParamValues(cds, {...query});
        chart.refreshData();
    }

    setTimeout(() => {
        var ten = (dashboard.renderContextAttr("tenant_id") || 58 ) * 1
        refreshChart('myChartResourceRent', { tenant_id: ten })
    }, 500)
</script>
  1. 使用样式将参数隐藏
.dg-chart-setting-box {
    display: none !important;
}
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容