1 line
47 KiB
JSON
1 line
47 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.slice.js\";\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * AUTO-GENERATED FILE. DO NOT MODIFY.\r\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport { isString, extend, map, isFunction } from 'zrender/lib/core/util.js';\nimport * as graphic from '../../util/graphic.js';\nimport { createTextStyle } from '../../label/labelStyle.js';\nimport { formatTplSimple } from '../../util/format.js';\nimport { parsePercent } from '../../util/number.js';\nimport ComponentView from '../../view/Component.js';\nimport { getLocaleModel } from '../../core/locale.js';\n\nvar CalendarView =\n/** @class */\nfunction (_super) {\n __extends(CalendarView, _super);\n\n function CalendarView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.type = CalendarView.type;\n return _this;\n }\n\n CalendarView.prototype.render = function (calendarModel, ecModel, api) {\n var group = this.group;\n group.removeAll();\n var coordSys = calendarModel.coordinateSystem; // range info\n\n var rangeData = coordSys.getRangeInfo();\n var orient = coordSys.getOrient(); // locale\n\n var localeModel = ecModel.getLocaleModel();\n\n this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n this._renderLines(calendarModel, rangeData, orient, group);\n\n this._renderYearText(calendarModel, rangeData, orient, group);\n\n this._renderMonthText(calendarModel, localeModel, orient, group);\n\n this._renderWeekText(calendarModel, localeModel, rangeData, orient, group);\n }; // render day rect\n\n\n CalendarView.prototype._renderDayRect = function (calendarModel, rangeData, group) {\n var coordSys = calendarModel.coordinateSystem;\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n var sw = coordSys.getCellWidth();\n var sh = coordSys.getCellHeight();\n\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n var point = coordSys.dataToRect([i], false).tl; // every rect\n\n var rect = new graphic.Rect({\n shape: {\n x: point[0],\n y: point[1],\n width: sw,\n height: sh\n },\n cursor: 'default',\n style: itemRectStyleModel\n });\n group.add(rect);\n }\n }; // render separate line\n\n\n CalendarView.prototype._renderLines = function (calendarModel, rangeData, orient, group) {\n var self = this;\n var coordSys = calendarModel.coordinateSystem;\n var lineStyleModel = calendarModel.getModel(['splitLine', 'lineStyle']).getLineStyle();\n var show = calendarModel.get(['splitLine', 'show']);\n var lineWidth = lineStyleModel.lineWidth;\n this._tlpoints = [];\n this._blpoints = [];\n this._firstDayOfMonth = [];\n this._firstDayPoints = [];\n var firstDay = rangeData.start;\n\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n addPoints(firstDay.formatedDate);\n\n if (i === 0) {\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n }\n\n var date = firstDay.date;\n date.setMonth(date.getMonth() + 1);\n firstDay = coordSys.getDateInfo(date);\n }\n\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n function addPoints(date) {\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n self._tlpoints.push(points[0]);\n\n self._blpoints.push(points[points.length - 1]);\n\n show && self._drawSplitline(points, lineStyleModel, group);\n } // render top/left line\n\n\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n }; // get points at both ends\n\n\n CalendarView.prototype._getEdgesPoints = function (points, lineWidth, orient) {\n var rs = [points[0].slice(), points[points.length - 1].slice()];\n var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\n return rs;\n }; // render split line\n\n\n CalendarView.prototype._drawSplitline = function (points, lineStyle, group) {\n var poyline = new graphic.Polyline({\n z2: 20,\n shape: {\n points: points\n },\n style: lineStyle\n });\n group.add(poyline);\n }; // render month line of one week points\n\n\n CalendarView.prototype._getLinePointsOfOneWeek = function (calendarModel, date, orient) {\n var coordSys = calendarModel.coordinateSystem;\n var parsedDate = coordSys.getDateInfo(date);\n var points = [];\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(parsedDate.time, i);\n var point = coordSys.dataToRect([tmpD.time], false);\n points[2 * tmpD.day] = point.tl;\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n }\n\n return points;\n };\n\n CalendarView.prototype._formatterLabel = function (formatter, params) {\n if (isString(formatter) && formatter) {\n return formatTplSimple(formatter, params);\n }\n\n if (isFunction(formatter)) {\n return formatter(params);\n }\n\n return params.nameMap;\n };\n\n CalendarView.prototype._yearTextPositionControl = function (textEl, point, orient, position, margin) {\n var x = point[0];\n var y = point[1];\n var aligns = ['center', 'bottom'];\n\n if (position === 'bottom') {\n y += margin;\n aligns = ['center', 'top'];\n } else if (position === 'left') {\n x -= margin;\n } else if (position === 'right') {\n x += margin;\n aligns = ['center', 'top'];\n } else {\n // top\n y -= margin;\n }\n\n var rotate = 0;\n\n if (position === 'left' || position === 'right') {\n rotate = Math.PI / 2;\n }\n\n return {\n rotation: rotate,\n x: x,\n y: y,\n style: {\n align: aligns[0],\n verticalAlign: aligns[1]\n }\n };\n }; // render year\n\n\n CalendarView.prototype._renderYearText = function (calendarModel, rangeData, orient, group) {\n var yearLabel = calendarModel.getModel('yearLabel');\n\n if (!yearLabel.get('show')) {\n return;\n }\n\n var margin = yearLabel.get('margin');\n var pos = yearLabel.get('position');\n\n if (!pos) {\n pos = orient !== 'horizontal' ? 'top' : 'left';\n }\n\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n var xc = (points[0][0] + points[1][0]) / 2;\n var yc = (points[0][1] + points[1][1]) / 2;\n var idx = orient === 'horizontal' ? 0 : 1;\n var posPoints = {\n top: [xc, points[idx][1]],\n bottom: [xc, points[1 - idx][1]],\n left: [points[1 - idx][0], yc],\n right: [points[idx][0], yc]\n };\n var name = rangeData.start.y;\n\n if (+rangeData.end.y > +rangeData.start.y) {\n name = name + '-' + rangeData.end.y;\n }\n\n var formatter = yearLabel.get('formatter');\n var params = {\n start: rangeData.start.y,\n end: rangeData.end.y,\n nameMap: name\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var yearText = new graphic.Text({\n z2: 30,\n style: createTextStyle(yearLabel, {\n text: content\n })\n });\n yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n group.add(yearText);\n };\n\n CalendarView.prototype._monthTextPositionControl = function (point, isCenter, orient, position, margin) {\n var align = 'left';\n var vAlign = 'top';\n var x = point[0];\n var y = point[1];\n\n if (orient === 'horizontal') {\n y = y + margin;\n\n if (isCenter) {\n align = 'center';\n }\n\n if (position === 'start') {\n vAlign = 'bottom';\n }\n } else {\n x = x + margin;\n\n if (isCenter) {\n vAlign = 'middle';\n }\n\n if (position === 'start') {\n align = 'right';\n }\n }\n\n return {\n x: x,\n y: y,\n align: align,\n verticalAlign: vAlign\n };\n }; // render month and year text\n\n\n CalendarView.prototype._renderMonthText = function (calendarModel, localeModel, orient, group) {\n var monthLabel = calendarModel.getModel('monthLabel');\n\n if (!monthLabel.get('show')) {\n return;\n }\n\n var nameMap = monthLabel.get('nameMap');\n var margin = monthLabel.get('margin');\n var pos = monthLabel.get('position');\n var align = monthLabel.get('align');\n var termPoints = [this._tlpoints, this._blpoints];\n\n if (!nameMap || isString(nameMap)) {\n if (nameMap) {\n // case-sensitive\n localeModel = getLocaleModel(nameMap) || localeModel;\n } // PENDING\n // for ZH locale, original form is `一月` but current form is `1月`\n\n\n nameMap = localeModel.get(['time', 'monthAbbr']) || [];\n }\n\n var idx = pos === 'start' ? 0 : 1;\n var axis = orient === 'horizontal' ? 0 : 1;\n margin = pos === 'start' ? -margin : margin;\n var isCenter = align === 'center';\n\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\n var tmp = termPoints[idx][i].slice();\n var firstDay = this._firstDayOfMonth[i];\n\n if (isCenter) {\n var firstDayPoints = this._firstDayPoints[i];\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n }\n\n var formatter = monthLabel.get('formatter');\n var name_1 = nameMap[+firstDay.m - 1];\n var params = {\n yyyy: firstDay.y,\n yy: (firstDay.y + '').slice(2),\n MM: firstDay.m,\n M: +firstDay.m,\n nameMap: name_1\n };\n\n var content = this._formatterLabel(formatter, params);\n\n var monthText = new graphic.Text({\n z2: 30,\n style: extend(createTextStyle(monthLabel, {\n text: content\n }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))\n });\n group.add(monthText);\n }\n };\n\n CalendarView.prototype._weekTextPositionControl = function (point, orient, position, margin, cellSize) {\n var align = 'center';\n var vAlign = 'middle';\n var x = point[0];\n var y = point[1];\n var isStart = position === 'start';\n\n if (orient === 'horizontal') {\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n align = isStart ? 'right' : 'left';\n } else {\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n vAlign = isStart ? 'bottom' : 'top';\n }\n\n return {\n x: x,\n y: y,\n align: align,\n verticalAlign: vAlign\n };\n }; // render weeks\n\n\n CalendarView.prototype._renderWeekText = function (calendarModel, localeModel, rangeData, orient, group) {\n var dayLabel = calendarModel.getModel('dayLabel');\n\n if (!dayLabel.get('show')) {\n return;\n }\n\n var coordSys = calendarModel.coordinateSystem;\n var pos = dayLabel.get('position');\n var nameMap = dayLabel.get('nameMap');\n var margin = dayLabel.get('margin');\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n if (!nameMap || isString(nameMap)) {\n if (nameMap) {\n // case-sensitive\n localeModel = getLocaleModel(nameMap) || localeModel;\n } // Use the first letter of `dayOfWeekAbbr` if `dayOfWeekShort` doesn't exist in the locale file\n\n\n var dayOfWeekShort = localeModel.get(['time', 'dayOfWeekShort']);\n nameMap = dayOfWeekShort || map(localeModel.get(['time', 'dayOfWeekAbbr']), function (val) {\n return val[0];\n });\n }\n\n var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n margin = parsePercent(margin, Math.min(cellSize[1], cellSize[0]));\n\n if (pos === 'start') {\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n margin = -margin;\n }\n\n for (var i = 0; i < 7; i++) {\n var tmpD = coordSys.getNextNDay(start, i);\n var point = coordSys.dataToRect([tmpD.time], false).center;\n var day = i;\n day = Math.abs((i + firstDayOfWeek) % 7);\n var weekText = new graphic.Text({\n z2: 30,\n style: extend(createTextStyle(dayLabel, {\n text: nameMap[day]\n }), this._weekTextPositionControl(point, orient, pos, margin, cellSize))\n });\n group.add(weekText);\n }\n };\n\n CalendarView.type = 'calendar';\n return CalendarView;\n}(ComponentView);\n\nexport default CalendarView;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/node_modules/echarts/lib/component/calendar/CalendarView.js"],"names":["__extends","isString","extend","map","isFunction","graphic","createTextStyle","formatTplSimple","parsePercent","ComponentView","getLocaleModel","CalendarView","_super","_this","apply","arguments","type","prototype","render","calendarModel","ecModel","api","group","removeAll","coordSys","coordinateSystem","rangeData","getRangeInfo","orient","getOrient","localeModel","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","getModel","getItemStyle","sw","getCellWidth","sh","getCellHeight","i","start","time","end","getNextNDay","point","dataToRect","tl","rect","Rect","shape","x","y","width","height","cursor","style","add","self","lineStyleModel","getLineStyle","show","get","lineWidth","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","firstDay","addPoints","formatedDate","getDateInfo","m","date","setMonth","getMonth","push","points","_getLinePointsOfOneWeek","length","_drawSplitline","_getEdgesPoints","rs","slice","idx","lineStyle","poyline","Polyline","z2","parsedDate","tmpD","day","_formatterLabel","formatter","params","nameMap","_yearTextPositionControl","textEl","position","margin","aligns","rotate","Math","PI","rotation","align","verticalAlign","yearLabel","pos","xc","yc","posPoints","top","bottom","left","right","name","content","yearText","Text","text","attr","_monthTextPositionControl","isCenter","vAlign","monthLabel","termPoints","axis","tmp","firstDayPoints","name_1","yyyy","yy","MM","M","monthText","_weekTextPositionControl","cellSize","isStart","dayLabel","firstDayOfWeek","getFirstDayOfWeek","dayOfWeekShort","val","lweek","min","fweek","center","abs","weekText"],"mappings":"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","sourcesContent":["\r\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\r\n\r\n\r\n/**\r\n * AUTO-GENERATED FILE. DO NOT MODIFY.\r\n */\r\n\r\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport { isString, extend, map, isFunction } from 'zrender/lib/core/util.js';\r\nimport * as graphic from '../../util/graphic.js';\r\nimport { createTextStyle } from '../../label/labelStyle.js';\r\nimport { formatTplSimple } from '../../util/format.js';\r\nimport { parsePercent } from '../../util/number.js';\r\nimport ComponentView from '../../view/Component.js';\r\nimport { getLocaleModel } from '../../core/locale.js';\r\n\r\nvar CalendarView =\r\n/** @class */\r\nfunction (_super) {\r\n __extends(CalendarView, _super);\r\n\r\n function CalendarView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n\r\n _this.type = CalendarView.type;\r\n return _this;\r\n }\r\n\r\n CalendarView.prototype.render = function (calendarModel, ecModel, api) {\r\n var group = this.group;\r\n group.removeAll();\r\n var coordSys = calendarModel.coordinateSystem; // range info\r\n\r\n var rangeData = coordSys.getRangeInfo();\r\n var orient = coordSys.getOrient(); // locale\r\n\r\n var localeModel = ecModel.getLocaleModel();\r\n\r\n this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\r\n\r\n\r\n this._renderLines(calendarModel, rangeData, orient, group);\r\n\r\n this._renderYearText(calendarModel, rangeData, orient, group);\r\n\r\n this._renderMonthText(calendarModel, localeModel, orient, group);\r\n\r\n this._renderWeekText(calendarModel, localeModel, rangeData, orient, group);\r\n }; // render day rect\r\n\r\n\r\n CalendarView.prototype._renderDayRect = function (calendarModel, rangeData, group) {\r\n var coordSys = calendarModel.coordinateSystem;\r\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\r\n var sw = coordSys.getCellWidth();\r\n var sh = coordSys.getCellHeight();\r\n\r\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\r\n var point = coordSys.dataToRect([i], false).tl; // every rect\r\n\r\n var rect = new graphic.Rect({\r\n shape: {\r\n x: point[0],\r\n y: point[1],\r\n width: sw,\r\n height: sh\r\n },\r\n cursor: 'default',\r\n style: itemRectStyleModel\r\n });\r\n group.add(rect);\r\n }\r\n }; // render separate line\r\n\r\n\r\n CalendarView.prototype._renderLines = function (calendarModel, rangeData, orient, group) {\r\n var self = this;\r\n var coordSys = calendarModel.coordinateSystem;\r\n var lineStyleModel = calendarModel.getModel(['splitLine', 'lineStyle']).getLineStyle();\r\n var show = calendarModel.get(['splitLine', 'show']);\r\n var lineWidth = lineStyleModel.lineWidth;\r\n this._tlpoints = [];\r\n this._blpoints = [];\r\n this._firstDayOfMonth = [];\r\n this._firstDayPoints = [];\r\n var firstDay = rangeData.start;\r\n\r\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\r\n addPoints(firstDay.formatedDate);\r\n\r\n if (i === 0) {\r\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\r\n }\r\n\r\n var date = firstDay.date;\r\n date.setMonth(date.getMonth() + 1);\r\n firstDay = coordSys.getDateInfo(date);\r\n }\r\n\r\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\r\n\r\n function addPoints(date) {\r\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\r\n\r\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\r\n\r\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\r\n\r\n self._tlpoints.push(points[0]);\r\n\r\n self._blpoints.push(points[points.length - 1]);\r\n\r\n show && self._drawSplitline(points, lineStyleModel, group);\r\n } // render top/left line\r\n\r\n\r\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\r\n\r\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\r\n }; // get points at both ends\r\n\r\n\r\n CalendarView.prototype._getEdgesPoints = function (points, lineWidth, orient) {\r\n var rs = [points[0].slice(), points[points.length - 1].slice()];\r\n var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\r\n\r\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\r\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\r\n return rs;\r\n }; // render split line\r\n\r\n\r\n CalendarView.prototype._drawSplitline = function (points, lineStyle, group) {\r\n var poyline = new graphic.Polyline({\r\n z2: 20,\r\n shape: {\r\n points: points\r\n },\r\n style: lineStyle\r\n });\r\n group.add(poyline);\r\n }; // render month line of one week points\r\n\r\n\r\n CalendarView.prototype._getLinePointsOfOneWeek = function (calendarModel, date, orient) {\r\n var coordSys = calendarModel.coordinateSystem;\r\n var parsedDate = coordSys.getDateInfo(date);\r\n var points = [];\r\n\r\n for (var i = 0; i < 7; i++) {\r\n var tmpD = coordSys.getNextNDay(parsedDate.time, i);\r\n var point = coordSys.dataToRect([tmpD.time], false);\r\n points[2 * tmpD.day] = point.tl;\r\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\r\n }\r\n\r\n return points;\r\n };\r\n\r\n CalendarView.prototype._formatterLabel = function (formatter, params) {\r\n if (isString(formatter) && formatter) {\r\n return formatTplSimple(formatter, params);\r\n }\r\n\r\n if (isFunction(formatter)) {\r\n return formatter(params);\r\n }\r\n\r\n return params.nameMap;\r\n };\r\n\r\n CalendarView.prototype._yearTextPositionControl = function (textEl, point, orient, position, margin) {\r\n var x = point[0];\r\n var y = point[1];\r\n var aligns = ['center', 'bottom'];\r\n\r\n if (position === 'bottom') {\r\n y += margin;\r\n aligns = ['center', 'top'];\r\n } else if (position === 'left') {\r\n x -= margin;\r\n } else if (position === 'right') {\r\n x += margin;\r\n aligns = ['center', 'top'];\r\n } else {\r\n // top\r\n y -= margin;\r\n }\r\n\r\n var rotate = 0;\r\n\r\n if (position === 'left' || position === 'right') {\r\n rotate = Math.PI / 2;\r\n }\r\n\r\n return {\r\n rotation: rotate,\r\n x: x,\r\n y: y,\r\n style: {\r\n align: aligns[0],\r\n verticalAlign: aligns[1]\r\n }\r\n };\r\n }; // render year\r\n\r\n\r\n CalendarView.prototype._renderYearText = function (calendarModel, rangeData, orient, group) {\r\n var yearLabel = calendarModel.getModel('yearLabel');\r\n\r\n if (!yearLabel.get('show')) {\r\n return;\r\n }\r\n\r\n var margin = yearLabel.get('margin');\r\n var pos = yearLabel.get('position');\r\n\r\n if (!pos) {\r\n pos = orient !== 'horizontal' ? 'top' : 'left';\r\n }\r\n\r\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\r\n var xc = (points[0][0] + points[1][0]) / 2;\r\n var yc = (points[0][1] + points[1][1]) / 2;\r\n var idx = orient === 'horizontal' ? 0 : 1;\r\n var posPoints = {\r\n top: [xc, points[idx][1]],\r\n bottom: [xc, points[1 - idx][1]],\r\n left: [points[1 - idx][0], yc],\r\n right: [points[idx][0], yc]\r\n };\r\n var name = rangeData.start.y;\r\n\r\n if (+rangeData.end.y > +rangeData.start.y) {\r\n name = name + '-' + rangeData.end.y;\r\n }\r\n\r\n var formatter = yearLabel.get('formatter');\r\n var params = {\r\n start: rangeData.start.y,\r\n end: rangeData.end.y,\r\n nameMap: name\r\n };\r\n\r\n var content = this._formatterLabel(formatter, params);\r\n\r\n var yearText = new graphic.Text({\r\n z2: 30,\r\n style: createTextStyle(yearLabel, {\r\n text: content\r\n })\r\n });\r\n yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\r\n group.add(yearText);\r\n };\r\n\r\n CalendarView.prototype._monthTextPositionControl = function (point, isCenter, orient, position, margin) {\r\n var align = 'left';\r\n var vAlign = 'top';\r\n var x = point[0];\r\n var y = point[1];\r\n\r\n if (orient === 'horizontal') {\r\n y = y + margin;\r\n\r\n if (isCenter) {\r\n align = 'center';\r\n }\r\n\r\n if (position === 'start') {\r\n vAlign = 'bottom';\r\n }\r\n } else {\r\n x = x + margin;\r\n\r\n if (isCenter) {\r\n vAlign = 'middle';\r\n }\r\n\r\n if (position === 'start') {\r\n align = 'right';\r\n }\r\n }\r\n\r\n return {\r\n x: x,\r\n y: y,\r\n align: align,\r\n verticalAlign: vAlign\r\n };\r\n }; // render month and year text\r\n\r\n\r\n CalendarView.prototype._renderMonthText = function (calendarModel, localeModel, orient, group) {\r\n var monthLabel = calendarModel.getModel('monthLabel');\r\n\r\n if (!monthLabel.get('show')) {\r\n return;\r\n }\r\n\r\n var nameMap = monthLabel.get('nameMap');\r\n var margin = monthLabel.get('margin');\r\n var pos = monthLabel.get('position');\r\n var align = monthLabel.get('align');\r\n var termPoints = [this._tlpoints, this._blpoints];\r\n\r\n if (!nameMap || isString(nameMap)) {\r\n if (nameMap) {\r\n // case-sensitive\r\n localeModel = getLocaleModel(nameMap) || localeModel;\r\n } // PENDING\r\n // for ZH locale, original form is `一月` but current form is `1月`\r\n\r\n\r\n nameMap = localeModel.get(['time', 'monthAbbr']) || [];\r\n }\r\n\r\n var idx = pos === 'start' ? 0 : 1;\r\n var axis = orient === 'horizontal' ? 0 : 1;\r\n margin = pos === 'start' ? -margin : margin;\r\n var isCenter = align === 'center';\r\n\r\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\r\n var tmp = termPoints[idx][i].slice();\r\n var firstDay = this._firstDayOfMonth[i];\r\n\r\n if (isCenter) {\r\n var firstDayPoints = this._firstDayPoints[i];\r\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\r\n }\r\n\r\n var formatter = monthLabel.get('formatter');\r\n var name_1 = nameMap[+firstDay.m - 1];\r\n var params = {\r\n yyyy: firstDay.y,\r\n yy: (firstDay.y + '').slice(2),\r\n MM: firstDay.m,\r\n M: +firstDay.m,\r\n nameMap: name_1\r\n };\r\n\r\n var content = this._formatterLabel(formatter, params);\r\n\r\n var monthText = new graphic.Text({\r\n z2: 30,\r\n style: extend(createTextStyle(monthLabel, {\r\n text: content\r\n }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))\r\n });\r\n group.add(monthText);\r\n }\r\n };\r\n\r\n CalendarView.prototype._weekTextPositionControl = function (point, orient, position, margin, cellSize) {\r\n var align = 'center';\r\n var vAlign = 'middle';\r\n var x = point[0];\r\n var y = point[1];\r\n var isStart = position === 'start';\r\n\r\n if (orient === 'horizontal') {\r\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\r\n align = isStart ? 'right' : 'left';\r\n } else {\r\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\r\n vAlign = isStart ? 'bottom' : 'top';\r\n }\r\n\r\n return {\r\n x: x,\r\n y: y,\r\n align: align,\r\n verticalAlign: vAlign\r\n };\r\n }; // render weeks\r\n\r\n\r\n CalendarView.prototype._renderWeekText = function (calendarModel, localeModel, rangeData, orient, group) {\r\n var dayLabel = calendarModel.getModel('dayLabel');\r\n\r\n if (!dayLabel.get('show')) {\r\n return;\r\n }\r\n\r\n var coordSys = calendarModel.coordinateSystem;\r\n var pos = dayLabel.get('position');\r\n var nameMap = dayLabel.get('nameMap');\r\n var margin = dayLabel.get('margin');\r\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\r\n\r\n if (!nameMap || isString(nameMap)) {\r\n if (nameMap) {\r\n // case-sensitive\r\n localeModel = getLocaleModel(nameMap) || localeModel;\r\n } // Use the first letter of `dayOfWeekAbbr` if `dayOfWeekShort` doesn't exist in the locale file\r\n\r\n\r\n var dayOfWeekShort = localeModel.get(['time', 'dayOfWeekShort']);\r\n nameMap = dayOfWeekShort || map(localeModel.get(['time', 'dayOfWeekAbbr']), function (val) {\r\n return val[0];\r\n });\r\n }\r\n\r\n var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\r\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\r\n margin = parsePercent(margin, Math.min(cellSize[1], cellSize[0]));\r\n\r\n if (pos === 'start') {\r\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\r\n margin = -margin;\r\n }\r\n\r\n for (var i = 0; i < 7; i++) {\r\n var tmpD = coordSys.getNextNDay(start, i);\r\n var point = coordSys.dataToRect([tmpD.time], false).center;\r\n var day = i;\r\n day = Math.abs((i + firstDayOfWeek) % 7);\r\n var weekText = new graphic.Text({\r\n z2: 30,\r\n style: extend(createTextStyle(dayLabel, {\r\n text: nameMap[day]\r\n }), this._weekTextPositionControl(point, orient, pos, margin, cellSize))\r\n });\r\n group.add(weekText);\r\n }\r\n };\r\n\r\n CalendarView.type = 'calendar';\r\n return CalendarView;\r\n}(ComponentView);\r\n\r\nexport default CalendarView;"]},"metadata":{},"sourceType":"module"} |