提交 2fdb4ff8 编写于 作者: L lang

Got bar chart rendered !

上级 0de88ae6
......@@ -41,9 +41,9 @@ define(function(require) {
if (data.type === 'list') {
var coords = cartesian.dataToCoords(data);
lastStackCoords[stackId] = lastStackCoords[stackId] || [];
data.each(function (dataItem, idx) {
var coord = coords[idx];
var lastCoord = lastStackCoords[stackId][idx] || projectAxis.otherCoord;
data.each(function (dataItem, dataIndex) {
var coord = coords[dataIndex];
var lastCoord = lastStackCoords[stackId][dataIndex] || projectAxis.otherCoord;
var x, y, width, height;
if (projectAxis.isHorizontal()) {
x = coord[0] + columnOffset;
......@@ -51,18 +51,18 @@ define(function(require) {
width = columnWidth;
height = Math.abs(coord[1] - lastCoord);
lastStackCoords[stackId][idx] = y;
lastStackCoords[stackId][dataIndex] = y;
}
else {
x = Math.min(lastCoord, coord[0]);
y = coord[1] + columnOffset;
width = Math.abs(coord[0] - lastCoord);
height = columnWidth;
lastStackCoords[stackId][idx] = x;
lastStackCoords[stackId][dataIndex] = x;
}
dataItem.layout = {
x: x,
y: x,
y: y,
width: width,
height: height
};
......
......@@ -9,7 +9,7 @@ define(function(require) {
type: 'bar',
getInitialData: function (option) {
var list = List.fromArray(option.data, this, 1);
var list = List.fromArray(option.data, 1, this);
return list;
},
......
......@@ -12,6 +12,8 @@ define(function (require) {
if (coordinateSystemType === 'cartesian2d') {
this._renderCartesian(seriesModel, ecModel, api);
}
return this.group;
},
_renderCartesian: function (seriesModel, ecModel, api) {
......@@ -28,13 +30,13 @@ define(function (require) {
style: {
fill: dataItem
.withPrefix('itemStyle.normal.')
.get('color'),
.get('color') || 'black',
stroke: dataItem.get('borderColor')
}
});
this.group.add(rect);
});
}, this);
}
});
......
......@@ -12,8 +12,6 @@ define(function (require) {
* @param {Array.<number>} coordExtent
* @param {string} axisType
* @param {string} position
*
* @inner
*/
var Axis2D = function (dim, scale, coordExtent, axisType, position) {
Axis.call(this, dim, scale, coordExtent);
......
......@@ -17,30 +17,34 @@ define(function(require) {
/**
* Convert series data to coorindates
* @param {module:echarts/data/List} data
* @param {number} [xAxisIndex=0]
* @param {number} [yAxisIndex=0]
* @return {Array}
* Return list of coordinates. For example:
* `[[10, 10], [20, 20], [30, 30]]`
*/
dataToCoords: function (data) {
var array = [];
data.each(function (dataItem) {
array.push(this.dataToCoord(dataItem));
}, this);
return array;
},
dataToCoord: function (dataItem) {
var xAxis = this.getAxis('x');
var yAxis = this.getAxis('y');
var xAxisCoords = data.mapX(xAxis.dataToCoord, xAxis);
var yAxisCoords = data.mapY(yAxis.dataToCoord, yAxis);
var xIndex = xAxis.isHorizontal() ? 0 : 1;
// If y axis is category axis
var categoryAxis = this.getAxisByScale('ordinal')[0];
if (categoryAxis && categoryAxis.dim === 'y') {
xIndex = 1 - xIndex;
}
return zrUtil.map(xAxisCoords, function (coord, idx) {
var item = [];
item[xIndex] = coord;
item[1 - xIndex] = yAxisCoords[idx];
});
var categoryAxis = this.getAxesByScale('ordinal')[0];
var swapAxis = categoryAxis && categoryAxis.dim === 'y';
var x = dataItem.getX();
var y = dataItem.getY();
var coord = [];
coord[xIndex] = xAxis.dataToCoord(swapAxis ? y : x);
coord[1 - xIndex] = yAxis.dataToCoord(swapAxis ? x : y);
return coord;
}
};
......
......@@ -103,13 +103,22 @@ define(function(require, factory) {
// Insead of on the tick
if (axis.boundaryGap && axis.type === 'category') {
var size = extent[1] - extent[0];
var len = axis.data.length;
var len = axis.scale.getTicks().length;
var margin = size / len / 2;
extent[0] += margin;
extent[1] -= margin;
}
axis.setCoordExtent(extent);
axis.setCoordExtent(extent[0], extent[1]);
var otherAxis = axis.otherAxis;
var otherAxisPosition = otherAxis.position;
if (otherAxisPosition === 'bottom') {
axis.reverse();
}
else if (otherAxisPosition === 'right') {
axis.reverse();
}
});
// Adjust axis coord on the zero position of the other axis
......@@ -134,16 +143,11 @@ define(function(require, factory) {
/**
* @inner
*/
var getScaleByOption = function (axisType, axisOption) {
if (axisOption.type) {
return axisOption.type === 'value'
? new IntervalScale()
: new OrdinalScale(axisOption.data);
}
else {
return axisType === 'y'
var getScaleByOption = function (axisType, axisModel) {
if (axisType) {
return axisType === 'value'
? new IntervalScale()
: new OrdinalScale(axisOption.data);
: new OrdinalScale(axisModel.get('data'));
}
};
......@@ -171,6 +175,7 @@ define(function(require, factory) {
xAxisPosition
);
axisX.onZero = xAxisModel.get('axisLine.onZero');
axisX.boundaryGap = xAxisModel.get('boundaryGap');
cartesian.addAxis(axisX);
// Create y axis
......@@ -184,31 +189,12 @@ define(function(require, factory) {
yAxisModel.get('position')
);
axisY.onZero = yAxisModel.get('axisLine.onZero');
axisY.boundaryGap = yAxisModel.get('boundaryGap');
cartesian.addAxis(axisY);
axisX.otherAxis = axisY;
axisY.otherAxis = axisX;
var horizontalAxis;
var verticalAxis;
// Adjust axis direction
if (axisX.isHorizontal()) {
horizontalAxis = axisX;
verticalAxis = axisY;
}
else {
horizontalAxis = axisY;
verticalAxis = axisX;
}
if (horizontalAxis.position === 'bottom') {
// Reverse vertical axis to bottom-up direction
verticalAxis.reverse();
}
if (verticalAxis.position === 'right') {
// Reverse horizontal axis to right-left direction
horizontalAxis.reverse();
}
axesList.push(axisX);
axesList.push(axisY);
}, this);
......@@ -260,7 +246,7 @@ define(function(require, factory) {
}
else {
data.eachY(function (value) {
axisData[categoryAxis.dim].push(value);
axisData[categoryAxis.dim == 'y' ? 'x' : 'y'].push(value);
});
}
}
......@@ -269,11 +255,13 @@ define(function(require, factory) {
zrUtil.each(axisDataMap, function (axisData) {
var cartesian = axisData.cartesian;
var xAxis = cartesian.getAxis('x');
var yAxis = cartesian.getAxis('y');
if (axisData.x.length) {
cartesian.getAxis('x').scale.setExtentFromData(axisData.x);
xAxis.scale.setExtentFromData(axisData.x);
}
if (axisData.y.length) {
cartesian.getAxis('y').scale.setExtentFromData(axisData.y);
yAxis.scale.setExtentFromData(axisData.y);
}
});
}
......
......@@ -9,10 +9,10 @@ define(function(require) {
defaultOption: {
zlevel: 0, // 一级层叠
z: 0, // 二级层叠
x: 80,
y: 60,
x2: 80,
y2: 60,
x: '0%',
y: '0%',
x2: '100%',
y2: '100%',
// width: {totalWidth} - x - x2,
// height: {totalHeight} - y - y2,
backgroundColor: 'rgba(0,0,0,0)',
......
......@@ -29,6 +29,8 @@ define(function(require) {
layout: null,
dimension: 1,
init: function (option, parentModel, ecModel, dataIndex) {
/**
......@@ -45,7 +47,7 @@ define(function(require) {
* @memeberOf module:echarts/data/List~Entry
* @private
*/
this._value = option.value === null ? option : option.value
this._value = option.value == null ? option : option.value
/**
* @private
......@@ -164,7 +166,7 @@ define(function(require) {
/**
* In-place filter
*/
filter: function (cb, context) {
filterInPlace: function (cb, context) {
context = context || this;
if (this.depth > 1) {
createArrayIterWithDepth(
......@@ -179,7 +181,7 @@ define(function(require) {
/**
* In-place map
*/
map: function (cb, context) {
mapInPlace: function (cb, context) {
context = context || this;
if (this.depth > 1) {
createArrayIterWithDepth(
......@@ -207,7 +209,8 @@ define(function(require) {
};
zrUtil.each(['X', 'Y', 'Z', 'Value'], function (name) {
zrUtil.each(['each', 'map', 'filter'], function (iterType) {
// TODO Map and filter
zrUtil.each(['each'], function (iterType) {
List.prototype[iterType + name] = function (cb, context) {
this[iterType](function (item, idx) {
return cb && cb.call(context || this, item['get' + name](idx));
......
......@@ -177,7 +177,7 @@ define(function (require) {
var id = seriesModel.get('type') + '_' + (seriesModel.get('name') || idx);
var chart = this._chartsMap[id];
var group = chart.render(seriesModel, optionModel, api);
this.zr.addElement(group);
this._zr.add(group);
}, this);
// TODO
// Remove group of unused chart
......
......@@ -40,8 +40,7 @@ define(function(require) {
ComponentModel.extend = function (opts) {
var SubComponentModel = Model.extend(opts);
SubComponentModel.extend = ComponentModel.extend;
var SubComponentModel = Model.extend.call(this, opts);
var componentType = opts.type;
if (componentType) {
......
......@@ -59,8 +59,8 @@ define(function (require) {
* @return {*}
*/
get: function (path) {
path = this._prefix + path;
if (typeof path == 'string') {
path = this._prefix + path;
path = path.split('.');
}
var obj = this.option;
......
......@@ -147,6 +147,10 @@ define(function (require) {
approxTickNum = approxTickNum || 10;
var extent = this._extent;
var span = extent[1] - extent[0];
if (span === Infinity) {
return;
}
// Figure out step quantity, for example 0.1, 1, 10, 100
var interval = Math.pow(10, Math.floor(Math.log(span / approxTickNum) / Math.LN10));
var err = approxTickNum / span * interval;
......
define(function (require) {
});
\ No newline at end of file
<html>
<head>
<meta charset="utf-8">
<script src="esl.js"></script>
<script src="config.js"></script>
</head>
<body>
<style>
html, body, #main {
width: 100%;
height: 100%;
}
</style>
<div id="main"></div>
<script>
require(['echarts', 'echarts/chart/bar'], function (echarts) {
var chart = echarts.init(document.getElementById('main'));
chart.setOption({
grid: {
},
xAxis: {
data: ['类目1', '类目2', '类目3', '类目4', '类目5',]
},
yAxis: {
},
series: [{
type: 'bar',
data: [0, 1, 2, 3, 4]
}]
});
})
</script>
</body>
</html>
\ No newline at end of file
var define,require,esl;!function(n){function e(n,e){function r(n){0===n.indexOf(".")&&i.push(n)}var i=[];if("string"==typeof n?r(n):$(n,function(n){r(n)}),i.length>0)throw new Error("[REQUIRE_FATAL]Relative ID is not allowed in global require: "+i.join(", "));var o=C.waitSeconds;return o&&n instanceof Array&&(D&&clearTimeout(D),D=setTimeout(t,1e3*o)),_(n,e)}function t(){function n(a,u){if(!o[a]&&!l(a,N)){o[a]=1,l(a,L)||r[a]||(r[a]=1,e.push(a));var f=T[a];f?u&&(r[a]||(r[a]=1,e.push(a)),$(f.depMs,function(e){n(e.absId,e.hard)})):i[a]||(i[a]=1,t.push(a))}}var e=[],t=[],r={},i={},o={};for(var a in F)n(a,1);if(e.length||t.length)throw new Error("[MODULE_TIMEOUT]Hang( "+(e.join(", ")||"none")+" ) Miss( "+(t.join(", ")||"none")+" )")}function r(n){$(H,function(e){a(n,e.deps,e.factory)}),H.length=0,u(n)}function i(n,e,t){if(null==t&&(null==e?(t=n,n=null):(t=e,e=null,n instanceof Array&&(e=n,n=null))),null!=t){var r=window.opera;if(!n&&document.attachEvent&&(!r||"[object Opera]"!==r.toString())){var i=S();n=i&&i.getAttribute("data-require-id")}n?a(n,e,t):H[0]={deps:e,factory:t}}}function o(){var n=C.config[this.id];return n&&"object"==typeof n?n:{}}function a(n,e,t){T[n]||(T[n]={id:n,depsDec:e,deps:e||["require","exports","module"],factoryDeps:[],factory:t,exports:{},config:o,state:z,require:w(n),depMs:[],depMkv:{},depRs:[],depPMs:[]})}function u(n){var e=T[n];if(e&&!l(n,B)){var t=e.deps,r=e.factory,i=0;"function"==typeof r&&(i=Math.min(r.length,t.length),!e.depsDec&&r.toString().replace(/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/gm,"").replace(/require\(\s*(['"'])([^'"]+)\1\s*\)/g,function(n,e,r){t.push(r)}));var o=[];$(t,function(t,r){var a,u,f=I(t),c=q(f.mod,n);c&&!P[c]?(f.res&&(u={id:t,mod:c,res:f.res},F[c]=1,e.depPMs.push(c),e.depRs.push(u)),a=e.depMkv[c],a||(a={id:f.mod,absId:c,hard:i>r},e.depMs.push(a),e.depMkv[c]=a,o.push(c))):a={absId:c},i>r&&e.factoryDeps.push(u||a)}),e.state=B,s(n),m(o)}}function f(){for(var n in F)c(n),d(n)}function c(n){function e(n){if(!l(n,B))return!1;if(l(n,L)||t[n])return!0;t[n]=1;var r=T[n],i=!0;return $(r.depMs,function(n){return i=e(n.absId)}),i&&$(r.depRs,function(n){return i=!(!n.absId||!l(n.absId,N))}),i&&(r.state=L),i}var t={};e(n)}function s(e){function t(){if(!r&&i.state===L){r=1;var t=1,o=[];if($(i.factoryDeps,function(n){var e=n.absId;return P[e]||(d(e),l(e,N))?void o.push(e):(t=0,!1)}),t){try{var a=p(o,{require:i.require,exports:i.exports,module:i}),u=i.factory,f="function"==typeof u?u.apply(n,a):u;null!=f&&(i.exports=f),i.invokeFactory=null,delete F[e]}catch(c){if(r=0,/^\[MODULE_MISS\]"([^"]+)/.test(c.message)){var s=i.depMkv[RegExp.$1];return void(s&&(s.hard=1))}throw c}g(e)}}}var r,i=T[e];i.invokeFactory=t,$(i.depPMs,function(n){v(n,function(){$(i.depRs,function(t){t.absId||t.mod!==n||(t.absId=q(t.id,e),m([t.absId],f))})})})}function l(n,e){return T[n]&&T[n].state>=e}function d(n){var e=T[n];e&&e.invokeFactory&&e.invokeFactory()}function p(n,e){var t=[];return $(n,function(n,r){t[r]=e[n]||h(n)}),t}function v(n,e){if(l(n,N))return void e();var t=Q[n];t||(t=Q[n]=[]),t.push(e)}function g(n){var e=Q[n]||[],t=T[n];t.state=N;for(var r=e.length;r--;)e[r]();e.length=0,delete Q[n]}function h(n){return l(n,N)?T[n].exports:null}function m(e,t,r,i){function o(){if(!a){var r=1;$(e,function(n){return P[n]?void 0:r=!!l(n,N)}),r&&(a=1,"function"==typeof t&&t.apply(n,p(e,P)))}}if("string"==typeof e){if(d(e),!l(e,N))throw new Error('[MODULE_MISS]"'+e+'" is not exists!');return h(e)}i=i||{};var a=0;e instanceof Array&&(o(),a||($(e,function(n){P[n]||l(n,N)||(v(n,o),i[n]||(n.indexOf("!")>0?b:y)(n,r),u(n))}),f()))}function y(n){function e(){var e=t.readyState;if("undefined"==typeof e||/^(loaded|complete)$/.test(e)){t.onload=t.onreadystatechange=null,t=null,r(n);for(var i in F)u(i);f()}}if(!G[n]&&!T[n]){G[n]=1;var t=document.createElement("script");t.setAttribute("data-require-id",n),t.src=E(n+".js"),t.async=!0,t.readyState?t.onreadystatechange=e:t.onload=e,U(t)}}function b(n,e){function t(e){u.exports=e||!0,g(n)}function i(r){var i=e?T[e].require:_;r.load(a.res,i,t,o.call({id:n}))}if(!T[n]){var a=I(n),u={id:n,state:B};T[n]=u,t.fromText=function(n,e){F[n]=1,new Function(e)(),r(n)},i(h(a.mod))}}function M(n,e){var t=R(n,1,e);return t.sort(j),t}function k(){C.baseUrl=C.baseUrl.replace(/\/$/,"")+"/",J=M(C.paths),V=M(C.map,1),$(V,function(n){n.v=M(n.v)}),K=[],$(C.packages,function(n){var e=n;"string"==typeof n&&(e={name:n.split("/")[0],location:n,main:"main"}),e.location=e.location||e.name,e.main=(e.main||"main").replace(/\.js$/i,""),e.reg=O(e.name),K.push(e)}),K.sort(j),W=M(C.urlArgs,1),X=M(C.noRequests),$(X,function(n){var e=n.v,t={};n.v=t,e instanceof Array||(e=[e]),$(e,function(n){t[n]=1})})}function x(n,e,t){$(e,function(e){return e.reg.test(n)?(t(e.v,e.k,e),!1):void 0})}function E(n){var e=/(\.[a-z0-9]+)$/i,t=/(\?[^#]*)$/,r="",i=n,o="";t.test(n)&&(o=RegExp.$1,n=n.replace(t,"")),e.test(n)&&(r=RegExp.$1,i=n.replace(e,""));var a,u=i;return x(i,J,function(n,e){u=u.replace(e,n),a=1}),a||x(i,K,function(n,e,t){u=u.replace(t.name,t.location)}),/^([a-z]{2,10}:\/)?\//i.test(u)||(u=C.baseUrl+u),u+=r+o,x(i,W,function(n){u+=(u.indexOf("?")>0?"&":"?")+n}),u}function w(n){function e(e,r){if("string"==typeof e)return t[e]||(t[e]=m(q(e,n))),t[e];if(e instanceof Array){var i=[],o=[],a=[];$(e,function(e,t){var r=I(e),u=q(r.mod,n);o.push(u),F[u]=1,r.res?(i.push(u),a[t]=null):a[t]=u});var u={};$(o,function(n){var e;x(n,X,function(n){e=n}),e&&(e["*"]?u[n]=1:$(o,function(t){return e[t]?(u[n]=1,!1):void 0}))}),m(o,function(){$(a,function(t,r){null==t&&(a[r]=q(e[r],n))}),m(a,r,n)},n,u)}}var t={};return e.toUrl=function(e){return E(q(e,n))},e}function q(n,e){if(!n)return"";e=e||"";var t=I(n);if(!t)return n;var r=t.res,i=A(t.mod,e);if($(K,function(n){var e=n.name;return e===i?(i=e+"/"+n.main,!1):void 0}),x(e,V,function(n){x(i,n,function(n,e){i=i.replace(e,n)})}),r){var o=h(i);r=o.normalize?o.normalize(r,function(n){return q(n,e)}):q(r,e),i+="!"+r}return i}function A(n,e){if(0===n.indexOf(".")){var t=e.split("/"),r=n.split("/"),i=t.length-1,o=r.length,a=0,u=0;n:for(var f=0;o>f;f++)switch(r[f]){case"..":if(!(i>a))break n;a++,u++;break;case".":u++;break;default:break n}return t.length=i-a,r=r.slice(u),t.concat(r).join("/")}return n}function I(n){var e=n.split("!");return e[0]?{mod:e[0],res:e[1]}:null}function R(n,e,t){var r=[];for(var i in n)if(n.hasOwnProperty(i)){var o={k:i,v:n[i]};r.push(o),e&&(o.reg="*"===i&&t?/^/:O(i))}return r}function S(){if(Y)return Y;if(Z&&"interactive"===Z.readyState)return Z;for(var n=document.getElementsByTagName("script"),e=n.length;e--;){var t=n[e];if("interactive"===t.readyState)return Z=t,t}}function U(n){Y=n,ee?ne.insertBefore(n,ee):ne.appendChild(n),Y=null}function O(n){return new RegExp("^"+n+"(/|$)")}function $(n,e){if(n instanceof Array)for(var t=0,r=n.length;r>t&&e(n[t],t)!==!1;t++);}function j(n,e){var t=n.k||n.name,r=e.k||e.name;return"*"===r?-1:"*"===t?1:r.length-t.length}var D,T={},F={},z=1,B=2,L=3,N=4,P={require:e,exports:1,module:1},_=w(),C={baseUrl:"./",paths:{},config:{},map:{},packages:[],waitSeconds:0,noRequests:{},urlArgs:{}};e.version="1.8.8",e.loader="esl",e.toUrl=_.toUrl;var H=[];i.amd={};var Q={},G={};e.config=function(n){if(n){for(var e in C){var t=n[e],r=C[e];if(t)if("urlArgs"===e&&"string"==typeof t)C.urlArgs["*"]=t;else if(r instanceof Array)r.push.apply(r,t);else if("object"==typeof r)for(var i in t)r[i]=t[i];else C[e]=t}k()}},k();var J,K,V,W,X,Y,Z,ne=document.getElementsByTagName("head")[0],ee=document.getElementsByTagName("base")[0];ee&&(ne=ee.parentNode),define||(define=i,require||(require=e),esl=e)}(this);
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册