1 line
14 KiB
JSON
1 line
14 KiB
JSON
{"remainingRequest":"E:\\项目\\suyiScreen\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\项目\\suyiScreen\\node_modules\\@jiaminghi\\data-view\\lib\\components\\scrollRankingBoard\\src\\main.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\项目\\suyiScreen\\node_modules\\@jiaminghi\\data-view\\lib\\components\\scrollRankingBoard\\src\\main.vue","mtime":1670569849712},{"path":"E:\\项目\\suyiScreen\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1670569853083},{"path":"E:\\项目\\suyiScreen\\node_modules\\babel-loader\\lib\\index.js","mtime":1670569850970},{"path":"E:\\项目\\suyiScreen\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1670569853083},{"path":"E:\\项目\\suyiScreen\\node_modules\\vue-loader\\lib\\index.js","mtime":1670569867456}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgYXV0b1Jlc2l6ZSBmcm9tICcuLi8uLi8uLi9taXhpbi9hdXRvUmVzaXplJw0KDQppbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICdAamlhbWluZ2hpL2NoYXJ0cy9saWIvdXRpbC9pbmRleCcNCg0KaW1wb3J0IHsgZGVlcENsb25lIH0gZnJvbSAnQGppYW1pbmdoaS9jLXJlbmRlci9saWIvcGx1Z2luL3V0aWwnDQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ0R2U2Nyb2xsUmFua2luZ0JvYXJkJywNCiAgbWl4aW5zOiBbYXV0b1Jlc2l6ZV0sDQogIHByb3BzOiB7DQogICAgY29uZmlnOiB7DQogICAgICB0eXBlOiBPYmplY3QsDQogICAgICBkZWZhdWx0OiAoKSA9PiAoe30pDQogICAgfQ0KICB9LA0KICBkYXRhICgpIHsNCiAgICByZXR1cm4gew0KICAgICAgcmVmOiAnc2Nyb2xsLXJhbmtpbmctYm9hcmQnLA0KDQogICAgICBkZWZhdWx0Q29uZmlnOiB7DQogICAgICAgIC8qKg0KICAgICAgICAgKiBAZGVzY3JpcHRpb24gQm9hcmQgZGF0YQ0KICAgICAgICAgKiBAdHlwZSB7QXJyYXk8T2JqZWN0Pn0NCiAgICAgICAgICogQGRlZmF1bHQgZGF0YSA9IFtdDQogICAgICAgICAqLw0KICAgICAgICBkYXRhOiBbXSwNCiAgICAgICAgLyoqDQogICAgICAgICAqIEBkZXNjcmlwdGlvbiBSb3cgbnVtDQogICAgICAgICAqIEB0eXBlIHtOdW1iZXJ9DQogICAgICAgICAqIEBkZWZhdWx0IHJvd051bSA9IDUNCiAgICAgICAgICovDQogICAgICAgIHJvd051bTogNSwNCiAgICAgICAgLyoqDQogICAgICAgICAqIEBkZXNjcmlwdGlvbiBTY3JvbGwgd2FpdCB0aW1lDQogICAgICAgICAqIEB0eXBlIHtOdW1iZXJ9DQogICAgICAgICAqIEBkZWZhdWx0IHdhaXRUaW1lID0gMjAwMA0KICAgICAgICAgKi8NCiAgICAgICAgd2FpdFRpbWU6IDIwMDAsDQogICAgICAgIC8qKg0KICAgICAgICAgKiBAZGVzY3JpcHRpb24gQ2Fyb3VzZWwgdHlwZQ0KICAgICAgICAgKiBAdHlwZSB7U3RyaW5nfQ0KICAgICAgICAgKiBAZGVmYXVsdCBjYXJvdXNlbCA9ICdzaW5nbGUnDQogICAgICAgICAqIEBleGFtcGxlIGNhcm91c2VsID0gJ3NpbmdsZScgfCAncGFnZScNCiAgICAgICAgICovDQogICAgICAgIGNhcm91c2VsOiAnc2luZ2xlJywNCiAgICAgICAgLyoqDQogICAgICAgICAqIEBkZXNjcmlwdGlvbiBWYWx1ZSB1bml0DQogICAgICAgICAqIEB0eXBlIHtTdHJpbmd9DQogICAgICAgICAqIEBkZWZhdWx0IHVuaXQgPSAnJw0KICAgICAgICAgKiBAZXhhbXBsZSB1bml0ID0gJ3RvbicNCiAgICAgICAgICovDQogICAgICAgIHVuaXQ6ICcnLA0KICAgICAgICAvKioNCiAgICAgICAgICogQGRlc2NyaXB0aW9uIEF1dG8gc29ydCBieSB2YWx1ZQ0KICAgICAgICAgKiBAdHlwZSB7Qm9vbGVhbn0NCiAgICAgICAgICogQGRlZmF1bHQgc29ydCA9IHRydWUNCiAgICAgICAgICovDQogICAgICAgIHNvcnQ6IHRydWUNCiAgICAgIH0sDQoNCiAgICAgIG1lcmdlZENvbmZpZzogbnVsbCwNCg0KICAgICAgcm93c0RhdGE6IFtdLA0KDQogICAgICByb3dzOiBbXSwNCg0KICAgICAgaGVpZ2h0czogW10sDQoNCiAgICAgIGFuaW1hdGlvbkluZGV4OiAwLA0KDQogICAgICBhbmltYXRpb25IYW5kbGVyOiAnJywNCg0KICAgICAgdXBkYXRlcjogMA0KICAgIH0NCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICBjb25maWcgKCkgew0KICAgICAgY29uc3QgeyBzdG9wQW5pbWF0aW9uLCBjYWxjRGF0YSB9ID0gdGhpcw0KDQogICAgICBzdG9wQW5pbWF0aW9uKCkNCg0KICAgICAgY2FsY0RhdGEoKQ0KICAgIH0NCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGFmdGVyQXV0b1Jlc2l6ZU1peGluSW5pdCAoKSB7DQogICAgICBjb25zdCB7IGNhbGNEYXRhIH0gPSB0aGlzDQoNCiAgICAgIGNhbGNEYXRhKCkNCiAgICB9LA0KICAgIG9uUmVzaXplICgpIHsNCiAgICAgIGNvbnN0IHsgbWVyZ2VkQ29uZmlnLCBjYWxjSGVpZ2h0cyB9ID0gdGhpcw0KDQogICAgICBpZiAoIW1lcmdlZENvbmZpZykgcmV0dXJuDQoNCiAgICAgIGNhbGNIZWlnaHRzKHRydWUpDQogICAgfSwNCiAgICBjYWxjRGF0YSAoKSB7DQogICAgICBjb25zdCB7IG1lcmdlQ29uZmlnLCBjYWxjUm93c0RhdGEgfSA9IHRoaXMNCg0KICAgICAgbWVyZ2VDb25maWcoKQ0KDQogICAgICBjYWxjUm93c0RhdGEoKQ0KDQogICAgICBjb25zdCB7IGNhbGNIZWlnaHRzIH0gPSB0aGlzDQoNCiAgICAgIGNhbGNIZWlnaHRzKCkNCg0KICAgICAgY29uc3QgeyBhbmltYXRpb24gfSA9IHRoaXMNCg0KICAgICAgYW5pbWF0aW9uKHRydWUpDQogICAgfSwNCiAgICBtZXJnZUNvbmZpZyAoKSB7DQogICAgICBsZXQgeyBjb25maWcsIGRlZmF1bHRDb25maWcgfSA9IHRoaXMNCg0KICAgICAgdGhpcy5tZXJnZWRDb25maWcgPSBkZWVwTWVyZ2UoZGVlcENsb25lKGRlZmF1bHRDb25maWcsIHRydWUpLCBjb25maWcgfHwge30pDQogICAgfSwNCiAgICBjYWxjUm93c0RhdGEgKCkgew0KICAgICAgbGV0IHsgZGF0YSwgcm93TnVtLCBzb3J0IH0gPSB0aGlzLm1lcmdlZENvbmZpZw0KDQogICAgICBzb3J0ICYmIGRhdGEuc29ydCgoeyB2YWx1ZTogYSB9LCB7IHZhbHVlOiBiIH0pID0+IHsNCiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gLTENCiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gMQ0KICAgICAgICBpZiAoYSA9PT0gYikgcmV0dXJuIDANCiAgICAgIH0pDQoNCiAgICAgIGNvbnN0IHZhbHVlID0gZGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpDQoNCiAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnZhbHVlKSB8fCAwDQoNCiAgICAgIGRhdGEgPSBkYXRhLm1hcCgocm93LCBpKSA9PiAoeyAuLi5yb3csIHJhbmtpbmc6IGkgKyAxLCBwZXJjZW50OiByb3cudmFsdWUgLyBtYXggKiAxMDAgfSkpDQoNCiAgICAgIGNvbnN0IHJvd0xlbmd0aCA9IGRhdGEubGVuZ3RoDQoNCiAgICAgIGlmIChyb3dMZW5ndGggPiByb3dOdW0gJiYgcm93TGVuZ3RoIDwgMiAqIHJvd051bSkgew0KICAgICAgICBkYXRhID0gWy4uLmRhdGEsIC4uLmRhdGFdDQogICAgICB9DQoNCiAgICAgIGRhdGEgPSBkYXRhLm1hcCgoZCwgaSkgPT4gKHsgLi4uZCwgc2Nyb2xsOiBpIH0pKQ0KDQogICAgICB0aGlzLnJvd3NEYXRhID0gZGF0YQ0KICAgICAgdGhpcy5yb3dzID0gZGF0YQ0KICAgIH0sDQogICAgY2FsY0hlaWdodHMgKG9ucmVzaXplID0gZmFsc2UpIHsNCiAgICAgIGNvbnN0IHsgaGVpZ2h0LCBtZXJnZWRDb25maWcgfSA9IHRoaXMNCg0KICAgICAgY29uc3QgeyByb3dOdW0sIGRhdGEgfSA9IG1lcmdlZENvbmZpZw0KDQogICAgICBjb25zdCBhdmdIZWlnaHQgPSBoZWlnaHQgLyByb3dOdW0NCg0KICAgICAgdGhpcy5hdmdIZWlnaHQgPSBhdmdIZWlnaHQNCg0KICAgICAgaWYgKCFvbnJlc2l6ZSkgdGhpcy5oZWlnaHRzID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKS5maWxsKGF2Z0hlaWdodCkNCiAgICB9LA0KICAgIGFzeW5jIGFuaW1hdGlvbiAoc3RhcnQgPSBmYWxzZSkgew0KICAgICAgbGV0IHsgYXZnSGVpZ2h0LCBhbmltYXRpb25JbmRleCwgbWVyZ2VkQ29uZmlnLCByb3dzRGF0YSwgYW5pbWF0aW9uLCB1cGRhdGVyIH0gPSB0aGlzDQoNCiAgICAgIGNvbnN0IHsgd2FpdFRpbWUsIGNhcm91c2VsLCByb3dOdW0gfSA9IG1lcmdlZENvbmZpZw0KDQogICAgICBjb25zdCByb3dMZW5ndGggPSByb3dzRGF0YS5sZW5ndGgNCg0KICAgICAgaWYgKHJvd051bSA+PSByb3dMZW5ndGgpIHJldHVybg0KDQogICAgICBpZiAoc3RhcnQpIHsNCiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHdhaXRUaW1lKSkNCiAgICAgICAgaWYgKHVwZGF0ZXIgIT09IHRoaXMudXBkYXRlcikgcmV0dXJuDQogICAgICB9DQoNCiAgICAgIGNvbnN0IGFuaW1hdGlvbk51bSA9IGNhcm91c2VsID09PSAnc2luZ2xlJyA/IDEgOiByb3dOdW0NCg0KICAgICAgbGV0IHJvd3MgPSByb3dzRGF0YS5zbGljZShhbmltYXRpb25JbmRleCkNCiAgICAgIHJvd3MucHVzaCguLi5yb3dzRGF0YS5zbGljZSgwLCBhbmltYXRpb25JbmRleCkpDQoNCiAgICAgIHRoaXMucm93cyA9IHJvd3MNCiAgICAgIHRoaXMuaGVpZ2h0cyA9IG5ldyBBcnJheShyb3dMZW5ndGgpLmZpbGwoYXZnSGVpZ2h0KQ0KDQogICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwKSkNCiAgICAgIGlmICh1cGRhdGVyICE9PSB0aGlzLnVwZGF0ZXIpIHJldHVybg0KDQogICAgICB0aGlzLmhlaWdodHMuc3BsaWNlKDAsIGFuaW1hdGlvbk51bSwgLi4ubmV3IEFycmF5KGFuaW1hdGlvbk51bSkuZmlsbCgwKSkNCg0KICAgICAgYW5pbWF0aW9uSW5kZXggKz0gYW5pbWF0aW9uTnVtDQoNCiAgICAgIGNvbnN0IGJhY2sgPSBhbmltYXRpb25JbmRleCAtIHJvd0xlbmd0aA0KICAgICAgaWYgKGJhY2sgPj0gMCkgYW5pbWF0aW9uSW5kZXggPSBiYWNrDQoNCiAgICAgIHRoaXMuYW5pbWF0aW9uSW5kZXggPSBhbmltYXRpb25JbmRleA0KICAgICAgdGhpcy5hbmltYXRpb25IYW5kbGVyID0gc2V0VGltZW91dChhbmltYXRpb24sIHdhaXRUaW1lIC0gMzAwKQ0KICAgIH0sDQogICAgc3RvcEFuaW1hdGlvbiAoKSB7DQogICAgICBjb25zdCB7IGFuaW1hdGlvbkhhbmRsZXIsIHVwZGF0ZXIgfSA9IHRoaXMNCg0KICAgICAgdGhpcy51cGRhdGVyID0gKHVwZGF0ZXIgKyAxKSAlIDk5OTk5OQ0KDQogICAgICBpZiAoIWFuaW1hdGlvbkhhbmRsZXIpIHJldHVybg0KDQogICAgICBjbGVhclRpbWVvdXQoYW5pbWF0aW9uSGFuZGxlcikNCiAgICB9DQogIH0sDQogIGRlc3Ryb3llZCAoKSB7DQogICAgY29uc3QgeyBzdG9wQW5pbWF0aW9uIH0gPSB0aGlzDQoNCiAgICBzdG9wQW5pbWF0aW9uKCkNCiAgfQ0KfQ0K"},{"version":3,"sources":["main.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA","file":"main.vue","sourceRoot":"node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src","sourcesContent":["<template>\r\n <div class=\"dv-scroll-ranking-board\" :ref=\"ref\">\r\n <div\r\n class=\"row-item\"\r\n v-for=\"(item, i) in rows\"\r\n :key=\"item.toString() + item.scroll\"\r\n :style=\"`height: ${heights[i]}px;`\"\r\n >\r\n <div class=\"ranking-info\">\r\n <div class=\"rank\">No.{{ item.ranking }}</div>\r\n <div class=\"info-name\" v-html=\"item.name\" />\r\n <div class=\"ranking-value\">{{ item.value + mergedConfig.unit }}</div>\r\n </div>\r\n\r\n <div class=\"ranking-column\">\r\n <div\r\n class=\"inside-column\"\r\n :style=\"`width: ${item.percent}%;`\"\r\n >\r\n <div class=\"shine\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport autoResize from '../../../mixin/autoResize'\r\n\r\nimport { deepMerge } from '@jiaminghi/charts/lib/util/index'\r\n\r\nimport { deepClone } from '@jiaminghi/c-render/lib/plugin/util'\r\n\r\nexport default {\r\n name: 'DvScrollRankingBoard',\r\n mixins: [autoResize],\r\n props: {\r\n config: {\r\n type: Object,\r\n default: () => ({})\r\n }\r\n },\r\n data () {\r\n return {\r\n ref: 'scroll-ranking-board',\r\n\r\n defaultConfig: {\r\n /**\r\n * @description Board data\r\n * @type {Array<Object>}\r\n * @default data = []\r\n */\r\n data: [],\r\n /**\r\n * @description Row num\r\n * @type {Number}\r\n * @default rowNum = 5\r\n */\r\n rowNum: 5,\r\n /**\r\n * @description Scroll wait time\r\n * @type {Number}\r\n * @default waitTime = 2000\r\n */\r\n waitTime: 2000,\r\n /**\r\n * @description Carousel type\r\n * @type {String}\r\n * @default carousel = 'single'\r\n * @example carousel = 'single' | 'page'\r\n */\r\n carousel: 'single',\r\n /**\r\n * @description Value unit\r\n * @type {String}\r\n * @default unit = ''\r\n * @example unit = 'ton'\r\n */\r\n unit: '',\r\n /**\r\n * @description Auto sort by value\r\n * @type {Boolean}\r\n * @default sort = true\r\n */\r\n sort: true\r\n },\r\n\r\n mergedConfig: null,\r\n\r\n rowsData: [],\r\n\r\n rows: [],\r\n\r\n heights: [],\r\n\r\n animationIndex: 0,\r\n\r\n animationHandler: '',\r\n\r\n updater: 0\r\n }\r\n },\r\n watch: {\r\n config () {\r\n const { stopAnimation, calcData } = this\r\n\r\n stopAnimation()\r\n\r\n calcData()\r\n }\r\n },\r\n methods: {\r\n afterAutoResizeMixinInit () {\r\n const { calcData } = this\r\n\r\n calcData()\r\n },\r\n onResize () {\r\n const { mergedConfig, calcHeights } = this\r\n\r\n if (!mergedConfig) return\r\n\r\n calcHeights(true)\r\n },\r\n calcData () {\r\n const { mergeConfig, calcRowsData } = this\r\n\r\n mergeConfig()\r\n\r\n calcRowsData()\r\n\r\n const { calcHeights } = this\r\n\r\n calcHeights()\r\n\r\n const { animation } = this\r\n\r\n animation(true)\r\n },\r\n mergeConfig () {\r\n let { config, defaultConfig } = this\r\n\r\n this.mergedConfig = deepMerge(deepClone(defaultConfig, true), config || {})\r\n },\r\n calcRowsData () {\r\n let { data, rowNum, sort } = this.mergedConfig\r\n\r\n sort && data.sort(({ value: a }, { value: b }) => {\r\n if (a > b) return -1\r\n if (a < b) return 1\r\n if (a === b) return 0\r\n })\r\n\r\n const value = data.map(({ value }) => value)\r\n\r\n const max = Math.max(...value) || 0\r\n\r\n data = data.map((row, i) => ({ ...row, ranking: i + 1, percent: row.value / max * 100 }))\r\n\r\n const rowLength = data.length\r\n\r\n if (rowLength > rowNum && rowLength < 2 * rowNum) {\r\n data = [...data, ...data]\r\n }\r\n\r\n data = data.map((d, i) => ({ ...d, scroll: i }))\r\n\r\n this.rowsData = data\r\n this.rows = data\r\n },\r\n calcHeights (onresize = false) {\r\n const { height, mergedConfig } = this\r\n\r\n const { rowNum, data } = mergedConfig\r\n\r\n const avgHeight = height / rowNum\r\n\r\n this.avgHeight = avgHeight\r\n\r\n if (!onresize) this.heights = new Array(data.length).fill(avgHeight)\r\n },\r\n async animation (start = false) {\r\n let { avgHeight, animationIndex, mergedConfig, rowsData, animation, updater } = this\r\n\r\n const { waitTime, carousel, rowNum } = mergedConfig\r\n\r\n const rowLength = rowsData.length\r\n\r\n if (rowNum >= rowLength) return\r\n\r\n if (start) {\r\n await new Promise(resolve => setTimeout(resolve, waitTime))\r\n if (updater !== this.updater) return\r\n }\r\n\r\n const animationNum = carousel === 'single' ? 1 : rowNum\r\n\r\n let rows = rowsData.slice(animationIndex)\r\n rows.push(...rowsData.slice(0, animationIndex))\r\n\r\n this.rows = rows\r\n this.heights = new Array(rowLength).fill(avgHeight)\r\n\r\n await new Promise(resolve => setTimeout(resolve, 300))\r\n if (updater !== this.updater) return\r\n\r\n this.heights.splice(0, animationNum, ...new Array(animationNum).fill(0))\r\n\r\n animationIndex += animationNum\r\n\r\n const back = animationIndex - rowLength\r\n if (back >= 0) animationIndex = back\r\n\r\n this.animationIndex = animationIndex\r\n this.animationHandler = setTimeout(animation, waitTime - 300)\r\n },\r\n stopAnimation () {\r\n const { animationHandler, updater } = this\r\n\r\n this.updater = (updater + 1) % 999999\r\n\r\n if (!animationHandler) return\r\n\r\n clearTimeout(animationHandler)\r\n }\r\n },\r\n destroyed () {\r\n const { stopAnimation } = this\r\n\r\n stopAnimation()\r\n }\r\n}\r\n</script>"]}]} |