/**
 * @file Treemap action
 */
define(function(require) {
    var echarts = require('../../echarts');
    var helper = require('./helper');
    var noop = function () {};
    var actionTypes = [
        'treemapZoomToNode',
        'treemapRender',
        'treemapMove'
    ];
    for (var i = 0; i < actionTypes.length; i++) {
        echarts.registerAction({type: actionTypes[i], update: 'updateView'}, noop);
    }
    echarts.registerAction(
        {type: 'treemapRootToNode', update: 'updateView'},
        function (payload, ecModel) {
            ecModel.eachComponent(
                {mainType: 'series', subType: 'treemap', query: payload},
                handleRootToNode
            );
            function handleRootToNode(model, index) {
                var targetInfo = helper.retrieveTargetInfo(payload, model);
                if (targetInfo) {
                    var originViewRoot = model.getViewRoot();
                    if (originViewRoot) {
                        payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node)
                            ? 'rollUp' : 'drillDown';
                    }
                    model.resetViewRoot(targetInfo.node);
                }
            }
        }
    );
}); 
  |