Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
visualDataServer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
standardized
visualDataServer
Commits
aa36ca79
Commit
aa36ca79
authored
Oct 29, 2021
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
3bccabc8
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
143 additions
and
8 deletions
+143
-8
out.ts
src/cal/out.ts
+69
-2
privateTools.ts
src/cal/privateTools.ts
+62
-2
main.ts
src/main.ts
+6
-3
sign.ts
src/middleware/sign.ts
+1
-0
serverConfig.ts
src/serverConfig.ts
+1
-1
bizError.ts
src/util/bizError.ts
+4
-0
No files found.
src/cal/out.ts
View file @
aa36ca79
//标准化输出
\ No newline at end of file
//标准化输出
import
{
getUnitMaxOccNum
,
separateDataAndUint
,
unifiedMaxAndMinValueAndStep
}
from
"./privateTools"
;
/**
* getStringOutData 获取文字列表返回结果
* @param title 数据标题
* @param valueList 数据体 格式:["txt...", "str..."]
* @returns {title, data:[string...]}
*/
export
function
getStringOutData
(
title
,
valueList
)
{
let
result
=
{
title
,
data
:[]
};
valueList
.
forEach
(
str
=>
{
result
.
data
.
push
(
str
);
});
return
result
;
}
/**
* getChartData 获取图表列表返回结果
* @param title 数据标题
* @param data 数据体 格式:{"图表名称":{unit:"", dataInfo:[{key:"数据key", value:"数据值"}, {key:"数据key", value:"数据值"} ] } }
* @param haveMoreY 是否有多个y轴 默认false
* @returns
*/
export
function
getChartData
(
title
,
data
)
{
let
result
=
{
title
,
dataList
:[]
};
for
(
let
chartName
in
data
)
{
let
{
unit
,
dataInfo
}
=
data
[
chartName
];
let
addData
:
any
=
{
title
:
chartName
};
let
max
=
0
;
let
min
=
new
Date
().
valueOf
();
let
total
=
0
;
let
thisUnitStats
=
{};
let
dataList
=
[];
for
(
let
i
=
0
;
i
<
dataInfo
.
length
;
i
++
)
{
let
{
key
,
value
}
=
dataInfo
[
i
];
let
{
dataNum
,
dataUnit
}
=
separateDataAndUint
(
value
);
min
=
Math
.
min
(
min
,
dataNum
);
max
=
Math
.
max
(
max
,
dataNum
);
thisUnitStats
[
dataUnit
]
=
thisUnitStats
[
dataUnit
]
?
thisUnitStats
[
dataUnit
]
+
1
:
1
;
total
+=
dataNum
;
dataList
.
push
({
key
,
value
:
dataNum
,
unit
:
dataUnit
});
}
let
statsUnit
=
getUnitMaxOccNum
(
thisUnitStats
);
let
thisChartUnit
=
unit
||
statsUnit
||
""
;
addData
[
"unit"
]
=
thisChartUnit
;
addData
[
"total"
]
=
total
;
let
{
maxNumber
,
minNumber
,
stepNumber
}
=
unifiedMaxAndMinValueAndStep
(
max
,
min
);
addData
[
"yMinValue"
]
=
minNumber
;
addData
[
"yMaxValue"
]
=
maxNumber
;
addData
[
"yStepValue"
]
=
stepNumber
;
addData
[
"dataList"
]
=
dataList
;
result
.
dataList
.
push
(
addData
);
}
}
src/cal/privateTools.ts
View file @
aa36ca79
//仅限cal中使用的工具
\ No newline at end of file
//仅限cal中使用的工具 禁止做任何修改
/**
* separateDataAndUint 截取字符串中的单位
* @param str 待处理字符串
* @returns {dataNumber:数据, dataUnit:单位}
*/
export
function
separateDataAndUint
(
str
)
{
if
(
!
str
)
return
{
dataNum
:
0
,
dataUnit
:
""
};
let
dataNum
=
parseFloat
(
str
.
replace
(
/
[\u
4E00-
\u
9FA5a-zA-Z
]
+/
,
""
));
let
dataUnit
=
str
.
replace
(
/^
(
-
)?\d
+
(\.\d
+
)?
/
,
""
);
return
{
dataNum
,
dataUnit
};
}
/**
* getUnitMaxOccNum 获取出现次数最多的单位
* @param unitMap 统计后的出现过的单位情况 结构{unit:出现次数}
* @returns 出现次数最多的单位
*/
1
export
function
getUnitMaxOccNum
(
unitMap
)
{
let
max
=
0
;
let
maxUnit
=
""
;
for
(
let
unit
in
unitMap
)
{
let
occNum
=
unitMap
[
unit
];
if
(
occNum
>
max
)
{
max
=
occNum
;
maxUnit
=
unit
;
}
}
return
maxUnit
;
}
/**
* unifiedMaxAndMinValueAndStep 求最大最小值以及间隙 固定分10份
* @param max 最大
* @param min 最小
* @returns {maxNumber:向上留值最大, minNumber:向下留值最小, stepNumber:间隔};
*/
export
function
unifiedMaxAndMinValueAndStep
(
max
,
min
)
{
let
maxNumber
=
Math
.
ceil
(
max
);
let
minNumber
=
Math
.
floor
(
min
);
function
getNumberInLength
(
length
)
{
let
lengthCount
=
1
;
for
(
let
i
=
1
;
i
<
length
;
i
++
)
{
lengthCount
=
lengthCount
*
10
;
}
return
lengthCount
;
}
let
maxNumberLength
=
getNumberInLength
(
`
${
maxNumber
}
`
.
length
);
let
minNumberLength
=
getNumberInLength
(
`
${
minNumber
}
`
.
length
);
if
(
maxNumber
<=
10
&&
maxNumber
>
0
)
maxNumber
=
10
;
else
maxNumber
=
Math
.
ceil
(
maxNumber
/
maxNumberLength
)
*
maxNumberLength
;
minNumber
=
Math
.
floor
(
minNumber
/
minNumberLength
)
*
minNumberLength
;
let
stepNumber
=
Math
.
ceil
((
maxNumber
-
minNumber
)
/
10
);
return
{
maxNumber
,
minNumber
,
stepNumber
};
}
\ No newline at end of file
src/main.ts
View file @
aa36ca79
import
{
getPort
}
from
"./serverConfig"
;
async
function
lanuch
()
{
//逻辑
test
();
}
function
test
()
{
}
\ No newline at end of file
// testMaxMin();
}
lanuch
();
\ No newline at end of file
src/middleware/sign.ts
View file @
aa36ca79
import
{
BizError
}
from
"../util/bizError"
;
const
LRU
=
require
(
"lru-cache"
)
,
cacheOptions
=
{
max
:
500000
,
maxAge
:
1000
*
60
*
10
}
...
...
src/serverConfig.ts
View file @
aa36ca79
//端口
export
function
getPort
()
:
number
{
return
Number
(
process
.
env
.
PORT
)
||
Number
(
process
.
argv
[
3
])
||
9000
;
return
Number
(
process
.
env
.
PORT
)
||
Number
(
process
.
argv
[
3
])
||
7536
;
}
// sit 测试环境 prod 生产环境 dem 演示环境(测试数据,前端无密码访问)
...
...
src/util/bizError.ts
0 → 100644
View file @
aa36ca79
export
class
BizError
extends
Error
{
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment