| <!DOCTYPE html> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one | |
| or more contributor license agreements. See the NOTICE file | |
| distributed with this work for additional information | |
| regarding copyright ownership. The ASF licenses this file | |
| to you under the Apache License, Version 2.0 (the | |
| "License"); you may not use this file except in compliance | |
| with the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, | |
| software distributed under the License is distributed on an | |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations | |
| under the License. | |
| --> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <script src="lib/simpleRequire.js"></script> | |
| <script src="lib/config.js"></script> | |
| <script src="lib/jquery.min.js"></script> | |
| <script src="lib/facePrint.js"></script> | |
| <script src="lib/testHelper.js"></script> | |
| <script src="lib/canteen.js"></script> | |
| <link rel="stylesheet" href="lib/reset.css" /> | |
| </head> | |
| <body> | |
| <style> | |
| </style> | |
| <div id="Legacy_compat_test"></div> | |
| <div id="insideFill_Stroke_auto_test"></div> | |
| <div id="textConfig_other_feature_test"></div> | |
| <div id="insideFill_Stroke_hover_test"></div> | |
| <div id="z_order_test"></div> | |
| <div id="hover_style_disable"></div> | |
| <div id="hover_style_remove"></div> | |
| <!-- Utils ----------------------------------------------- --> | |
| <script> | |
| function createMaker(opt) { | |
| opt = opt || {}; | |
| var xStart = opt.xCurr || 80; | |
| var xCurr = xStart; | |
| var yStart = opt.yCurr || 20; | |
| var yCurr = yStart; | |
| var xStep = opt.xStep || 100; | |
| var yStep = opt.yStep || 65; | |
| var colCount = 0; | |
| var yMax = 0; | |
| var maxCol = opt.maxCol || Infinity; | |
| var children = []; | |
| function createRectShape(width, height) { | |
| width = width || 20; | |
| height = height || 30; | |
| return {x: -width / 2, y: 0, width: width, height: height}; | |
| } | |
| function makeGraphic(text, creators) { | |
| var y = yCurr; | |
| children.push({ | |
| type: 'text', x: xCurr, y: y, | |
| style: {text: text, fill: '#900', align: 'center', fontSize: 10} | |
| }); | |
| y += yStep; | |
| for (var i = 0; i < creators.length; i++) { | |
| children.push(creators[i](xCurr, y)); | |
| y += yStep; | |
| } | |
| xCurr += xStep; | |
| yMax = Math.max(y, yMax); | |
| colCount++; | |
| if (colCount >= maxCol) { | |
| colCount = 0; | |
| xCurr = xStart; | |
| yCurr = yMax + yStep * 0.7; | |
| } | |
| } | |
| return { | |
| makeGraphic: makeGraphic, | |
| createRectShape: createRectShape, | |
| children: children | |
| }; | |
| } | |
| // opt: {globalColor, backgroundColor} | |
| function createOption(renderItem, opt) { | |
| return { | |
| animation: false, | |
| backgroundColor: opt && opt.backgroundColor, | |
| color: opt && opt.globalColor, | |
| xAxis: {axisLine: {lineStyle: {color: 'rgba(0,0,0,0.2)'}}, axisLabel: {show: false}, splitLine: {show: false}}, | |
| yAxis: {axisLine: {lineStyle: {color: 'rgba(0,0,0,0.2)'}}, axisLabel: {show: false}, splitLine: {show: false}}, | |
| grid: {left: 30}, | |
| series: { | |
| type: 'custom', | |
| renderItem: renderItem, | |
| data: [[1, 1]] | |
| } | |
| }; | |
| } | |
| </script> | |
| <!-- --------------------------------------------------- --> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| function renderItem(params, api) { | |
| var maker = createMaker({xStep: 120, yStep: 60, maxCol: 5}); | |
| var makeGraphic = maker.makeGraphic; | |
| var createRectShape = maker.createRectShape; | |
| makeGraphic([ | |
| 'normal: green rect', 'inside orange' | |
| ].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: { | |
| // textPosition not set but by default 'inside' | |
| text: 'legacy1', fill: 'green', textFill: 'orange' | |
| } | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {style: {text: 'ec5_api', fill: 'orange'}}, | |
| textConfig: {position: 'inside'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic([ | |
| 'normal: green rect', 'inside orange', 'text is number 0', 'should be displayed' | |
| ].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: { | |
| // text is number 0, can be displayed | |
| text: 0, fill: 'green', textFill: 'orange' | |
| } | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {style: {text: 0, fill: 'orange'}}, | |
| textConfig: {position: 'inside'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic([ | |
| 'normal: green rect', 'inside white/bordered', 'hover: red rect', 'inside white/bordered' | |
| ].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0'}), | |
| styleEmphasis: {fill: 'red'} | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: { | |
| text: 'legacy1', fill: 'green', textPosition: 'inside', | |
| textFill: '#fff', textStroke: 'green', textStrokeWidth: 2 | |
| }, | |
| styleEmphasis: {fill: 'red'} | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {style: {text: 'ec5_api'}}, | |
| textConfig: {position: 'inside'}, | |
| emphasis: {style: {fill: 'red'}} | |
| }; | |
| } | |
| ]); | |
| makeGraphic([ | |
| 'normal: green rect', 'bottom green', 'hover: red rect', 'bottom green' | |
| ].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0', textPosition: 'bottom'}), | |
| styleEmphasis: {fill: 'red'} | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {style: {text: 'ec5_api'}}, | |
| textConfig: {position: 'bottom', outsideFill: 'green'}, | |
| emphasis: {style: {fill: 'red'}} | |
| }; | |
| } | |
| ]); | |
| makeGraphic([ | |
| 'green rect', 'normal: inside white/bordered', 'hover: inside red' | |
| ].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0'}), | |
| styleEmphasis: {textFill: 'red'} | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: { | |
| text: 'legacy1', fill: 'green', textPosition: 'inside', | |
| textFill: '#fff', textStroke: 'green', textStrokeWidth: 2 | |
| }, | |
| styleEmphasis: {textFill: 'red'} | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: { | |
| style: {text: 'ec5_api'}, | |
| emphasis: {style: {fill: 'red', stroke: 'green', lineWidth: 2}} | |
| }, | |
| textConfig: {position: 'inside'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic([ | |
| 'green rect', 'normal: bottom red', 'hover: bottom blue' | |
| ].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0', textPosition: 'bottom', textFill: 'red'}), | |
| styleEmphasis: {textFill: 'blue'} | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: { | |
| style: {text: 'ec5_api', fill: 'red'}, | |
| emphasis: {style: {fill: 'blue'}} | |
| }, | |
| textConfig: {position: 'bottom'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic(['green rect', 'normal: inside white/borded', 'hover: bottom'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0'}), | |
| // Hover not compat to ec4 (to complicated) | |
| styleEmphasis: {textPosition: 'bottom'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic(['green rect', 'normal: inside red', 'hover: bottom red'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0', textFill: 'red'}), | |
| styleEmphasis: {textPosition: 'bottom'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic(['green rect', 'normal: inside white', 'hover: bottom red'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0', textFill: 'white'}), | |
| styleEmphasis: {textFill: 'red', textPosition: 'bottom'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic(['green rect', 'normal: inside white/bordered', 'hover: auto lift'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0'}) | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {style: {text: 'ec5_api'}}, | |
| textConfig: {position: 'inside'} | |
| }; | |
| } | |
| ]); | |
| makeGraphic(['green rect', 'normal: bottom green', 'hover: auto lift'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', position: [x, y], shape: createRectShape(), | |
| style: api.style({text: 'legacy0', textPosition: 'bottom'}) | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {style: {text: 'ec5_api', fill: 'green'}}, | |
| textConfig: {position: 'bottom'} | |
| }; | |
| } | |
| ]); | |
| return { | |
| type: 'group', | |
| children: maker.children | |
| }; | |
| } | |
| var chart = testHelper.create(echarts, 'Legacy_compat_test', { | |
| title: [ | |
| 'Legacy compat test', | |
| 'Each column rects are the same effect implemented by', | |
| 'legacy API and corresponding new API.', | |
| 'So **each column** must be **the same result**', | |
| '(except text string and some ec5 enhancement).', | |
| '**Hover** also needs to be tested' | |
| ], | |
| height: 550, | |
| option: createOption(renderItem, {globalColor: ['green']}) | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| function renderItem() { | |
| var maker = createMaker({maxCol: 5}); | |
| var makeGraphic = maker.makeGraphic; | |
| var createRectShape = maker.createRectShape; | |
| // opt for example: | |
| // opt.type | |
| // opt.shape | |
| // opt.textConfig: {}, | |
| // opt.textContent: {}, if rich: textContent.style: {rich: {i: xxx}} | |
| // opt.emphasis: {} | |
| // opt.extraTitle: string[] | |
| function makeTest(opt) { | |
| var isRich = opt.textContent.style.rich; | |
| var type = opt.type || 'rect'; | |
| var shape = opt.shape || createRectShape(40, 120); | |
| var title = ['green rect', (isRich ? 'rich text' : 'plain text')]; | |
| opt.extraTitle && (title = title.concat(opt.extraTitle)); | |
| makeGraphic(title.join('\n'), [ | |
| function (x, y) { | |
| var result = { | |
| type: type, x: x, y: y, shape: shape, style: {fill: 'green'}, | |
| textConfig: opt.textConfig, | |
| textContent: opt.textContent | |
| } | |
| if (opt.emphasis) { | |
| result.emphasis = opt.emphasis; | |
| } | |
| return result; | |
| } | |
| ]); | |
| } | |
| makeTest({ | |
| textConfig: {position: 'insideTop', rotation: -0.5 * Math.PI}, | |
| textContent: {style: { | |
| text: '90 rotated text align with:\nv: top h: middle\ndefault distance', | |
| align: 'left', verticalAlign: 'middle' | |
| }} | |
| }); | |
| makeTest({ | |
| textConfig: {position: 'insideTop', rotation: -0.5 * Math.PI, distance: 0}, | |
| textContent: {style: { | |
| text: '90 rotated text align with:\n v: top h: middle\nno distance', | |
| align: 'left', verticalAlign: 'middle' | |
| }} | |
| }); | |
| makeTest({ | |
| textConfig: {position: 'insideTop', rotation: -0.5 * Math.PI, distance: 0, offset: [0, -25]}, | |
| textContent: {style: { | |
| text: '90 rotated text outside right rect\nalign top', | |
| fill: '#700', | |
| align: 'left', verticalAlign: 'bottom' | |
| }} | |
| }); | |
| makeTest({ | |
| textConfig: {position: 'insideTop', rotation: -0.5 * Math.PI}, | |
| textContent: {style: { | |
| text: '90 rotated text align with:\n{i|v: top h: middle}\n{a|align right}', | |
| align: 'left', verticalAlign: 'middle', | |
| rich: { | |
| i: {fontSize: 20, fill: 'orange'}, | |
| a: {align: 'right'} | |
| } | |
| }} | |
| }); | |
| makeTest({ | |
| extraTitle: ['emphasis:\nalign/verticalAlign rollback'], | |
| textConfig: {position: 'left'}, | |
| textContent: { | |
| style: { | |
| text: '--------\nalign\nright\n----', | |
| fill: '#700' | |
| } | |
| }, | |
| emphasis: { | |
| textConfig: {position: null} | |
| } | |
| }); | |
| makeTest({ | |
| type: 'circle', | |
| shape: {cx: 0, cy: 20, r: 30}, | |
| textConfig: { | |
| position: 'right', | |
| }, | |
| textContent: { | |
| rotation: -0.3 * Math.PI, | |
| originX: -35, | |
| style: { | |
| text: 'Rotate, outside, origin is center', | |
| fontSize: 20, | |
| fill: '#700', | |
| align: 'left', | |
| verticalAlign: 'middle' | |
| } | |
| } | |
| }); | |
| makeTest({ | |
| type: 'circle', | |
| shape: {cx: 0, cy: 20, r: 30}, | |
| textConfig: { | |
| position: 'inside', offset: [35, 0] | |
| }, | |
| textContent: { | |
| rotation: -0.3 * Math.PI, | |
| style: { | |
| text: 'Rotate, outside, origin is center', | |
| fontSize: 20, | |
| fill: '#700', | |
| align: 'left', | |
| verticalAlign: 'middle' | |
| } | |
| } | |
| }); | |
| return { | |
| type: 'group', | |
| children: maker.children | |
| }; | |
| } | |
| var chart = testHelper.create(echarts, 'textConfig_other_feature_test', { | |
| title: [ | |
| 'textConfig other feature test' | |
| ], | |
| option: createOption(renderItem), | |
| // recordCanvas: true, | |
| height: 800 | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| function renderItem() { | |
| var maker = createMaker({maxCol: 6}); | |
| var makeGraphic = maker.makeGraphic; | |
| var createRectShape = maker.createRectShape; | |
| // opt for example: | |
| // opt.textConfig: {}, | |
| // opt.textContentStyle: {}, if rich: textContentStyle: {rich: {i: xxx}} | |
| // opt.expect: [ {fill: 'white', stroke: 'green'}, {fill: 'white', stroke: 'green'} ] | |
| function makeTest(opt) { | |
| var expect0 = opt.expect[0]; | |
| var expect1 = opt.expect[1]; | |
| var isRich = opt.textContentStyle.rich; | |
| makeGraphic(['green rect', (isRich ? 'rich text' : 'plain text')].join('\n'), [ | |
| function (x, y) { | |
| var text = [ | |
| isRich ? '{i|inside}' : 'inside', | |
| 'fill: ' + expect0.fill, | |
| 'stroke: ' + expect0.stroke | |
| ].join('\n'); | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), style: {fill: 'green'}, | |
| textConfig: echarts.util.extend({position: 'inside'}, opt.textConfig), | |
| textContent: { | |
| style: echarts.util.extend({text: text}, opt.textContentStyle) | |
| } | |
| } | |
| }, | |
| function (x, y) { | |
| var text = [ | |
| isRich ? '{i|bottom}' : 'bottom', | |
| 'fill: ' + expect1.fill, | |
| 'stroke: ' + expect1.stroke | |
| ].join('\n'); | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), style: {fill: 'green'}, | |
| textConfig: echarts.util.extend({position: 'bottom'}, opt.textConfig), | |
| textContent: { | |
| style: echarts.util.extend({text: text}, opt.textContentStyle) | |
| } | |
| } | |
| } | |
| ]); | |
| } | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {}, | |
| expect: [ | |
| {fill: 'white', stroke: 'green'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {backgroundColor: '#aaa'}, | |
| expect: [ | |
| {fill: 'white', stroke: 'none'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {borderColor: '#aaa', borderWidth: 2, padding: 5}, | |
| expect: [ | |
| {fill: 'white', stroke: 'none'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {rich: {i: {fontSize: 30}}}, | |
| expect: [ | |
| {fill: 'white', stroke: 'green'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {rich: {i: {backgroundColor: '#aaa'}}}, | |
| expect: [ | |
| {fill: 'white', stroke: 'none'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {rich: {i: {borderColor: '#aaa', borderWidth: 2, fontSize: 20}}}, | |
| expect: [ | |
| {fill: 'white', stroke: 'none'}, | |
| {fill: 'black', stroke: 'green'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {fill: 'orange'}, | |
| expect: [ | |
| {fill: 'orange', stroke: 'none'}, | |
| {fill: 'orange', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {fill: 'orange', stroke: 'blue', lineWidth: 2}, | |
| expect: [ | |
| {fill: 'orange', stroke: 'blue'}, | |
| {fill: 'orange', stroke: 'blue'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {}, | |
| textContentStyle: {stroke: 'blue', lineWidth: 2}, | |
| expect: [ | |
| {fill: 'white', stroke: 'blue'}, | |
| {fill: 'black', stroke: 'blue'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {insideFill: 'yellow'}, | |
| textContentStyle: {}, | |
| expect: [ | |
| {fill: 'yellow', stroke: 'green'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {insideFill: 'yellow'}, | |
| textContentStyle: {fill: 'orange'}, | |
| expect: [ | |
| {fill: 'orange', stroke: 'none'}, | |
| {fill: 'orange', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {insideFill: 'yellow', insideStroke: 'blue'}, | |
| textContentStyle: {}, | |
| expect: [ | |
| {fill: 'yellow', stroke: 'blue'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {insideFill: 'yellow', insideStroke: 'blue'}, | |
| textContentStyle: {fill: 'pink'}, | |
| expect: [ | |
| {fill: 'pink', stroke: 'blue'}, | |
| {fill: 'pink', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {insideStroke: 'blue'}, | |
| textContentStyle: {}, | |
| expect: [ | |
| {fill: 'white', stroke: 'blue'}, | |
| {fill: 'black', stroke: 'none'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {outsideFill: 'blue', outsideStroke: 'red'}, | |
| textContentStyle: {}, | |
| expect: [ | |
| {fill: 'white', stroke: 'green'}, | |
| {fill: 'blue', stroke: 'red'} | |
| ] | |
| }); | |
| makeTest({ | |
| textConfig: {outsideFill: 'blue', outsideStroke: 'red'}, | |
| textContentStyle: {fill: 'pink'}, | |
| expect: [ | |
| {fill: 'pink', stroke: 'none'}, | |
| {fill: 'pink', stroke: 'red'} | |
| ] | |
| }); | |
| return { | |
| type: 'group', | |
| children: maker.children | |
| }; | |
| } | |
| var chart = testHelper.create(echarts, 'insideFill_Stroke_auto_test', { | |
| title: [ | |
| 'insideFill/insideStroke outsideFill/outsideStroke auto rule test' | |
| ], | |
| option: createOption(renderItem, {backgroundColor: '#ddd'}), | |
| height: 800 | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| function renderItem(params, api) { | |
| var maker = createMaker({xCurr: 150, xStep: 150, yStep: 90}); | |
| var makeGraphic = maker.makeGraphic; | |
| var createRectShape = maker.createRectShape; | |
| makeGraphic(['insideFill/Stroke not set', 'normal: white/bordered'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: { | |
| type: 'text', silent: true, style: { | |
| text: 'if hover,\ntop black' | |
| } | |
| }, | |
| textConfig: {position: 'inside'}, | |
| emphasis: { | |
| textConfig: {position: 'top'} | |
| } | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {type: 'text', silent: true, style: {text: 'if hover,\nright green'}}, | |
| textConfig: { | |
| position: 'inside', outsideFill: 'green' | |
| }, | |
| emphasis: { | |
| textConfig: {position: 'right'} | |
| } | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: { | |
| silent: true, style: {text: 'if hover,\nbottom\nlarge bordered red'}, | |
| emphasis: {style: {fontSize: 20}} | |
| }, | |
| textConfig: { | |
| position: 'inside', outsideFill: 'green', outsideStroke: 'red' | |
| }, | |
| emphasis: { | |
| textConfig: {position: 'bottom'} | |
| } | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: { | |
| silent: true, | |
| style: { | |
| text: 'rich text\nif hover,\nbottom black\n{r|normal orange\nhover red}', | |
| rich: {r: {fontSize: 16, fill: 'orange'}}, | |
| }, | |
| emphasis: { | |
| style: { | |
| rich: {r: {fill: 'red'}} | |
| } | |
| } | |
| }, | |
| textConfig: {position: 'inside'}, | |
| emphasis: { | |
| textConfig: {position: 'bottom'} | |
| } | |
| }; | |
| } | |
| ]); | |
| makeGraphic(['green rect'].join('\n'), [ | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: {silent: true, style: { | |
| text: 'normal:\ninside yellow/bordered\nhover:\ntop black' | |
| }}, | |
| textConfig: {position: 'inside', insideFill: 'yellow'}, | |
| emphasis: { | |
| textConfig: {position: 'top'} | |
| } | |
| }; | |
| }, | |
| function (x, y) { | |
| return { | |
| type: 'rect', x: x, y: y, shape: createRectShape(), | |
| style: {fill: 'green'}, | |
| textContent: { | |
| silent: true, | |
| style: {text: 'normal:\ninside white/bordered\nhover:\nright green'} | |
| }, | |
| textConfig: { | |
| position: 'inside', outsideFill: 'green' | |
| }, | |
| emphasis: { | |
| textConfig: {position: 'right'} | |
| } | |
| }; | |
| } | |
| ]); | |
| return { | |
| type: 'group', | |
| children: maker.children | |
| }; | |
| } | |
| var chart = testHelper.create(echarts, 'insideFill_Stroke_hover_test', { | |
| title: [ | |
| 'insideFill/Stroke & hover test. Please **hover any of them**' | |
| ], | |
| option: createOption(renderItem), | |
| height: 600 | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| function renderItem(params, api) { | |
| return { | |
| type: 'group', | |
| children: [{ | |
| type: 'circle', | |
| shape: {cx: 100, cy: 100, r: 50}, | |
| style: {fill: 'red'}, | |
| z2: 100, | |
| // textContent do not set z2, but auto follow the circle z2. | |
| textContent: { | |
| type: 'text', | |
| style: { | |
| text: 'normal: {red|red} is over {green|green}.\nHover me', | |
| // stroke: '#fff', lineWidth: 2, | |
| rich: { | |
| red: {fill: 'red', stroke: '#fff', lineWidth: 2, fontSize: 20}, | |
| green: {fill: 'green', stroke: '#fff', lineWidth: 2, fontSize: 20} | |
| }, | |
| }, | |
| silent: true, | |
| emphasis: { | |
| style: { | |
| text: 'emphasis: {green|green} over {red|red}\nText {below|below} green', | |
| rich: { | |
| below: {fontSize: 40} | |
| } | |
| } | |
| } | |
| }, | |
| textConfig: { | |
| position: 'inside' | |
| } | |
| }, { | |
| type: 'circle', | |
| shape: {cx: 100, cy: 140, r: 40}, | |
| style: {fill: 'green'}, | |
| // textContent do not set z2, but auto follow the circle z2. | |
| textContent: { | |
| type: 'text', | |
| style: { | |
| text: 'text should be always\n{over|over} all circles.', | |
| rich: {over: {fontSize: 30}} | |
| }, | |
| silent: true | |
| }, | |
| textConfig: { | |
| position: 'inside' | |
| }, | |
| z2: 80, | |
| emphasis: { | |
| z2: 110 | |
| } | |
| }, { | |
| type: 'circle', | |
| shape: {cx: 300, cy: 100, r: 50}, | |
| style: {fill: 'red'}, | |
| z2: 100, | |
| // textContent do not set z2, but auto follow the circle z2. | |
| textContent: { | |
| type: 'text', | |
| style: { | |
| text: 'normal: {red|red} is over {green|green}.\nHover me', | |
| // stroke: '#fff', lineWidth: 2, | |
| rich: { | |
| red: {fill: 'red', stroke: '#fff', lineWidth: 2, fontSize: 20}, | |
| green: {fill: 'green', stroke: '#fff', lineWidth: 2, fontSize: 20} | |
| }, | |
| }, | |
| silent: true, | |
| emphasis: { | |
| style: { | |
| text: 'emphasis: {red|red} over {green|green}\nText {below|over} green', | |
| rich: { | |
| below: {fontSize: 40} | |
| } | |
| } | |
| } | |
| }, | |
| textConfig: { | |
| position: 'inside' | |
| } | |
| }, { | |
| type: 'circle', | |
| shape: {cx: 300, cy: 140, r: 40}, | |
| style: {fill: 'green'}, | |
| // textContent do not set z2, but auto follow the circle z2. | |
| textContent: { | |
| type: 'text', | |
| style: { | |
| text: 'text should be always\n{over|over} all circles.', | |
| rich: {over: {fontSize: 30}} | |
| }, | |
| silent: true, | |
| emphasis: { | |
| z2: 110 | |
| } | |
| }, | |
| textConfig: { | |
| position: 'inside' | |
| }, | |
| z2: 80 | |
| }] | |
| }; | |
| } | |
| var chart = testHelper.create(echarts, 'z_order_test', { | |
| title: [ | |
| 'z order test. Please **hover any of them**.' | |
| ], | |
| option: createOption(renderItem) | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| var option = { | |
| xAxis: {scale: true, min: 0.75, max: 3}, | |
| yAxis: {}, | |
| series: [{ | |
| type: 'custom', | |
| renderItem: function (params, api) { | |
| var shape0 = {x: 0, y: 30, width: 100, height: 50}; | |
| var shape1 = {x: 30, y: 50, width: 100, height: 50}; | |
| var shape2 = {x: 60, y: 70, width: 100, height: 50}; | |
| var position = api.coord([api.value(0), api.value(1)]); | |
| var name = api.value(2); | |
| var map = { | |
| legacy: { | |
| type: 'group', | |
| x: position[0], | |
| y: position[1], | |
| children: [{ | |
| type: 'rect', | |
| shape: shape0, | |
| style: {fill: '#333'} | |
| }, { | |
| type: 'rect', | |
| shape: shape1, | |
| style: { | |
| fill: '#555', | |
| text: 'has inner text', | |
| textFill: 'white', | |
| textPostion: 'insideTop' | |
| }, | |
| styleEmphasis: {textFill: 'yellow'} | |
| }, { | |
| type: 'rect', | |
| shape: shape2, | |
| style: {fill: '#500'}, | |
| styleEmphasis: false | |
| }] | |
| }, | |
| ec5: { | |
| type: 'group', | |
| x: position[0], | |
| y: position[1], | |
| children: [{ | |
| type: 'rect', | |
| shape: shape0, | |
| style: {fill: '#333'}, | |
| }, { | |
| type: 'rect', | |
| shape: shape1, | |
| style: {fill: '#555', text: 'has inner text'}, | |
| textContent: { | |
| style: {fill: 'white'}, | |
| emphasis: {style: {fill: 'yellow'}} | |
| }, | |
| textConfig: {position: 'insideTop'} | |
| }, { | |
| type: 'rect', | |
| shape: shape2, | |
| style: {fill: '#500'}, | |
| emphasis: { | |
| // set false to disable lift color and z2. | |
| style: false | |
| } | |
| }] | |
| } | |
| }; | |
| return map[name]; | |
| }, | |
| data: [[1, 1, 'legacy'], [2, 1, 'ec5']] | |
| }] | |
| }; | |
| var chart = testHelper.create(echarts, 'hover_style_disable', { | |
| title: [ | |
| 'Hover style disable: hover each group of elements,', | |
| 'all of the elements should lift color and z2 **except the red rect**' | |
| ], | |
| height: 300, | |
| option: option | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require(['echarts'], function (echarts) { | |
| var option = { | |
| xAxis: {scale: true, min: 0.75, max: 3}, | |
| yAxis: {}, | |
| series: [{ | |
| type: 'custom', | |
| renderItem: function (params, api) { | |
| var shape0 = {x: 00, y: 30, width: 100, height: 50}; | |
| var shape1 = {x: 30, y: 50, width: 100, height: 50}; | |
| var shape2 = {x: 60, y: 70, width: 100, height: 50}; | |
| var position = api.coord([api.value(0), api.value(1)]); | |
| var name = api.value(2); | |
| var useHover = !!api.value(3); | |
| var map = { | |
| legacy: { | |
| type: 'group', | |
| x: position[0], | |
| y: position[1], | |
| children: [{ | |
| type: 'rect', | |
| shape: shape0, | |
| style: api.style({fill: '#222', text: 'legacy'}), | |
| styleEmphasis: useHover ? {fill: 'red', textFill: 'yellow'} : false | |
| }] | |
| }, | |
| ec5: { | |
| type: 'group', | |
| x: position[0], | |
| y: position[1], | |
| children: [{ | |
| type: 'rect', | |
| shape: shape0, | |
| style: {fill: '#222'}, | |
| textContent: { | |
| style: {text: 'ec5_api'}, | |
| emphasis: {style: useHover ? {fill: 'yellow'} : false} | |
| }, | |
| textConfig: {position: 'inside'}, | |
| emphasis: {style: useHover ? {fill: 'red'} : false} | |
| }] | |
| } | |
| }; | |
| return map[name]; | |
| }, | |
| data: [[1, 1, 'legacy', 1], [2, 1, 'ec5', 1]] | |
| }] | |
| }; | |
| var chart = testHelper.create(echarts, 'hover_style_remove', { | |
| title: [ | |
| 'Hover style remove test: ', | |
| '(1) Hover each: become **red rect, yellow text**', | |
| '(2) Click "disable hover style", elements should more to right a bit.', | |
| '(3) Hover each again: should no hover style', | |
| '(4) Click "enable hover style", elements should more to left a bit.', | |
| '(5) Check whether resume to (1)', | |
| ], | |
| height: 300, | |
| option: option, | |
| buttons: [{ | |
| text: 'disable hover style', | |
| onclick: function () { | |
| chart.setOption({ | |
| xAxis: {scale: true, min: 0.75, max: 7}, | |
| series: { | |
| type: 'custom', | |
| data: [[3, 1, 'legacy', 0], [6, 1, 'ec5', 0]] | |
| } | |
| }) | |
| } | |
| }, { | |
| text: 'enable hover style', | |
| onclick: function () { | |
| chart.setOption({ | |
| xAxis: {scale: true, min: 0.75, max: 3}, | |
| series: { | |
| type: 'custom', | |
| data: [[1, 1, 'legacy', 1], [2, 1, 'ec5', 1]] | |
| } | |
| }) | |
| } | |
| }] | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> | |