Commit 086ee686 by lixinming

no message

parent 8dbe4a80
No preview for this file type
import { mock柱状图数据模板, mock键值数据模板, mock地图数据模板} from "../util/mockData";
export async function getData(req, res) {
let ret:any = {};
ret["孵化载体"] = get孵化载体();
ret["孵化载体占比数据"] = get孵化载体占比数据();
ret["孵化载体数量趋势"] = get孵化载体数量趋势();
ret["孵化载体投资主体"] = get孵化载体投资主体();
ret["孵化载体行业分类"] = get孵化载体行业分类();
ret["孵化载体运营"] = get孵化载体运营();
ret["平均营收趋势"] = get平均营收趋势();
ret["重要评价指标"] = get重要评价指标();
ret["服务资源"] = get服务资源();
ret["政策服务"] = get政策服务();
ret["地图数据"] = get地图数据();
res.send(ret);
}
function get孵化载体() {
return mock键值数据模板(4, 4, 'c', 2, false);
}
function get孵化载体占比数据() {
return mock键值数据模板(2, 5, 'c', 1, true);
}
function get孵化载体数量趋势() {
return mock柱状图数据模板(11);
}
function get孵化载体投资主体() {
return mock键值数据模板(3, 2, 'c', 2, false);
}
function get孵化载体行业分类() {
return mock键值数据模板(5, 4, 'c', 2, false);
}
function get孵化载体运营() {
return mock键值数据模板(5, 2, 'c', 3, false);
}
function get平均营收趋势() {
return mock柱状图数据模板(7);
}
function get重要评价指标() {
return mock键值数据模板(4, 5, 'c', 3, false);
}
function get服务资源() {
return mock键值数据模板(8, 10, 'c', 3, false);
}
function get政策服务() {
return mock键值数据模板(2, 3, 'c', 4, false);
}
function get地图数据() {
return mock地图数据模板(100);
}
import { mock柱状图数据模板, mock键值数据模板, mock地图数据模板} from "../util/mockData";
export async function getData(req, res) {
let ret:any = {};
ret["上市企业板块分布"] = get上市企业板块分布();
ret["科创版企业"] = get科创版企业();
ret["挂牌企业"] = get挂牌企业();
ret["2020年企业融资情况"] = get2020年企业融资情况();
ret["2020年企业上市情况"] = get2020年企业上市情况();
ret["融资金额趋势"] = get融资金额趋势();
ret["上市企业行业分布"] = get上市企业行业分布();
ret["创投机构"] = get创投机构();
ret["融资企业行业分布"] = get融资企业行业分布();
ret["企业融资阶段分布"] = get企业融资阶段分布();
ret["金融产品担保方式占比"] = get金融产品担保方式占比();
ret["中央球展示数据"] = get中央球展示数据();
res.send(ret);
}
function get上市企业板块分布() {
return mock键值数据模板(8, 4, 'c', 3, true);
}
function get科创版企业() {
return mock键值数据模板(10, 6, 'c', 2, true);
}
function get挂牌企业() {
return mock键值数据模板(4, 4, 'c', 2, false);
}
function get2020年企业融资情况() {
return mock键值数据模板(3, 4, 'c', 2, false);
}
function get2020年企业上市情况() {
return mock键值数据模板(3, 5, 'c', 2, false);
}
function get融资金额趋势() {
return mock柱状图数据模板(17);
}
function get上市企业行业分布() {
return mock键值数据模板(5, 4, 'c', 2, false);
}
function get创投机构() {
return mock键值数据模板(4, 4, 'c', 2, true);
}
function get融资企业行业分布() {
return mock键值数据模板(8, 7, 'c', 2, true);
}
function get企业融资阶段分布() {
return mock键值数据模板(12, 6, 'c', 3, true);
}
function get金融产品担保方式占比() {
return mock键值数据模板(7, 6, 'c', 2, true);
}
function get中央球展示数据() {
return mock键值数据模板(5, 5, 'c', 3, true);
}
import { mock柱状图数据模板, mock键值数据模板, mock地图数据模板} from "../util/mockData";
export async function getData(req, res) {
let ret:any = {};
ret["企业特征"] = get企业特征();
ret["代表企业"] = get代表企业();
ret["海外项目"] = get海外项目();
ret["人才引进"] = get人才引进();
ret["营业收入TOP5"] = get营业收入TOP5();
ret["净利润TOP5"] = get净利润TOP5();
ret["研发投入TOP5"] = get研发投入TOP5();
ret["入孵企业数量趋势"] = get入孵企业数量趋势();
ret["孵化器2020入驻企业数量排名"] = get孵化器2020入驻企业数量排名();
ret["运营指标趋势"] = get运营指标趋势();
ret["企业运营情况"] = get企业运营情况();
ret["企业运营概况"] = get企业运营概况();
ret["科技创新"] = get科技创新();
ret["发明专利申请与授权数比例"] = get发明专利申请与授权数比例();
ret["高新技术企业数据概况"] = get高新技术企业数据概况();
ret["高新技术企业培育"] = get高新技术企业培育();
ret["企业融资"] = get企业融资();
ret["2020四季度重大融资事件"] = get2020四季度重大融资事件();
res.send(ret);
}
function get企业特征() {
return mock键值数据模板(5, 4, 'c', 3, false);
}
function get代表企业() {
return ;
}
function get海外项目() {
return mock键值数据模板(7, 4, 'c', 2, true);
}
function get人才引进() {
return mock键值数据模板(7, 6, 'c', 4, true);
}
function get营业收入TOP5() {
return mock键值数据模板(5, 12, 'c', 1, true);
}
function get净利润TOP5() {
return mock键值数据模板(5, 12, 'c', 1, true);
}
function get研发投入TOP5() {
return mock键值数据模板(5, 12, 'c', 1, true);
}
function get入孵企业数量趋势() {
return mock柱状图数据模板(11);
}
function get孵化器2020入驻企业数量排名() {
return mock键值数据模板(5, 10, 'c', 3, false);
}
function get运营指标趋势() {
return mock柱状图数据模板(17);
}
function get企业运营情况() {
return mock键值数据模板(5, 5, 'c', 3, true);
}
function get企业运营概况() {
return mock键值数据模板(5, 4, 'c', 5, true);
}
function get科技创新() {
return mock键值数据模板(5, 4, 'c', 5, false);
}
function get发明专利申请与授权数比例() {
return mock柱状图数据模板(6);
}
function get高新技术企业数据概况() {
return mock键值数据模板(3, 4, 'c', 3, true);
}
function get高新技术企业培育() {
return mock柱状图数据模板(5);
}
function get企业融资() {
return mock键值数据模板(4, 4, 'c', 3, false);
}
function get2020四季度重大融资事件() {
return mock键值数据模板(5, 8, 'c', 3, true);
}
import { mock柱状图数据模板, mock键值数据模板, mock地图数据模板} from "../util/mockData";
export async function getData(req, res) {
let ret:any = {};
ret["大中小企业融通发展联盟"] = get大中小企业融通发展联盟();
ret["主要成效"] = get主要成效();
ret["创业加速营"] = get创业加速营();
ret["大企业开放式创新平台"] = get大企业开放式创新平台();
ret["大企业服务和成果"] = get大企业服务和成果();
ret["地图数据"] = get地图数据();
res.send(ret);
}
function get大中小企业融通发展联盟() {
return mock键值数据模板(2, 4, 'c', 3, false);
}
function get主要成效() {
return mock键值数据模板(5, 10, 'c', 3, false);
}
function get创业加速营() {
return mock键值数据模板(1, 7, 'c', 1, false);
}
function get大企业开放式创新平台() {
return mock键值数据模板(3, 3, 'c', 1, false);
}
function get大企业服务和成果() {
return mock键值数据模板(4, 4, 'c', 2, false);
}
function get地图数据() {
return mock地图数据模板(22);
}
import { mock柱状图数据模板, mock键值数据模板, mock地图数据模板} from "../util/mockData";
export async function getData(req, res) {
let ret:any = {};
ret["双创集群"] = get双创集群();
ret["孵化器增长趋势"] = get孵化器增长趋势();
ret["企业培育"] = get企业培育();
ret["行业分布"] = get行业分布();
ret["张江大中小企业融通发展联盟"] = get张江大中小企业融通发展联盟();
ret["大企业开放式创新平台"] = get大企业开放式创新平台();
ret["科技金融"] = get科技金融();
ret["股权融资趋势"] = get股权融资趋势();
ret["地图数据"] = get地图数据();
res.send(ret);
}
function get双创集群() {
return mock键值数据模板(7, 8, 'c', 3, true);
}
function get孵化器增长趋势() {
return mock柱状图数据模板(6);
}
function get企业培育() {
return mock键值数据模板(3, 6, 'c', 3, true);
}
function get行业分布() {
return mock键值数据模板(5, 4, 'c', 3, true);
}
function get张江大中小企业融通发展联盟() {
return mock键值数据模板(2, 4, 'c', 2, false);
}
function get大企业开放式创新平台() {
return mock键值数据模板(3, 6, 'c', 1, true);
}
function get科技金融() {
return mock键值数据模板(3, 6, 'c', 3, true);
}
function get股权融资趋势() {
return mock柱状图数据模板(6);
}
function get地图数据() {
return mock地图数据模板(8);
}
import * as path from "path";
import * as fs from "fs";
import { BizError } from "../util/bizError";
import { limitEnteNameString } from "../util/tools";
import { getExcelDataBySheetName, analysisExcelDataOfObject } from "../util/analysisExcel";
export function getsheet1() {;
let bolckDataList = getExcelDataBySheetName('数据模板', 'sheet1');
let result = {};
for (let i = 0; i < bolckDataList.length; i++) {
let {blockData, blockTitle} = bolckDataList[i];
let analysisData = analysisExcelDataOfObject(blockData, true, true);
result[blockTitle] = analysisData;
}
return result;
}
export function getsheet2() {;
let bolckDataList = getExcelDataBySheetName('数据模板', 'sheet2');
let result = {};
for (let i = 0; i < bolckDataList.length; i++) {
let {blockData, blockTitle} = bolckDataList[i];
let analysisData = analysisExcelDataOfObject(blockData, true, true);
result[blockTitle] = analysisData;
}
return result;
}
\ No newline at end of file
let fs = require('fs');
const { title } = require('process');
const xlsx = require('node-xlsx');
const path = require('path');
//excel的名字
const excelName = "数据模板";
const excelName = "数据模板.xlsx";
let typeEnum = {
"键值数据" : 1,
"图标数据" : 2,
"列表数据" : 3
"柱状数据":1,
"列表数据":1,
"单轴多柱状数据":1,
"双轴多柱状数据":1,
}
const createBizAndDataConfigMap = {
"page1": {
sheetName:"页面1",
apiList:[
{ type:"键值数据", dataName:"模拟数据块", title:"教师学段人数", unit:"个", total:true, percent:false},
{ type:"键值数据", dataName:"模拟数据块2", title:"教师学段人数2", unit:"个", total:true, percent:false},
{ type:"柱状数据", dataName:"模拟数据块3", title:"教师学段人数", unit:"个", total:true, percent:false,subTitle:"111"},
{ type:"列表数据", dataName:"模拟数据块4", title:"教师学段人数", unit:"个", total:true, percent:false}
]
},
"page2": {
sheetName:"页面2",
apiList:[
{ type:"列表数据", dataName:"模拟数据块", title:"教师学段人数", unit:"个", total:true, percent:false},
{ type:"键值数据", dataName:"模拟数据块2", title:"教师学段人数2", unit:"个", total:true, percent:false},
{ type:"柱状数据", dataName:"模拟数据块3", title:"教师学段人数", unit:"个", total:true, percent:false,subTitle:"111"},
{ type:"键值数据", dataName:"模拟数据块4", title:"教师学段人数", unit:"个", total:true, percent:false}
]
},
"page3": {
sheetName:"页面3",
apiList:[
{ type:"列表数据", dataName:"模拟数据块", title:"教师学段人数", unit:"个", total:true, percent:false},
{ type:"键值数据", dataName:"模拟数据块2", title:"教师学段人数2", unit:"个", total:true, percent:false},
{ type:"柱状数据", dataName:"模拟数据块3", title:"教师学段人数", unit:"个", total:true, percent:false,subTitle:"111"},
{ type:"键值数据", dataName:"模拟数据块4", title:"教师学段人数", unit:"个", total:true, percent:false}
]
},
"page4": {
sheetName:"页面4",
apiList:[
{ type:"列表数据", dataName:"模拟数据块", title:"教师学段人数", unit:"个", total:true, percent:false},
{ type:"键值数据", dataName:"模拟数据块2", title:"教师学段人数2", unit:"个", total:true, percent:false},
{ type:"柱状数据", dataName:"模拟数据块3", title:"教师学段人数", unit:"个", total:true, percent:false,subTitle:"111"},
{ type:"键值数据", dataName:"模拟数据块4", title:"教师学段人数", unit:"个", total:true, percent:false}
]
},
"page5": {
sheetName:"页面5",
apiList:[
{ type:"列表数据", dataName:"模拟数据块", title:"教师学段人数", unit:"个", total:true, percent:false},
{ type:"键值数据", dataName:"模拟数据块2", title:"教师学段人数2", unit:"个", total:true, percent:false},
{ type:"柱状数据", dataName:"模拟数据块3", title:"教师学段人数", unit:"个", total:true, percent:false,subTitle:"111"},
{ type:"键值数据", dataName:"模拟数据块4", title:"教师学段人数", unit:"个", total:true, percent:false}
]
},
"page6": {
sheetName:"页面6",
apiList:[
{ type:"列表数据", dataName:"模拟数据块", title:"教师学段人数", unit:"个", total:true, percent:false},
{ type:"键值数据", dataName:"模拟数据块2", title:"教师学段人数2", unit:"个", total:true, percent:false},
{ type:"柱状数据", dataName:"模拟数据块3", title:"教师学段人数", unit:"个", total:true, percent:false,subTitle:"111"},
{ type:"键值数据", dataName:"模拟数据块4", title:"教师学段人数", unit:"个", total:true, percent:false}
]
}
let createBizAndDataConfigMap = {
// "page1": {
// sheetName:"智慧电眼_电力用户数",
// apiList:[
// { type:"键值数据", dataName:"基础数据", title:"基础数据", unit:"inData", total:true, percent:false},
// { type:"双轴多柱状数据", dataName:"用电趋势", title:"用电趋势", unit:{"用户数":"家", "空置率":"%"}, total:true, percent:false},
// { type:"柱状数据", dataName:"用电排序趋势", title:"用电排序趋势", unit:"户", total:true, percent:false},
// { type:"柱状数据", dataName:"企业生产指数", title:"企业生产指数", unit:"户", total:true, percent:false}
// ]
// }
};
//配置解析excel
function analysisConfigExcel() {
const workSheetsFromFile = xlsx.parse('../res/解析规则.xlsx');
let sheetMap = {};
let sheetList = [];
for (let i = 0; i < workSheetsFromFile.length; i++) {
let sheetInfo = workSheetsFromFile[i];
sheetMap[sheetInfo.name] = sheetInfo.data;
sheetList.push(sheetInfo);
}
return sheetMap
}
function createConfig() {
let excelData = analysisConfigExcel();
for (let configSheetName in excelData) {
let data = excelData[configSheetName];
for (let y = 1; y < data.length; y++) {
let valueList = data[y];
let pageName = valueList[0];
let sheetName = valueList[1];
let type = valueList[2];
let dataName = valueList[3];
let title = valueList[4];
let unit = valueList[5];
let total = valueList[6];
let precent = valueList[7];
if (!createBizAndDataConfigMap[pageName] ) createBizAndDataConfigMap[pageName] = {sheetName, apiList:[]};
createBizAndDataConfigMap[pageName].apiList.push({ type ,dataName ,title ,unit ,total ,precent });
}
}
}
createConfig();
//创建data层
function createData() {
......@@ -77,22 +69,30 @@ function createData() {
import * as fs from "fs";
import { BizError } from "../util/bizError";
import { limitEnteNameString } from "../util/tools";
import { getExcelDataBySheetName, analysisExcelDataOfObject } from "../util/analysisExcel";`;
import { getExcelDataBySheetName, analysisExcelDataOfObject, analysisExcelDataOfMoreObject } from "../util/analysisExcel";`;
for (let pangeName in createBizAndDataConfigMap) {
let { sheetName } = createBizAndDataConfigMap[pangeName];
str += `
let ofMoreObjList = [];
let ofObjList = [];
createBizAndDataConfigMap[pangeName].apiList.forEach( info => {
if (info.type == "双轴多柱状数据") ofMoreObjList.push(info.dataName);
else ofObjList.push(info.dataName);
});
str += `
export function get${sheetName}() {;
let bolckDataList = getExcelDataBySheetName('${excelName}', '${sheetName}');
let result = {};
let ofMoreObjList = ${JSON.stringify(ofMoreObjList)};
let ofObjList = ${JSON.stringify(ofObjList)};
for (let i = 0; i < bolckDataList.length; i++) {
let {blockData, blockTitle} = bolckDataList[i];
let analysisData = analysisExcelDataOfObject(blockData, true, true);
result[blockTitle] = analysisData;
if (ofMoreObjList.indexOf(blockTitle) > -1) result[blockTitle] = analysisExcelDataOfMoreObject(blockData, false);
if (ofObjList.indexOf(blockTitle) > -1) result[blockTitle] = analysisExcelDataOfObject(blockData, true, false);
}
return result;
......@@ -135,7 +135,7 @@ function createBiz(){
function getBizStr(apiList, sheetName) {
let str = `
import { getChartData, getKeyValue, limitEnteNameString, objKeyAndValue, objKeyReplace }from "../util/tools";
import { getChartData, getKeyValue, getListData, getSingleYAndMoreData, getMoreYChartData, objKeyReplace }from "../util/tools";
import { get${sheetName} } from "../data/analysisExcelData";
`;
str += `
......@@ -148,13 +148,36 @@ function getBizStr(apiList, sheetName) {
let {dataName, unit, total, percent, type,titleList,titleValueObj} = info;
const apiName = `api${index+1}`;
let subStr = `
ret["${apiName}"] = `;
let subStr;
switch(type) {
case "键值数据": subStr += `getKeyValue("${dataName}", excelData.${dataName},'${unit}', ${total}, ${percent} )`; break;
case "柱状数据": subStr += `getChartData(excelData.${dataName}, '${unit}', ${percent} )`; break;
case "列表数据": subStr += `getListData("${dataName}",excelData.${dataName},${titleList},${titleValueObj})`; break;
case "键值数据":
subStr = `
let ${dataName}DataAndUnit = objKeyReplace(excelData.${dataName});`;
if (unit == 'inData') {
subStr += `
ret["${apiName}"] = getKeyValue("${dataName}", ${dataName}DataAndUnit.dataMap, ${dataName}DataAndUnit.unitMap, ${total}, ${percent} )`;
} else {
subStr += `
ret["${apiName}"] = getKeyValue("${dataName}", ${dataName}DataAndUnit.dataMap, ${typeof unit == 'boolean' ? unit : `'${unit}'`}, ${total}, ${percent} )`;
}
break;
case "柱状数据":
subStr = `
ret["${apiName}"] = getChartData("${dataName}", excelData.${dataName}, '${unit}', ${percent} )`;
break;
case "列表数据":
subStr = `
ret["${apiName}"] = getListData("${dataName}",excelData.${dataName},${titleList},${titleValueObj})`;
break;
case "单轴多柱状数据":
subStr = `
ret["${apiName}"] = getSingleYAndMoreData("${dataName}", excelData.${dataName}, ${percent}, '${unit}')`;
break;
case "双轴多柱状数据":
subStr = `
ret["${apiName}"] = getMoreYChartData("${dataName}", excelData.${dataName}, ${percent}, ${JSON.stringify(unit)})`;
break;
};
str+=
......@@ -173,31 +196,31 @@ function getBizStr(apiList, sheetName) {
//创建Router层
function createRouter() {
let importName="";
let routergetName="";
let routerpostName="";
let importName =``;
let routergetName=``;
let routerpostName=``;
createBizAndDataConfigMap.forEach(apiInfo => {
for (let pageName in createBizAndDataConfigMap) {
importName+=`
import * as ${apiInfo.name}Biz from '../biz/${apiInfo.name}';
`
import * as ${pageName}Biz from '../biz/${pageName}';
`;
routergetName+=`
httpServer.get('/${apiInfo.name}', asyncHandler(${apiInfo.name}Biz.getData));
`
httpServer.get('/${pageName}', asyncHandler(${pageName}Biz.getData));
`;
routerpostName+=`
httpServer.post('/${apiInfo.name}', asyncHandler(${apiInfo.name}Biz.getData));
`
});
httpServer.post('/${pageName}', asyncHandler(${pageName}Biz.getData));
`;
}
let str=`
import * as asyncHandler from 'express-async-handler'
${importName}
import * as asyncHandler from 'express-async-handler'
${importName}
export function setRouter(httpServer){
${routergetName}
${routerpostName}
}`;
export function srtRouter(httpServer){
${routergetName}
${routerpostName}
}`
let path = `./routers/router.ts`;
fs.access(path, (err) => {
if (!err) {
......
import { httpServer } from "./net/http_server";
import { getPort } from "./serverConfig";
async function lanuch() {
//逻辑
httpServer.createServer(getPort());
console.log('This indicates that the server is started successfully.');
}
function test() {
}
\ No newline at end of file
lanuch();
\ No newline at end of file
import * as asyncHandler from 'express-async-handler'
import * as api1Biz from '../biz/api1';
import * as api2Biz from '../biz/api2';
export function srtRouter(httpServer){
httpServer.get('/api1', asyncHandler(api1Biz.getData));
httpServer.get('/api2', asyncHandler(api2Biz.getData));
httpServer.post('/api1', asyncHandler(api1Biz.getData));
httpServer.post('/api2', asyncHandler(api2Biz.getData));
}
\ No newline at end of file
//端口
export function getPort() : number {
return Number(process.env.PORT) || Number(process.argv[3]) || 9000;
return Number(process.env.PORT) || Number(process.argv[3]) || 8383;
}
// sit 测试环境 prod 生产环境 dem 演示环境(测试数据,前端无密码访问)
......
......@@ -30,7 +30,7 @@ export function getBlockDataByData(dataList) {
* analysisExcelDataOfObject 将excel解出来的数据块按需求解析成可用数据
* @param dataList excel解出来的数据
* @param isJumpTitle 是否跳过解析表头
* @param keyInX 表头是否是横向排列
* @param keyInX key是否横向排列
* @returns 返回 {"数据标题":数据对象 }
*/
export function analysisExcelDataOfObject(dataList, isJumpTitle?, keyInX?) {
......@@ -39,7 +39,7 @@ export function analysisExcelDataOfObject(dataList, isJumpTitle?, keyInX?) {
let keyList = dataList[0];
let valueList = dataList[1];
let i = isJumpTitle ? 1:0;
for (; i < keyList; i++) {
for (; i < keyList.length; i++) {
let key = keyList[i];
let value = valueList[i] || null;
result[key] = value;
......@@ -56,6 +56,47 @@ export function analysisExcelDataOfObject(dataList, isJumpTitle?, keyInX?) {
return result;
}
/**
* analysisExcelDataOfMoreObject 将excel解出来的数据块按需求解析成可用数据
* @param dataList excel解出来的数据
* @param isJumpTitle 是否跳过解析表头
* @param headerInx 第一个表头数据是否横向排列
* @returns 返回 {"第一个表头数据":{"表头数据":值...} }
*/
export function analysisExcelDataOfMoreObject(dataList, headerInx?) {
let result = {};
let titleList = dataList[0];
if (!headerInx) {
for (let y =1; y < dataList.length; y++) {
let dataTitle = dataList[y][0];
let thisData = {};
for (let x = 1; x < dataList[y].length; x++) {
let key = titleList[x];
thisData[key] = dataList[y][x];
}
result[dataTitle] = thisData;
}
} else {
let indexKeyMap = {};
titleList.forEach((thisTitle, index) => {
if (!index) return;
indexKeyMap[index] = thisTitle;
result[thisTitle] = {};
});
for (let y =1; y < dataList.length; y++) {
let thisKey = dataList[y][0];
for (let x = 1; x < dataList[y].length; x++) {
let thisTitle = indexKeyMap[x];
result[thisTitle][thisKey] = dataList[y][x];
}
}
}
return result;
}
export function testmain() {
let {sheetMap, sheetList} = getExcel(`${__dirname.substring(0,__dirname.indexOf("out"))}res\\数据模板.xlsx`);
......
......@@ -87,7 +87,7 @@ function separateDataAndUint(str) {
}
//object key替换 带单位
export function objKeyReplace(object, keyInfo) {
export function objKeyReplace(object, keyInfo = {}) {
let unitMap = {};
let dataMap = {};
for(let key in object) {
......@@ -138,11 +138,11 @@ export function getKeyValue(title, dataMap, unit, total, percent ) {
}
return data;
}
export function getChartData(dataMap, unit, percent, title?, subTitle? ) {
export function getChartData(title, dataMap, unit, percent ) {
unit = unit || "";
let data = {
title, yMaxValue:0, yMinValue:new Date().valueOf(), yStepValue:0, unit : percent ? "%" : unit ,
data: { title: subTitle, subTitle : subTitle, total : 0, list : [ ] }
data: { title: title , total : 0, list : [ ] }
}
let count = 0;
......@@ -182,6 +182,85 @@ export function getListData( title, dataList, titleList, titleValueObj ) {
return data;
}
//多个y轴的条柱状图 dataMap => {"name":{"key1":1111,"key2":232, "key3":dsfs, ... }, ... }
export function getMoreYChartData(title, dataMap, percent, unit ) {
let data = { title, dataList: [] };
for (let subDataName in dataMap) {
let onceData = { title:subDataName, yMaxValue:0, yMinValue:new Date().valueOf(), yStepValue:0, unit:"", total : 0, list : [ ] };
let thisDataInfo = dataMap[subDataName];
for (let key in thisDataInfo) {
let value = parseFloat(thisDataInfo[key]);
onceData.yMaxValue = Math.max(onceData.yMaxValue, value);
onceData.yMinValue = Math.min(onceData.yMinValue, value);
onceData.total += value;
}
onceData.yStepValue = Math.ceil(onceData.yMaxValue - onceData.yMinValue / onceData.total);
let thisUnit;
if (percent) {
thisUnit = "%";
onceData.yMaxValue = 100;
onceData.yStepValue = Math.ceil(100 - onceData.yMinValue / onceData.total);
}
else if (typeof unit == 'object') {
thisUnit = unit[subDataName] || "";
} else thisUnit = unit || "";
for (let key in thisDataInfo) {
let value;
if (percent) value = getDecimalForN( value/onceData.total, percent);
else value = parseFloat(thisDataInfo[key]);
let onceInfo = { key, unit:thisUnit, value };
onceData.list.push(onceInfo)
}
data.dataList.push(onceData);
}
return data;
}
//一个y轴的多个数据的柱状图
export function getSingleYAndMoreData(title, dataMap, percent, unit) {
let data = { title, dataList:[], yMaxValue:0, yMinValue:new Date().valueOf(), yStepValue:0, unit:"", total : 0 };
for (let subDataName in dataMap) {
let onceData = { title:subDataName, list:[] };
let thisDataCount = 0;
for (let key in dataMap) {
let value = parseFloat(dataMap[key]);
thisDataCount += value;
}
let thisUnit;
if (percent) thisUnit = "%";
else if (typeof unit == 'object') {
thisUnit = unit[subDataName] || "";
} else thisUnit = unit || "";
for (let key in dataMap) {
let value;
if (percent) value = getDecimalForN( value/thisDataCount, percent);
else value = parseFloat(dataMap[key]);
data.yMaxValue = Math.max(data.yMaxValue, value);
data.yMinValue = Math.min(data.yMinValue, value);
data.total += value;
let onceInfo = { key, unit:thisUnit, value };
onceData.list.push(onceInfo)
}
data.dataList.push(onceData);
}
data.yStepValue = Math.ceil(data.yMaxValue - data.yMinValue / data.total);
return data;
}
//按需取保留小数长度 tenNumber保留小数位 1位就填1
export function getDecimalForN(number, n) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment