Compare commits

..

43 Commits

Author SHA1 Message Date
JM
e777112621 update dist and lib 2019-09-24 16:34:08 +08:00
JM
d6f33bb7dc Mobile terser execution order 2019-09-24 16:33:14 +08:00
JM
ee1d0cddf9 Fix spelling errors 2019-09-24 16:30:14 +08:00
JM
a7aa6278c8 Compatible with a calculation result of 0 2019-09-24 16:29:51 +08:00
JM
e533c55536 update version to v2.4.5 2019-09-24 16:29:11 +08:00
JM
89ea2f81b7 update change log for v2.4.5 2019-09-24 16:28:58 +08:00
9562c97730 update readme 2019-09-10 15:32:42 +08:00
7ba058d623 update change log 2019-09-10 15:23:12 +08:00
a22166d868 perfect ref production 2019-09-10 15:14:12 +08:00
fbc32552f0 update umd file 2019-09-10 15:11:56 +08:00
8ad8298c6f add auto deploy process 2019-09-10 15:11:25 +08:00
5796c92fc6 update rollup config (terser compress) 2019-09-10 15:11:09 +08:00
3ebbac5de3 update auto build process 2019-09-10 15:10:36 +08:00
5c80a93f4d add umd example 2019-09-10 15:10:11 +08:00
79bae7bea4 update readme 2019-09-10 15:10:02 +08:00
7b9174302e update questionnaire qr code img 2019-09-10 15:09:52 +08:00
259f1e4b4c add terser to compress umd file 2019-09-10 15:08:35 +08:00
015f334212 update ignore 2019-09-10 14:57:59 +08:00
44dffdc216 Merge branch 'master' of https://github.com/jiaming743/DataV 2019-09-10 11:23:03 +08:00
60c5ecfeba update readme 2019-09-10 11:22:42 +08:00
JM
bcb78fec32 Merge pull request #14 from Xiaoleng123/master
🐛 修改组件 ID 时间戳的生成方式
2019-09-10 09:17:04 +08:00
856e43dc09 🐛 修改组件 ID 时间戳的生成方式 2019-09-09 21:17:50 +08:00
b511e3d786 add Questionnaire link 2019-09-06 10:59:55 +08:00
c281e56d6d update dist and lib 2019-09-05 17:33:05 +08:00
ba35f1b252 update version to 2.4.4 2019-09-05 17:32:58 +08:00
6819fdead9 update changelog 2019-09-05 17:32:51 +08:00
6169d2ac90 Bug Fixes for v 2.4.4 2019-09-05 17:32:44 +08:00
786761f1ca update todo 2019-09-05 11:55:25 +08:00
529b0154db update dist 2019-09-04 11:24:03 +08:00
26a5c3cedd add unit configuration item 2019-09-04 11:23:59 +08:00
10824d0c88 update version to 2.4.3 2019-09-04 11:23:41 +08:00
c34c493eb4 update changelog 2019-09-04 11:23:29 +08:00
1708d58215 update readme 2019-09-04 09:04:33 +08:00
948d6e0672 update readme 2019-09-04 08:56:40 +08:00
0a82102ec6 update readme 2019-09-04 08:54:48 +08:00
1aa5979968 add note 2019-09-03 16:02:07 +08:00
ff964f6b72 remove useless folder 2019-09-03 11:12:47 +08:00
b2b83d9474 Add import suffix 2019-09-03 11:08:17 +08:00
a1d7d4626d update build process 2019-09-03 11:07:45 +08:00
170facb3fc update dependencies 2019-09-03 11:07:26 +08:00
5224e80321 add feedback group img 2019-09-02 18:49:58 +08:00
1c4fa02e45 update readme 2019-09-02 18:49:37 +08:00
70164efe70 add TODO 2019-09-02 14:17:07 +08:00
43 changed files with 20754 additions and 75 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
.DS_Store
node_modules
package-lock.json
/deploy/config.js
# local env files
.env.local

View File

@ -1,3 +1,21 @@
# 2.4.5-alpha (2019-++-++)
### Bug Fixes
- **activeRingChart:** Calculation exception due to data value being 0 [(#17)](https://github.com/jiaming743/DataV/issues/17).
# 2.4.4-alpha (2019-09-05)
### Bug Fixes
- **scrollBoard:** Header column width is abnormal when row data is empty.
# 2.4.3-alpha (2019-09-04)
### Perfect
- **scrollRankingBoard:** Add a unit configuration item.
# 2.4.2-alpha (2019-08-30)
### Perfect

BIN
QQGroup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -12,10 +12,10 @@
## DataV是干什么的?
* DataV是一个基于**Vue**的数据可视化组件库.
* 提供用于提升页面视觉效果的**SVG**边框和装饰.
* 提供常用的**图表**如折线图等.
* 飞线图/轮播表等其他组件.
* DataV是一个基于**Vue**的数据可视化组件库
* 提供用于提升页面视觉效果的**SVG**边框和装饰
* 提供常用的**图表**如折线图等
* 飞线图/轮播表等其他组件
### npm安装
@ -38,6 +38,35 @@ Vue.use(borderBox1)
详细文档及示例请移步[HomePage](http://datav.jiaminghi.com).
### UMD版
`UMD`版可直接使用`script`标签引入,`UMD`版文件位于项目`dist`目录下,引入后将自动把所有组件注册为**Vue全局组件**,引入`DataV`前请确保已引入`Vue`
[UMD版使用示例](./umdExample.html)
### React版本
React版本已在开发中敬请期待
### 调研
关于React版本组件库及反馈请移步[问卷调查](https://www.wjx.cn/jq/45326197.aspx)
![问卷调查](./questionnaire.jpg)
### TODO
* **飞线图**添加多中心点及反向飞线功能
* **边框**及**装饰**添加颜色及其他必要配置项,增强可配置性及灵活性.
### 致谢
组件库的开发基于个人学习和兴趣由于技术水平及经验的限制组件尚有许多不完善之处如有BUG可及时提交[issue](https://github.com/jiaming743/DataV/issues/new?template=bug_report.md)或添加反馈群进行反馈,也欢迎提供指正和建议,感谢各位的支持。
### 反馈
![Feedback](./QQGroup.png)
### Demo
Demo页面使用了全屏组件请F11全屏后查看。

View File

@ -39,6 +39,35 @@ Vue.use(borderBox1)
Detailed documents and examples can be viewed on the [HomePage](http://datav.jiaminghi.com).
### UMD version
The `UMD` version can be directly imported using the `script` tag. The `UMD` version file is located in the project `dist` directory. After import, all components will be automatically registered as **Vue global components**. Be sure to introduce `Vue` before introducing `DataV`.
[UMD version usage example](./umdExample.html)
### React version
The reaction version is already under development, so stay tuned
### Questionnaire
React version of the component library and feedback[Questionnaire](https://www.wjx.cn/jq/45326197.aspx)
![问卷调查](./questionnaire.jpg)
### TODO
* **flylineChart**Add multi-center point and reverse fly line function.
* Add color and other necessary configuration to the **borderBox** and **decoration** to enhance configurability and flexibility.
### Acknowledgement
The development of the component library is based on personal learning and interest. Due to technical level and experience limitations, there are still many imperfections in the components. If there are errors, you can submit [issue](https://github.com/jiaming743/DataV/issues/new?template=bug_report.md) in time or add feedback groups for feedback. Welcome to provide corrections and suggestions. Thank you for your support.
### Feedback
![Feedback](./QQGroup.png)
### Demo
The Demo page uses the full-screen component, please view it after F11 full screen.

4
build/entry.js Normal file
View File

@ -0,0 +1,4 @@
import Vue from 'vue'
import datav from '../src/index'
Vue.use(datav)

View File

@ -1,14 +1,17 @@
const { copyDir, fileForEach, readFile, writeFile, unlinkDirFileByExtname, dirForEach } = require('@jiaminghi/fs')
const print = require('./plugin/print')
const path = require('path')
const doExec = require('./plugin/exec')
const exec = require('./plugin/exec')
const PACKAGE_SRC = './src'
const COMPILE_SRC = './lib'
const COMPONENTS_DIR = '/components'
const ENTRANCE = '/index.js'
const libName = 'datav'
async function start () {
// Compile for NPM
const copyPackage = await copyDir(PACKAGE_SRC, COMPILE_SRC)
if (!copyPackage) {
@ -63,6 +66,27 @@ async function start () {
print.success('Finish adding components export statement!')
// Compile for UMD version
const rollupCompile = await exec(`rollup -c build/rollup.config.js`)
if (!rollupCompile) {
print.error('Exception in rollupCompile')
return
}
print.tip('After rollupCompile')
const terser = await exec(`rollup -c build/rollup.terser.config.js`)
if (!terser) {
print.error('Exception in terser')
return
}
print.tip('After terser')
print.yellow('-------------------------------------')
print.success(' DataV Lib Compile Success! ')
print.yellow('-------------------------------------')
@ -122,7 +146,7 @@ async function compileLessToCss () {
maxBuffer: 1024 ** 5
})
const compile = await doExec(execString)
const compile = await exec(execString)
if (!compile) {
print.error(execString + ' Error!')
@ -180,6 +204,8 @@ async function addComponentsExport () {
return write
}
module.exports = start
async function compileUMDVersion () {
}
start()

22
build/rollup.config.js Normal file
View File

@ -0,0 +1,22 @@
import resolve from 'rollup-plugin-node-resolve'
import vue from 'rollup-plugin-vue'
import commonjs from 'rollup-plugin-commonjs'
import babel from 'rollup-plugin-babel'
export default {
input: 'build/entry.js',
output: {
format: 'umd',
file: 'dist/datav.map.vue.js',
name: 'datav'
},
plugins: [
resolve(),
babel({
exclude: 'node_modules/**'
}),
commonjs(),
vue(),
],
external: ['Vue']
}

View File

@ -0,0 +1,24 @@
import resolve from 'rollup-plugin-node-resolve'
import vue from 'rollup-plugin-vue'
import commonjs from 'rollup-plugin-commonjs'
import babel from 'rollup-plugin-babel'
import { terser } from "rollup-plugin-terser"
export default {
input: 'build/entry.js',
output: {
format: 'umd',
file: 'dist/datav.min.vue.js',
name: 'datav'
},
plugins: [
resolve(),
babel({
exclude: 'node_modules/**'
}),
commonjs(),
vue(),
terser(),
],
external: ['Vue']
}

81
deploy/index.js Normal file
View File

@ -0,0 +1,81 @@
const { fileForEach } = require('@jiaminghi/fs')
const Client = require('ftp')
const print = require('./plugin/print')
const { emptyDir, put } = require('./plugin/ftp')
const getNodeParams = require('./plugin/nodeParams')
let config = null
try {
config = require('./config')
} catch (err) {
void 0
}
const DIST_PATH = './dist/'
const FTP_PATH = './datav/'
const ftp = new Client()
ftp.on('ready', async foo => {
print.tip('FTP connected!')
const isEmpty = await emptyDir(ftp, FTP_PATH)
if (!isEmpty) {
print.error('Exception in emptyDir!')
return false
}
let status = true
await fileForEach(DIST_PATH, async src => {
const destPath = FTP_PATH + src.split('/').slice(-1)[0]
print.tip('Upload: ' + destPath)
if (!await put(ftp, src, destPath)) {
status = false
print.error('Exception in upload ' + destPath)
}
})
if (status) {
print.yellow('-------------------------------------')
print.success(' Automatic Deployment Success! ')
print.yellow('-------------------------------------')
}
ftp.destroy()
})
ftp.on('greeting', foo => {
print.tip('FTP greeting')
})
ftp.on('close', foo => {
print.tip('FTP close')
})
ftp.on('end', foo => {
print.tip('FTP end')
})
ftp.on('error', foo => {
print.tip('FTP error')
})
const { host, user, pass } = config || getNodeParams()
if (!host || !user || !pass) {
print.error('Upload Dist to FTP Missing Parameters!')
return false
}
print.tip('Start Upload!')
ftp.connect({
host,
user,
password: pass
})

99
deploy/plugin/ftp.js Normal file
View File

@ -0,0 +1,99 @@
async function getList (ftp, src) {
return new Promise(resolve => {
ftp.list(src, (err, list) => {
if (err) {
console.error(err)
resolve(false)
} else {
resolve(list)
}
})
})
}
async function rmDir (ftp, src, recusive = true) {
return new Promise(resolve => {
ftp.rmdir(src, recusive, err => {
if (err) {
console.error(err)
resolve(false)
} else {
resolve(true)
}
})
})
}
async function deleteFile (ftp, src) {
return new Promise(resolve => {
ftp.delete(src, err => {
if (err) {
console.error(err)
resolve(false)
} else {
resolve(true)
}
})
})
}
async function emptyDir (ftp, src, except = []) {
const list = await getList(ftp, src)
for (let i = 0, listNum = list.length; i < listNum; i++) {
const { type, name } = list[i]
if (type === 'd' && (name === '.' || name === '..')) continue
if (except.find(n => n === name)) continue
const fullSrc = `${src}${name}`
if (type === 'd') {
if (!await rmDir(ftp, fullSrc, true)) return false
} else {
if (!await deleteFile(ftp, fullSrc)) return false
}
}
return true
}
async function put (ftp, src, dest) {
return new Promise(resolve => {
ftp.put(src, dest, err => {
if (err) {
console.error(err)
resolve(false)
} else {
resolve(true)
}
})
})
}
async function mkDir (ftp, src, recusive = true) {
return new Promise(resolve => {
ftp.mkdir(src, recusive, err => {
if (err) {
console.error(err)
resolve(false)
} else {
resolve(true)
}
})
})
}
module.exports = {
put,
rmDir,
mkDir,
getList,
emptyDir,
deleteFile
}

View File

@ -0,0 +1,13 @@
function getNodeParams () {
const params = {}
process.argv.slice(2).forEach(param => {
param = param.split('=')
params[param[0]] = param[1]
})
return params
}
module.exports = getNodeParams

22
deploy/plugin/print.js Normal file
View File

@ -0,0 +1,22 @@
const print = {
log (info) {
console.log(info)
},
warn (info) {
console.log('\033[31;33m' + info + '\033[0m')
},
error (info) {
console.log('\033[31;40m' + info + '\033[0m')
},
tip (info) {
console.log('\033[40;32m' + info + '\033[0m')
},
success (info) {
console.log('\033[42;30m' + info + '\033[0m')
},
yellow (info) {
console.log('\033[31;33m' + info + '\033[0m')
}
}
module.exports = print

20217
dist/datav.map.vue.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/datav.min.vue.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@
<script>
import Charts from '@jiaminghi/charts'
import dvDigitalFlop from '../../digitalFlop/src/main'
import dvDigitalFlop from '../../digitalFlop/src/main.vue'
import { deepMerge } from '@jiaminghi/charts/lib/util/index'
@ -113,7 +113,7 @@ export default {
const sum = value.reduce((all, v) => all + v, 0)
const percent = parseInt(value[activeIndex] / sum * 100)
const percent = parseInt(value[activeIndex] / sum * 100) || 0
return {
content: '{nt}%',

View File

@ -68,11 +68,12 @@ export default {
name: 'DvBorderBox8',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'border-box-8',
path: `border-box-8-path-${(new Date()).getTime()}`,
gradient: `border-box-8-gradient-${(new Date()).getTime()}`,
mask: `border-box-8-mask-${(new Date()).getTime()}`
path: `border-box-8-path-${timestamp}`,
gradient: `border-box-8-gradient-${timestamp}`,
mask: `border-box-8-mask-${timestamp}`
}
},
computed: {

View File

@ -89,11 +89,12 @@ export default {
name: 'DvBorderBox9',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'border-box-9',
gradientId: `border-box-9-gradient-${(new Date()).getTime()}`,
maskId: `border-box-9-mask-${(new Date()).getTime()}`
gradientId: `border-box-9-gradient-${timestamp}`,
maskId: `border-box-9-mask-${timestamp}`
}
}
}

View File

@ -19,9 +19,10 @@ export default {
}
},
data () {
const timestamp = Date.now()
return {
ref: `charts-container-${(new Date()).getTime()}`,
chartRef: `chart-${(new Date()).getTime()}`,
ref: `charts-container-${timestamp}`,
chartRef: `chart-${timestamp}`,
chart: null
}

View File

@ -152,16 +152,17 @@ export default {
name: 'DvDecoration10',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'decoration-10',
animationId1: `d10ani1${(new Date()).getTime()}`,
animationId2: `d10ani2${(new Date()).getTime()}`,
animationId3: `d10ani3${(new Date()).getTime()}`,
animationId4: `d10ani4${(new Date()).getTime()}`,
animationId5: `d10ani5${(new Date()).getTime()}`,
animationId6: `d10ani6${(new Date()).getTime()}`,
animationId7: `d10ani7${(new Date()).getTime()}`
animationId1: `d10ani1${timestamp}`,
animationId2: `d10ani2${timestamp}`,
animationId3: `d10ani3${timestamp}`,
animationId4: `d10ani4${timestamp}`,
animationId5: `d10ani5${timestamp}`,
animationId6: `d10ani6${timestamp}`,
animationId7: `d10ani7${timestamp}`
}
}
}

View File

@ -90,10 +90,11 @@ export default {
name: 'DvDecoration9',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'decoration-9',
polygonId: `decoration-9-polygon-${(new Date()).getTime()}`,
polygonId: `decoration-9-polygon-${timestamp}`,
svgWH: [100, 100],

View File

@ -171,13 +171,14 @@ export default {
}
},
data () {
const timestamp = Date.now()
return {
ref: 'dv-flyline-chart',
unique: Math.random(),
maskId: `flyline-mask-id-${(new Date()).getTime()}`,
maskCircleId: `mask-circle-id-${(new Date()).getTime()}`,
gradientId: `gradient-id-${(new Date()).getTime()}`,
gradient2Id: `gradient2-id-${(new Date()).getTime()}`,
maskId: `flyline-mask-id-${timestamp}`,
maskCircleId: `mask-circle-id-${timestamp}`,
gradientId: `gradient-id-${timestamp}`,
gradient2Id: `gradient2-id-${timestamp}`,
defaultConfig: {
/**

View File

@ -57,9 +57,10 @@ export default {
}
},
data () {
const timestamp = Date.now()
return {
gradientId1: `percent-pond-gradientId1-${(new Date()).getTime()}`,
gradientId2: `percent-pond-gradientId2-${(new Date()).getTime()}`,
gradientId1: `percent-pond-gradientId1-${timestamp}`,
gradientId2: `percent-pond-gradientId2-${timestamp}`,
width: 0,
height: 0,
@ -239,7 +240,7 @@ export default {
this.height = dom.clientHeight
},
mergeConfig () {
let { config, defaultConfig } = this
const { config, defaultConfig } = this
this.mergedConfig = deepMerge(deepClone(defaultConfig, true), config || {})
}

View File

@ -236,7 +236,7 @@ export default {
data = data.map((row, i) => {
row = [...row]
const indexTag = `<span class="index" style="background-color: ${headerBGC};">${i + 1}</spand>`
const indexTag = `<span class="index" style="background-color: ${headerBGC};">${i + 1}</span>`
row.unshift(indexTag)
@ -260,11 +260,16 @@ export default {
calcWidths () {
const { width, mergedConfig, rowsData } = this
const { columnWidth } = mergedConfig
const { columnWidth, header } = mergedConfig
const usedWidth = columnWidth.reduce((all, w) => all + w, 0)
const columnNum = rowsData[0] ? rowsData[0].ceils.length : 0
let columnNum = 0
if (rowsData[0]) {
columnNum = rowsData[0].ceils.length
} else if (header.length) {
columnNum = header.length
}
const avgWidth = (width - usedWidth) / (columnNum - columnWidth.length)

View File

@ -9,7 +9,7 @@
<div class="ranking-info">
<div class="rank">No.{{ item.ranking }}</div>
<div class="info-name">{{ item.name }}</div>
<div class="ranking-value">{{ item.value }}</div>
<div class="ranking-value">{{ item.value + mergedConfig.unit }}</div>
</div>
<div class="ranking-column">
@ -69,7 +69,14 @@ export default {
* @default carousel = 'single'
* @example carousel = 'single' | 'page'
*/
carousel: 'single'
carousel: 'single',
/**
* @description Value unit
* @type {String}
* @default unit = ''
* @example unit = 'ton'
*/
unit: ''
},
mergedConfig: null,

View File

@ -53,8 +53,9 @@ export default {
default: () => ({})
},
data () {
const timestamp = Date.now()
return {
gradientId: `water-level-pond-${(new Date()).getTime()}`,
gradientId: `water-level-pond-${timestamp}`,
defaultConfig: {
/**

View File

@ -1,6 +1,6 @@
{
"name": "@jiaminghi/data-view",
"version": "2.4.2",
"version": "2.4.5",
"author": "JiaMing <743192023@qq.com>",
"description": "Vue Large screen data display component library",
"main": "lib/index.js",
@ -9,8 +9,9 @@
"url": "https://github.com/jiaming743/DataV.git"
},
"scripts": {
"compile": "node publish.js",
"prepublish": "npm run compile",
"build": "node build/index.js",
"prepublish": "npm run build",
"deploy": "node deploy/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"license": "MIT",
@ -24,10 +25,22 @@
"datavisual"
],
"dependencies": {
"@jiaminghi/charts": "*"
"@jiaminghi/charts": "*",
"@babel/runtime": "^7.5.5"
},
"homepage": "https://github.com/jiaming743/DataV#readme",
"devDependencies": {
"@jiaminghi/fs": "0.0.1"
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/plugin-transform-runtime": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@jiaminghi/fs": "0.0.1",
"ftp": "^0.3.10",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-terser": "^5.1.1",
"rollup-plugin-vue": "^5.0.1",
"vue-template-compiler": "^2.6.10"
}
}

View File

@ -1,3 +0,0 @@
const start = require('./publish/index')
start()

BIN
questionnaire.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -11,7 +11,7 @@
<script>
import Charts from '@jiaminghi/charts'
import dvDigitalFlop from '../../digitalFlop/src/main'
import dvDigitalFlop from '../../digitalFlop/src/main.vue'
import { deepMerge } from '@jiaminghi/charts/lib/util/index'
@ -113,7 +113,7 @@ export default {
const sum = value.reduce((all, v) => all + v, 0)
const percent = parseInt(value[activeIndex] / sum * 100)
const percent = parseInt(value[activeIndex] / sum * 100) || 0
return {
content: '{nt}%',

View File

@ -68,11 +68,12 @@ export default {
name: 'DvBorderBox8',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'border-box-8',
path: `border-box-8-path-${(new Date()).getTime()}`,
gradient: `border-box-8-gradient-${(new Date()).getTime()}`,
mask: `border-box-8-mask-${(new Date()).getTime()}`
path: `border-box-8-path-${timestamp}`,
gradient: `border-box-8-gradient-${timestamp}`,
mask: `border-box-8-mask-${timestamp}`
}
},
computed: {

View File

@ -89,11 +89,12 @@ export default {
name: 'DvBorderBox9',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'border-box-9',
gradientId: `border-box-9-gradient-${(new Date()).getTime()}`,
maskId: `border-box-9-mask-${(new Date()).getTime()}`
gradientId: `border-box-9-gradient-${timestamp}`,
maskId: `border-box-9-mask-${timestamp}`
}
}
}

View File

@ -19,9 +19,10 @@ export default {
}
},
data () {
const timestamp = Date.now()
return {
ref: `charts-container-${(new Date()).getTime()}`,
chartRef: `chart-${(new Date()).getTime()}`,
ref: `charts-container-${timestamp}`,
chartRef: `chart-${timestamp}`,
chart: null
}

View File

@ -152,16 +152,17 @@ export default {
name: 'DvDecoration10',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'decoration-10',
animationId1: `d10ani1${(new Date()).getTime()}`,
animationId2: `d10ani2${(new Date()).getTime()}`,
animationId3: `d10ani3${(new Date()).getTime()}`,
animationId4: `d10ani4${(new Date()).getTime()}`,
animationId5: `d10ani5${(new Date()).getTime()}`,
animationId6: `d10ani6${(new Date()).getTime()}`,
animationId7: `d10ani7${(new Date()).getTime()}`
animationId1: `d10ani1${timestamp}`,
animationId2: `d10ani2${timestamp}`,
animationId3: `d10ani3${timestamp}`,
animationId4: `d10ani4${timestamp}`,
animationId5: `d10ani5${timestamp}`,
animationId6: `d10ani6${timestamp}`,
animationId7: `d10ani7${timestamp}`
}
}
}

View File

@ -90,10 +90,11 @@ export default {
name: 'DvDecoration9',
mixins: [autoResize],
data () {
const timestamp = Date.now()
return {
ref: 'decoration-9',
polygonId: `decoration-9-polygon-${(new Date()).getTime()}`,
polygonId: `decoration-9-polygon-${timestamp}`,
svgWH: [100, 100],

View File

@ -171,13 +171,14 @@ export default {
}
},
data () {
const timestamp = Date.now()
return {
ref: 'dv-flyline-chart',
unique: Math.random(),
maskId: `flyline-mask-id-${(new Date()).getTime()}`,
maskCircleId: `mask-circle-id-${(new Date()).getTime()}`,
gradientId: `gradient-id-${(new Date()).getTime()}`,
gradient2Id: `gradient2-id-${(new Date()).getTime()}`,
maskId: `flyline-mask-id-${timestamp}`,
maskCircleId: `mask-circle-id-${timestamp}`,
gradientId: `gradient-id-${timestamp}`,
gradient2Id: `gradient2-id-${timestamp}`,
defaultConfig: {
/**

View File

@ -57,9 +57,10 @@ export default {
}
},
data () {
const timestamp = Date.now()
return {
gradientId1: `percent-pond-gradientId1-${(new Date()).getTime()}`,
gradientId2: `percent-pond-gradientId2-${(new Date()).getTime()}`,
gradientId1: `percent-pond-gradientId1-${timestamp}`,
gradientId2: `percent-pond-gradientId2-${timestamp}`,
width: 0,
height: 0,
@ -239,7 +240,7 @@ export default {
this.height = dom.clientHeight
},
mergeConfig () {
let { config, defaultConfig } = this
const { config, defaultConfig } = this
this.mergedConfig = deepMerge(deepClone(defaultConfig, true), config || {})
}

View File

@ -236,7 +236,7 @@ export default {
data = data.map((row, i) => {
row = [...row]
const indexTag = `<span class="index" style="background-color: ${headerBGC};">${i + 1}</spand>`
const indexTag = `<span class="index" style="background-color: ${headerBGC};">${i + 1}</span>`
row.unshift(indexTag)
@ -260,11 +260,16 @@ export default {
calcWidths () {
const { width, mergedConfig, rowsData } = this
const { columnWidth } = mergedConfig
const { columnWidth, header } = mergedConfig
const usedWidth = columnWidth.reduce((all, w) => all + w, 0)
const columnNum = rowsData[0] ? rowsData[0].ceils.length : 0
let columnNum = 0
if (rowsData[0]) {
columnNum = rowsData[0].ceils.length
} else if (header.length) {
columnNum = header.length
}
const avgWidth = (width - usedWidth) / (columnNum - columnWidth.length)

View File

@ -9,7 +9,7 @@
<div class="ranking-info">
<div class="rank">No.{{ item.ranking }}</div>
<div class="info-name">{{ item.name }}</div>
<div class="ranking-value">{{ item.value }}</div>
<div class="ranking-value">{{ item.value + mergedConfig.unit }}</div>
</div>
<div class="ranking-column">
@ -69,7 +69,14 @@ export default {
* @default carousel = 'single'
* @example carousel = 'single' | 'page'
*/
carousel: 'single'
carousel: 'single',
/**
* @description Value unit
* @type {String}
* @default unit = ''
* @example unit = 'ton'
*/
unit: ''
},
mergedConfig: null,

View File

@ -53,8 +53,9 @@ export default {
default: () => ({})
},
data () {
const timestamp = Date.now()
return {
gradientId: `water-level-pond-${(new Date()).getTime()}`,
gradientId: `water-level-pond-${timestamp}`,
defaultConfig: {
/**

43
umdExample.html Normal file
View File

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<title>DataV</title>
<script src="https://unpkg.com/vue"></script>
<!--Resources are located on personal servers for experience and testing only, do not use in production environments-->
<!--资源位于个人服务器仅供体验和测试,请勿在生产环境使用-->
<!--Debug version-->
<!--调试版-->
<script src="http://lib.jiaminghi.com/datav/datav.map.vue.js"></script>
<!--Compression version-->
<!--压缩版-->
<!-- <script src="http://lib.jiaminghi.com/datav/datav.min.vue.js"></script> -->
<style>
html, body, #app {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
.border-box-content {
color: rgb(66,185,131);
font-size: 40px;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div id="app">
<dv-border-box-1>Welcome to DataV</dv-border-box-1>
</div>
<script>
var app = new Vue({
el: '#app'
})
</script>
</body>
</html>