163 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
 | |
| /*
 | |
| * 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.
 | |
| */
 | |
| 
 | |
| var zrUtil = require("zrender/lib/core/util");
 | |
| 
 | |
| var ComponentModel = require("../../model/Component");
 | |
| 
 | |
| var _layout = require("../../util/layout");
 | |
| 
 | |
| var getLayoutParams = _layout.getLayoutParams;
 | |
| var sizeCalculable = _layout.sizeCalculable;
 | |
| var mergeLayoutParam = _layout.mergeLayoutParam;
 | |
| 
 | |
| /*
 | |
| * 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.
 | |
| */
 | |
| var CalendarModel = ComponentModel.extend({
 | |
|   type: 'calendar',
 | |
| 
 | |
|   /**
 | |
|    * @type {module:echarts/coord/calendar/Calendar}
 | |
|    */
 | |
|   coordinateSystem: null,
 | |
|   defaultOption: {
 | |
|     zlevel: 0,
 | |
|     z: 2,
 | |
|     left: 80,
 | |
|     top: 60,
 | |
|     cellSize: 20,
 | |
|     // horizontal vertical
 | |
|     orient: 'horizontal',
 | |
|     // month separate line style
 | |
|     splitLine: {
 | |
|       show: true,
 | |
|       lineStyle: {
 | |
|         color: '#000',
 | |
|         width: 1,
 | |
|         type: 'solid'
 | |
|       }
 | |
|     },
 | |
|     // rect style  temporarily unused emphasis
 | |
|     itemStyle: {
 | |
|       color: '#fff',
 | |
|       borderWidth: 1,
 | |
|       borderColor: '#ccc'
 | |
|     },
 | |
|     // week text style
 | |
|     dayLabel: {
 | |
|       show: true,
 | |
|       // a week first day
 | |
|       firstDay: 0,
 | |
|       // start end
 | |
|       position: 'start',
 | |
|       margin: '50%',
 | |
|       // 50% of cellSize
 | |
|       nameMap: 'en',
 | |
|       color: '#000'
 | |
|     },
 | |
|     // month text style
 | |
|     monthLabel: {
 | |
|       show: true,
 | |
|       // start end
 | |
|       position: 'start',
 | |
|       margin: 5,
 | |
|       // center or left
 | |
|       align: 'center',
 | |
|       // cn en []
 | |
|       nameMap: 'en',
 | |
|       formatter: null,
 | |
|       color: '#000'
 | |
|     },
 | |
|     // year text style
 | |
|     yearLabel: {
 | |
|       show: true,
 | |
|       // top bottom left right
 | |
|       position: null,
 | |
|       margin: 30,
 | |
|       formatter: null,
 | |
|       color: '#ccc',
 | |
|       fontFamily: 'sans-serif',
 | |
|       fontWeight: 'bolder',
 | |
|       fontSize: 20
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   /**
 | |
|    * @override
 | |
|    */
 | |
|   init: function (option, parentModel, ecModel, extraOpt) {
 | |
|     var inputPositionParams = getLayoutParams(option);
 | |
|     CalendarModel.superApply(this, 'init', arguments);
 | |
|     mergeAndNormalizeLayoutParams(option, inputPositionParams);
 | |
|   },
 | |
| 
 | |
|   /**
 | |
|    * @override
 | |
|    */
 | |
|   mergeOption: function (option, extraOpt) {
 | |
|     CalendarModel.superApply(this, 'mergeOption', arguments);
 | |
|     mergeAndNormalizeLayoutParams(this.option, option);
 | |
|   }
 | |
| });
 | |
| 
 | |
| function mergeAndNormalizeLayoutParams(target, raw) {
 | |
|   // Normalize cellSize
 | |
|   var cellSize = target.cellSize;
 | |
| 
 | |
|   if (!zrUtil.isArray(cellSize)) {
 | |
|     cellSize = target.cellSize = [cellSize, cellSize];
 | |
|   } else if (cellSize.length === 1) {
 | |
|     cellSize[1] = cellSize[0];
 | |
|   }
 | |
| 
 | |
|   var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {
 | |
|     // If user have set `width` or both `left` and `right`, cellSize
 | |
|     // will be automatically set to 'auto', otherwise the default
 | |
|     // setting of cellSize will make `width` setting not work.
 | |
|     if (sizeCalculable(raw, hvIdx)) {
 | |
|       cellSize[hvIdx] = 'auto';
 | |
|     }
 | |
| 
 | |
|     return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto';
 | |
|   });
 | |
|   mergeLayoutParam(target, raw, {
 | |
|     type: 'box',
 | |
|     ignoreSize: ignoreSize
 | |
|   });
 | |
| }
 | |
| 
 | |
| var _default = CalendarModel;
 | |
| module.exports = _default; | 
