Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zjntServer
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
node_server
zjntServer
Commits
d2614f9d
Commit
d2614f9d
authored
Dec 29, 2024
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
bce6cced
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
101 additions
and
44 deletions
+101
-44
cyszhgl.ts
src/biz/cyszhgl.ts
+79
-31
hjszzl.ts
src/biz/hjszzl.ts
+8
-8
cyszhglData.ts
src/data/table/cyszhglData.ts
+11
-4
hjszzlData.ts
src/data/table/hjszzlData.ts
+1
-1
router.ts
src/routers/router.ts
+2
-0
No files found.
src/biz/cyszhgl.ts
View file @
d2614f9d
...
@@ -10,23 +10,60 @@ export function getData(req, res) {
...
@@ -10,23 +10,60 @@ export function getData(req, res) {
let
ret
:
any
=
{};
let
ret
:
any
=
{};
let
mqjcPackageData
=
onceYBarChartPackage
(
excelData
[
'苗情检测'
],
'成熟度'
,
''
);
ret
[
'mqjc'
]
=
getOnceYBarChartOut
(
'苗情检测'
,
mqjcPackageData
);
let
keyValueOrTitleList
=
[
"风险类型占比"
,
"示范基地概览"
,
"示范地投入品使用记录"
,
"风险预警"
,
"产业销量排行"
,
"数字产业"
,
"数字化管理"
];
//适配 饼图 键值以及需要多个key的
let
barChartList
=
[
"苗情检测"
,
"蔬菜效益分析"
,
"渔业效益分析"
,
"灌溉量趋势分析"
,
"投入品使用情况"
,
"绿色防控物资使用情况"
,
"溉量趋势分析"
,
"效益分析"
];
//适配 柱状图 折线图
let
stringList
=
[];
let
decollatePlanarList
=
[
"入驻企业情况"
,
"预警详情工单"
,
"种植种类"
,
"种植分布"
,
"产品溯源信息"
,
"安全管理"
];
//适配 表格
let
titltListConfig
=
{};
// let mqjcPackageData = onceYBarChartPackage( excelData['苗情检测'], '成熟度','');
// ret['mqjc'] = getOnceYBarChartOut('苗情检测', mqjcPackageData);
let
sfjdglPackageData
=
keyValuePackage
(
excelData
[
'示范基地概览'
].
dataList
);
ret
[
'sfjdgl'
]
=
getKeyValueOut
(
'示范基地概览'
,
sfjdglPackageData
);
let
rzqyqkTableData
=
tablePackage
(
excelData
[
"入驻企业情况"
].
headerList
[
0
],
excelData
[
"入驻企业情况"
].
bodyList
);
ret
[
'rzqyqk'
]
=
getTableOut
(
'入驻企业情况'
,
rzqyqkTableData
);
let
sfdtrpsyjlPackageData
=
keyValuePackage
(
excelData
[
'示范地投入品使用记录'
].
dataList
);
ret
[
'sfdtrpsyjl'
]
=
getKeyValueOut
(
'示范地投入品使用记录'
,
sfdtrpsyjlPackageData
);
let
trpsyqkPackageData
=
onceYBarChartPackage
(
excelData
[
'投入品使用情况'
],
''
,
''
);
ret
[
'trpsyqk'
]
=
getOnceYBarChartOut
(
'投入品使用情况'
,
trpsyqkPackageData
);
let
lsfkwzsyqkPackageData
=
onceYBarChartPackage
(
excelData
[
'绿色防控物资使用情况'
],
''
,
''
);
ret
[
'lsfkwzsyqk'
]
=
getOnceYBarChartOut
(
'绿色防控物资使用情况'
,
lsfkwzsyqkPackageData
);
let
fxyjPackageData
=
keyValuePackage
(
excelData
[
'风险预警'
].
dataList
);
ret
[
'fxyj'
]
=
getKeyValueOut
(
'风险预警'
,
fxyjPackageData
);
let
fxlxzbPackageData
=
keyValuePackage
(
excelData
[
'风险类型占比'
].
dataList
);
ret
[
'fxlxzb'
]
=
getKeyValueOut
(
'风险类型占比'
,
fxlxzbPackageData
);
let
yjxqgdTableData
=
tablePackage
(
excelData
[
"预警详情工单"
].
headerList
[
0
],
excelData
[
"预警详情工单"
].
bodyList
);
ret
[
'yjxqgd'
]
=
getTableOut
(
'预警详情工单'
,
yjxqgdTableData
);
//===
let
gglqsfxPackageData
=
onceYBarChartPackage
(
excelData
[
'灌溉量趋势分析'
],
''
,
''
);
let
gglqsfxPackageData
=
onceYBarChartPackage
(
excelData
[
'灌溉量趋势分析'
],
''
,
''
);
ret
[
'gglqsfx'
]
=
getOnceYBarChartOut
(
'灌溉量趋势分析'
,
gglqsfxPackageData
);
ret
[
'gglqsfx'
]
=
getOnceYBarChartOut
(
'灌溉量趋势分析'
,
gglqsfxPackageData
);
let
zztrpsyqsfxPackageData
=
onceYBarChartPackage
(
excelData
[
'种子投入品使用趋势分析'
],
'斤'
,
''
);
//
let zztrpsyqsfxPackageData = onceYBarChartPackage( excelData['种子投入品使用趋势分析'], '斤','');
ret
[
'zztrpsyqsfx'
]
=
getOnceYBarChartOut
(
'种子投入品使用趋势分析'
,
zztrpsyqsfxPackageData
);
//
ret['zztrpsyqsfx'] = getOnceYBarChartOut('种子投入品使用趋势分析', zztrpsyqsfxPackageData);
let
zmtrpsyqsfxPackageData
=
onceYBarChartPackage
(
excelData
[
'种苗投入品使用趋势分析'
],
'斤'
,
''
);
//
let zmtrpsyqsfxPackageData = onceYBarChartPackage( excelData['种苗投入品使用趋势分析'], '斤','');
ret
[
'zmtrpsyqsfx'
]
=
getOnceYBarChartOut
(
'种苗投入品使用趋势分析'
,
zmtrpsyqsfxPackageData
);
//
ret['zmtrpsyqsfx'] = getOnceYBarChartOut('种苗投入品使用趋势分析', zmtrpsyqsfxPackageData);
let
fltrpsyqsfxPackageData
=
onceYBarChartPackage
(
excelData
[
'肥料投入品使用趋势分析'
],
'斤'
,
''
);
//
let fltrpsyqsfxPackageData = onceYBarChartPackage( excelData['肥料投入品使用趋势分析'], '斤','');
ret
[
'fltrpsyqsfx'
]
=
getOnceYBarChartOut
(
'肥料投入品使用趋势分析'
,
fltrpsyqsfxPackageData
);
//
ret['fltrpsyqsfx'] = getOnceYBarChartOut('肥料投入品使用趋势分析', fltrpsyqsfxPackageData);
let
nytrpsyqsfxPackageData
=
onceYBarChartPackage
(
excelData
[
'农药投入品使用趋势分析'
],
'斤'
,
''
);
//
let nytrpsyqsfxPackageData = onceYBarChartPackage( excelData['农药投入品使用趋势分析'], '斤','');
ret
[
'nytrpsyqsfx'
]
=
getOnceYBarChartOut
(
'农药投入品使用趋势分析'
,
nytrpsyqsfxPackageData
);
//
ret['nytrpsyqsfx'] = getOnceYBarChartOut('农药投入品使用趋势分析', nytrpsyqsfxPackageData);
let
scxyfxPackageData
=
doubleYBarCharPackage
(
excelData
[
'蔬菜效益分析'
],
[],
'吨'
,
'万元'
);
let
scxyfxPackageData
=
doubleYBarCharPackage
(
excelData
[
'蔬菜效益分析'
],
[],
'吨'
,
'万元'
);
ret
[
'scxyfx'
]
=
getDoubleYBarChartOut
(
'蔬菜效益分析'
,
scxyfxPackageData
);
ret
[
'scxyfx'
]
=
getDoubleYBarChartOut
(
'蔬菜效益分析'
,
scxyfxPackageData
);
...
@@ -34,11 +71,13 @@ export function getData(req, res) {
...
@@ -34,11 +71,13 @@ export function getData(req, res) {
let
yyxyfxPackageData
=
doubleYBarCharPackage
(
excelData
[
'渔业效益分析'
],
[],
'吨'
,
'万元'
);
let
yyxyfxPackageData
=
doubleYBarCharPackage
(
excelData
[
'渔业效益分析'
],
[],
'吨'
,
'万元'
);
ret
[
'yyxyfx'
]
=
getDoubleYBarChartOut
(
'渔业效益分析'
,
yyxyfxPackageData
);
ret
[
'yyxyfx'
]
=
getDoubleYBarChartOut
(
'渔业效益分析'
,
yyxyfxPackageData
);
let
fxlxzbPackageData
=
keyValuePackage
(
excelData
[
'风险类型占比'
].
dataList
);
ret
[
'fxlxzb'
]
=
getKeyValueOut
(
'风险类型占比'
,
fxlxzbPackageData
);
let
sfjdglPackageData
=
keyValuePackage
(
excelData
[
'示范基地概览'
].
dataList
);
ret
[
'sfjdgl'
]
=
getKeyValueOut
(
'示范基地概览'
,
sfjdglPackageData
);
// let zzzlTableData = tablePackage(excelData["种植种类"].headerList[0], excelData["种植种类"].bodyList);
// ret['zzzl'] = getTableOut( '种植种类', zzzlTableData);
// let zzzlPackageData = keyValuePackage(excelData['种植种类'].dataList);
// let zzzlPackageData = keyValuePackage(excelData['种植种类'].dataList);
// ret['zzzl'] = getKeyValueOut('种植种类', zzzlPackageData);
// ret['zzzl'] = getKeyValueOut('种植种类', zzzlPackageData);
...
@@ -46,17 +85,14 @@ export function getData(req, res) {
...
@@ -46,17 +85,14 @@ export function getData(req, res) {
// let zzfbPackageData = keyValuePackage(excelData['种植分布'].dataList);
// let zzfbPackageData = keyValuePackage(excelData['种植分布'].dataList);
// ret['zzfb'] = getKeyValueOut('种植分布', zzfbPackageData);
// ret['zzfb'] = getKeyValueOut('种植分布', zzfbPackageData);
let
zzzlTableData
=
tablePackage
(
excelData
[
"种植种类"
].
headerList
[
0
],
excelData
[
"种植种类"
].
bodyList
);
ret
[
'zzzl'
]
=
getTableOut
(
'种植种类'
,
zzzlTableData
);
let
zzfbTableData
=
tablePackage
(
excelData
[
"种植分布"
].
headerList
[
0
],
excelData
[
"种植分布"
].
bodyList
);
ret
[
'zzfb'
]
=
getTableOut
(
'种植分布'
,
zzfbTableData
);
let
sfdtrpsyjlPackageData
=
keyValuePackage
(
excelData
[
'示范地投入品使用记录'
].
dataList
);
// let zzfbTableData = tablePackage(excelData["种植分布"].headerList[0], excelData["种植分布"].bodyList);
ret
[
'sfdtrpsyjl'
]
=
getKeyValueOut
(
'示范地投入品使用记录'
,
sfdtrpsyjlPackageData
);
// ret['zzfb'] = getTableOut( '种植分布', zzfbTableData);
let
fxyjPackageData
=
keyValuePackage
(
excelData
[
'风险预警'
].
dataList
);
ret
[
'fxyj'
]
=
getKeyValueOut
(
'风险预警'
,
fxyjPackageData
);
let
cyxlphPackageData
=
keyValuePackage
(
excelData
[
'产业销量排行'
].
dataList
);
let
cyxlphPackageData
=
keyValuePackage
(
excelData
[
'产业销量排行'
].
dataList
);
ret
[
'cyxlph'
]
=
getKeyValueOut
(
'产业销量排行'
,
cyxlphPackageData
);
ret
[
'cyxlph'
]
=
getKeyValueOut
(
'产业销量排行'
,
cyxlphPackageData
);
...
@@ -70,8 +106,6 @@ export function getData(req, res) {
...
@@ -70,8 +106,6 @@ export function getData(req, res) {
let
szcyPackageData
=
keyValuePackage
(
excelData
[
'数字产业'
].
dataList
);
let
szcyPackageData
=
keyValuePackage
(
excelData
[
'数字产业'
].
dataList
);
ret
[
'szcy'
]
=
getKeyValueOut
(
'数字产业'
,
szcyPackageData
);
ret
[
'szcy'
]
=
getKeyValueOut
(
'数字产业'
,
szcyPackageData
);
let
yjxqgdTableData
=
tablePackage
(
excelData
[
"预警详情工单"
].
headerList
[
0
],
excelData
[
"预警详情工单"
].
bodyList
);
ret
[
'yjxqgd'
]
=
getTableOut
(
'预警详情工单'
,
yjxqgdTableData
);
// let znggTableData = onceYBarChartPackage( excelData['智能灌溉'], '','');
// let znggTableData = onceYBarChartPackage( excelData['智能灌溉'], '','');
...
@@ -84,14 +118,27 @@ export function getData(req, res) {
...
@@ -84,14 +118,27 @@ export function getData(req, res) {
// znggTableData[ntwz] = info;
// znggTableData[ntwz] = info;
// })
// })
let
znggTableData
=
{};
//
let znggTableData = {};
excelData
[
"智能灌溉"
].
dataList
.
forEach
(
info
=>
{
//
excelData["智能灌溉"].dataList.forEach( info => {
let
{
ntwz
,
trsd
,
ggsj
,
ggjgsj
,
sfxygg
,
imageSrc
}
=
info
;
//
let {ntwz, trsd, ggsj, ggjgsj, sfxygg, imageSrc} = info;
info
[
"img"
]
=
imageSrc
||
'图片地址'
;
//
info["img"] = imageSrc || '图片地址';
znggTableData
[
ntwz
]
=
info
;
//
znggTableData[ntwz] = info;
})
//
})
ret
[
'zngg'
]
=
{
title
:
'智能灌溉'
,
dataList
:
znggTableData
};
//
ret['zngg'] = {title:'智能灌溉', dataList:znggTableData};
res
.
send
(
ret
);
res
.
send
(
ret
);
}
}
/**
* 种植种类
*/
export
async
function
zzzl
(
req
,
res
)
{
let
{
type
}
=
req
.
body
;
let
excelData
=
cyszhglTableData
();
let
ret
:
any
=
{};
let
zzzlTableData
=
tablePackage
(
excelData
[
"种植种类"
].
headerList
[
0
],
excelData
[
"种植种类"
].
bodyList
);
ret
[
'zzzl'
]
=
getTableOut
(
'种植种类'
,
zzzlTableData
);
}
\ No newline at end of file
src/biz/hjszzl.ts
View file @
d2614f9d
...
@@ -20,17 +20,17 @@ export function getData(req, res) {
...
@@ -20,17 +20,17 @@ export function getData(req, res) {
let
zdqsbhPackageData
=
onceYBarChartPackage
(
excelData
[
'浊度趋势变化'
],
''
,
''
);
let
zdqsbhPackageData
=
onceYBarChartPackage
(
excelData
[
'浊度趋势变化'
],
''
,
''
);
ret
[
'zdqsbh'
]
=
getOnceYBarChartOut
(
'浊度趋势变化'
,
zdqsbhPackageData
);
ret
[
'zdqsbh'
]
=
getOnceYBarChartOut
(
'浊度趋势变化'
,
zdqsbhPackageData
);
let
wdbhqsPackageData
=
onceYBarChartPackage
(
excelData
[
'温度趋势变化'
],
''
,
''
);
//
let wdbhqsPackageData = onceYBarChartPackage( excelData['温度趋势变化'], '','');
ret
[
'zdqswdbhqsbh'
]
=
getOnceYBarChartOut
(
'温度趋势变化'
,
wdbhqsPackageData
);
//
ret['zdqswdbhqsbh'] = getOnceYBarChartOut('温度趋势变化', wdbhqsPackageData);
let
PHzqsbhPackageData
=
onceYBarChartPackage
(
excelData
[
'PH值趋势变化'
],
''
,
''
);
//
let PHzqsbhPackageData = onceYBarChartPackage( excelData['PH值趋势变化'], '','');
ret
[
'PHzqsbh'
]
=
getOnceYBarChartOut
(
'浊度趋势变化'
,
PHzqsbhPackageData
);
//
ret['PHzqsbh'] = getOnceYBarChartOut('浊度趋势变化', PHzqsbhPackageData);
let
NH3NqsbhPackageData
=
onceYBarChartPackage
(
excelData
[
'NH3-N趋势变化'
],
''
,
''
);
//
let NH3NqsbhPackageData = onceYBarChartPackage( excelData['NH3-N趋势变化'], '','');
ret
[
'NH3Nqsbh'
]
=
getOnceYBarChartOut
(
'NH3-N趋势变化'
,
NH3NqsbhPackageData
);
//
ret['NH3Nqsbh'] = getOnceYBarChartOut('NH3-N趋势变化', NH3NqsbhPackageData);
let
rjyqsbhPackageData
=
onceYBarChartPackage
(
excelData
[
'溶解氧趋势变化'
],
''
,
''
);
//
let rjyqsbhPackageData = onceYBarChartPackage( excelData['溶解氧趋势变化'], '','');
ret
[
'rjyqsbh'
]
=
getOnceYBarChartOut
(
'溶解氧趋势变化'
,
rjyqsbhPackageData
);
//
ret['rjyqsbh'] = getOnceYBarChartOut('溶解氧趋势变化', rjyqsbhPackageData);
let
chzlcxPackageData
=
onceYBarChartPackage
(
excelData
[
'虫害治理成效'
],
''
,
''
);
let
chzlcxPackageData
=
onceYBarChartPackage
(
excelData
[
'虫害治理成效'
],
''
,
''
);
ret
[
'chzlcx'
]
=
getOnceYBarChartOut
(
'虫害治理成效'
,
chzlcxPackageData
);
ret
[
'chzlcx'
]
=
getOnceYBarChartOut
(
'虫害治理成效'
,
chzlcxPackageData
);
...
...
src/data/table/cyszhglData.ts
View file @
d2614f9d
...
@@ -25,13 +25,20 @@ export function cyszhglTableData() {
...
@@ -25,13 +25,20 @@ export function cyszhglTableData() {
let
blockDataList
=
onceSheetBecomeOfblockData
(
'zjny.xlsx'
,
'产业数字化管理'
);
let
blockDataList
=
onceSheetBecomeOfblockData
(
'zjny.xlsx'
,
'产业数字化管理'
);
let
keyValueOrTitleList
=
[
"智能灌溉"
,
"风险类型占比"
,
"示范基地概览"
,
"示范地投入品使用记录"
,
"风险预警"
,
"产业销量排行"
,
"数字产业"
];
//适配 饼图 键值以及需要多个key的
// let keyValueOrTitleList = ["智能灌溉","风险类型占比","示范基地概览","示范地投入品使用记录","风险预警","产业销量排行","数字产业"];//适配 饼图 键值以及需要多个key的
let
barChartList
=
[
"苗情检测"
,
"种子投入品使用趋势分析"
,
"种苗投入品使用趋势分析"
,
"肥料投入品使用趋势分析"
,
"农药投入品使用趋势分析"
,
// let barChartList = ["苗情检测","种子投入品使用趋势分析","种苗投入品使用趋势分析","肥料投入品使用趋势分析","农药投入品使用趋势分析",
"蔬菜效益分析"
,
"渔业效益分析"
,
"灌溉量趋势分析"
];
//适配 柱状图 折线图
// "蔬菜效益分析","渔业效益分析","灌溉量趋势分析"]; //适配 柱状图 折线图
// let stringList = [];
// let decollatePlanarList =["预警详情工单","种植种类", "种植分布","产品溯源信息"];//适配 表格
// let titltListConfig = {};
let
keyValueOrTitleList
=
[
"风险类型占比"
,
"示范基地概览"
,
"示范地投入品使用记录"
,
"风险预警"
,
"产业销量排行"
,
"数字产业"
,
"数字化管理"
];
//适配 饼图 键值以及需要多个key的
let
barChartList
=
[
"苗情检测"
,
"蔬菜效益分析"
,
"渔业效益分析"
,
"灌溉量趋势分析"
,
"投入品使用情况"
,
"绿色防控物资使用情况"
,
"溉量趋势分析"
,
"效益分析"
];
//适配 柱状图 折线图
let
stringList
=
[];
let
stringList
=
[];
let
decollatePlanarList
=
[
"
预警详情工单"
,
"种植种类"
,
"种植分布"
,
"产品溯源信息
"
];
//适配 表格
let
decollatePlanarList
=
[
"
入驻企业情况"
,
"预警详情工单"
,
"种植种类"
,
"种植分布"
,
"产品溯源信息"
,
"安全管理
"
];
//适配 表格
let
titltListConfig
=
{};
let
titltListConfig
=
{};
let
result
=
packageDataProcess
(
blockDataList
,
titltListConfig
,
keyValueOrTitleList
,
barChartList
,
stringList
,
decollatePlanarList
);
let
result
=
packageDataProcess
(
blockDataList
,
titltListConfig
,
keyValueOrTitleList
,
barChartList
,
stringList
,
decollatePlanarList
);
return
result
;
return
result
;
...
...
src/data/table/hjszzlData.ts
View file @
d2614f9d
...
@@ -25,7 +25,7 @@ export function hjszzlTableData() {
...
@@ -25,7 +25,7 @@ export function hjszzlTableData() {
let
blockDataList
=
onceSheetBecomeOfblockData
(
'zjny.xlsx'
,
'环境数字治理'
);
let
blockDataList
=
onceSheetBecomeOfblockData
(
'zjny.xlsx'
,
'环境数字治理'
);
let
keyValueOrTitleList
=
[
"天气检测"
,
"土壤检测"
,
"水质检测"
,
"环境基础分析"
,
"治理情况"
,
"灾害性应急管理"
];
//适配 饼图 键值以及需要多个key的
let
keyValueOrTitleList
=
[
"天气检测"
,
"土壤检测"
,
"水质检测"
,
"环境基础分析"
,
"治理情况"
,
"灾害性应急管理"
,
"病害虫治理"
,
"虫害检测灯预警"
,
"气象灾害列表"
];
//适配 饼图 键值以及需要多个key的
let
barChartList
=
[
"气温趋势"
,
"土壤微量元素监测"
,
"浊度趋势变化"
,
"温度趋势变化"
,
"PH值趋势变化"
,,
"NH3-N趋势变化"
,
"溶解氧趋势变化"
,
"虫害治理成效"
];
//适配 柱状图 折线图 //
let
barChartList
=
[
"气温趋势"
,
"土壤微量元素监测"
,
"浊度趋势变化"
,
"温度趋势变化"
,
"PH值趋势变化"
,,
"NH3-N趋势变化"
,
"溶解氧趋势变化"
,
"虫害治理成效"
];
//适配 柱状图 折线图 //
let
stringList
=
[];
let
stringList
=
[];
let
decollatePlanarList
=
[
"天气检测表"
];
//适配 表格
let
decollatePlanarList
=
[
"天气检测表"
];
//适配 表格
...
...
src/routers/router.ts
View file @
d2614f9d
...
@@ -34,6 +34,8 @@ export function setRouter(httpServer){
...
@@ -34,6 +34,8 @@ export function setRouter(httpServer){
httpServer
.
get
(
'/jiqiren/right'
,
asyncHandler
(
jiQiRenBiz
.
getRight
));
httpServer
.
get
(
'/jiqiren/right'
,
asyncHandler
(
jiQiRenBiz
.
getRight
));
//======post
//======post
httpServer
.
post
(
'/weather'
,
asyncHandler
(
leftBiz
.
getData
));
httpServer
.
get
(
'/weather'
,
asyncHandler
(
leftBiz
.
getData
));
httpServer
.
post
(
'/cyszhgl'
,
asyncHandler
(
cyszhglBiz
.
getData
));
httpServer
.
post
(
'/cyszhgl'
,
asyncHandler
(
cyszhglBiz
.
getData
));
...
...
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