Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
-布谷鸟-
nosqlclient
提交
0ace9c77
N
nosqlclient
项目概览
-布谷鸟-
/
nosqlclient
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
nosqlclient
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0ace9c77
编写于
5月 08, 2017
作者:
R
rsercano
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
resolves #351
上级
efaf4339
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
68 addition
and
68 deletion
+68
-68
client/imports/views/layouts/top_navbar/connections/connections.js
...ports/views/layouts/top_navbar/connections/connections.js
+5
-32
client/imports/views/layouts/top_navbar/top_navbar.html
client/imports/views/layouts/top_navbar/top_navbar.html
+1
-1
client/imports/views/layouts/top_navbar/top_navbar.js
client/imports/views/layouts/top_navbar/top_navbar.js
+44
-10
server/imports/internal/startup.js
server/imports/internal/startup.js
+1
-1
server/imports/mongodb/methods_common.js
server/imports/mongodb/methods_common.js
+17
-24
未找到文件。
client/imports/views/layouts/top_navbar/connections/connections.js
浏览文件 @
0ace9c77
...
...
@@ -5,6 +5,7 @@ import {ReactiveVar} from "meteor/reactive-var";
import
{
FlowRouter
}
from
"
meteor/kadira:flow-router
"
;
import
Helper
from
"
/client/imports/helper
"
;
import
{
Connections
}
from
"
/lib/imports/collections/connections
"
;
import
{
loadFile
}
from
"
/client/imports/views/layouts/top_navbar/top_navbar
"
;
import
"
./connections.html
"
;
const
toastr
=
require
(
'
toastr
'
);
...
...
@@ -255,7 +256,7 @@ const prepareFormForEdit = function () {
const
loadSSHCertificate
=
function
(
connection
,
currentConnection
,
done
)
{
if
(
connection
.
ssh
)
{
if
(
connection
.
ssh
.
certificateFileName
)
{
load
Certificat
e
(
currentConnection
.
ssh
?
currentConnection
.
ssh
.
certificateFile
:
null
,
$
(
'
#inputSshCertificate
'
),
function
(
val
)
{
load
Fil
e
(
currentConnection
.
ssh
?
currentConnection
.
ssh
.
certificateFile
:
null
,
$
(
'
#inputSshCertificate
'
),
function
(
val
)
{
connection
.
ssh
.
certificateFile
=
val
;
done
(
connection
);
});
...
...
@@ -306,7 +307,7 @@ const populateConnection = function (currentConnection, done) {
const
loadCertificateKeyFile
=
function
(
connection
,
prop
,
currentConnection
,
done
)
{
if
(
connection
[
prop
].
certificateKeyFileName
)
{
load
Certificat
e
(
currentConnection
[
prop
]
?
currentConnection
[
prop
].
certificateKeyFile
:
null
,
$
(
'
#inputCertificateKey
'
),
function
(
val
)
{
load
Fil
e
(
currentConnection
[
prop
]
?
currentConnection
[
prop
].
certificateKeyFile
:
null
,
$
(
'
#inputCertificateKey
'
),
function
(
val
)
{
connection
[
prop
].
certificateKeyFile
=
val
;
done
();
});
...
...
@@ -317,7 +318,7 @@ const loadCertificateKeyFile = function (connection, prop, currentConnection, do
const
loadsslCertificate
=
function
(
connection
,
prop
,
currentConnection
,
done
)
{
if
(
connection
[
prop
].
certificateFileName
)
{
load
Certificat
e
(
currentConnection
[
prop
]
?
currentConnection
[
prop
].
certificateFile
:
null
,
$
(
'
#inputCertificate
'
),
function
(
val
)
{
load
Fil
e
(
currentConnection
[
prop
]
?
currentConnection
[
prop
].
certificateFile
:
null
,
$
(
'
#inputCertificate
'
),
function
(
val
)
{
connection
[
prop
].
certificateFile
=
val
;
loadCertificateKeyFile
(
connection
,
prop
,
currentConnection
,
done
);
});
...
...
@@ -329,7 +330,7 @@ const loadsslCertificate = function (connection, prop, currentConnection, done)
const
loadRootCa
=
function
(
connection
,
prop
,
currentConnection
,
done
)
{
if
(
connection
[
prop
].
rootCAFileName
)
{
load
Certificat
e
(
currentConnection
[
prop
]
?
currentConnection
[
prop
].
rootCAFile
:
null
,
$
(
'
#inputRootCA
'
),
function
(
val
)
{
load
Fil
e
(
currentConnection
[
prop
]
?
currentConnection
[
prop
].
rootCAFile
:
null
,
$
(
'
#inputRootCA
'
),
function
(
val
)
{
connection
[
prop
].
rootCAFile
=
val
;
loadsslCertificate
(
connection
,
prop
,
currentConnection
,
done
);
});
...
...
@@ -339,22 +340,6 @@ const loadRootCa = function (connection, prop, currentConnection, done) {
}
};
const
loadCertificate
=
function
(
currentVal
,
input
,
done
)
{
let
fileInput
=
input
.
siblings
(
'
.bootstrap-filestyle
'
).
children
(
'
input
'
);
if
(
input
[
0
].
files
.
length
==
0
&&
currentVal
&&
fileInput
.
val
())
{
done
(
currentVal
);
}
else
if
(
input
[
0
].
files
.
length
!=
0
)
{
const
fileReader
=
new
FileReader
();
fileReader
.
onload
=
function
(
file
)
{
done
(
new
Uint8Array
(
file
.
target
.
result
));
};
fileReader
.
readAsArrayBuffer
(
input
[
0
].
files
[
0
]);
}
else
{
done
([]);
}
};
const
fillSsh
=
function
(
connection
)
{
const
port
=
$
(
'
#inputSshPort
'
).
val
();
const
localPort
=
$
(
'
#inputSshLocalPort
'
).
val
();
...
...
@@ -627,18 +612,6 @@ Template.connections.events({
$
(
e
.
currentTarget
).
parents
(
'
.divHostField
'
).
remove
();
},
'
change .filestyle
'
(
e
){
let
inputSelector
=
$
(
'
#
'
+
e
.
currentTarget
.
id
);
let
blob
=
inputSelector
[
0
].
files
[
0
];
let
fileInput
=
inputSelector
.
siblings
(
'
.bootstrap-filestyle
'
).
children
(
'
input
'
);
if
(
blob
)
{
fileInput
.
val
(
blob
.
name
);
}
else
{
fileInput
.
val
(
''
);
}
},
'
click #btnCreateNewConnection
'
()
{
$
(
'
#addEditConnectionModalTitle
'
).
text
(
'
Add Connection
'
);
const
modal
=
$
(
'
#addEditConnectionModal
'
);
...
...
client/imports/views/layouts/top_navbar/top_navbar.html
浏览文件 @
0ace9c77
...
...
@@ -108,7 +108,7 @@
<div
class=
"form-group"
>
<label
class=
"col-lg-3 control-label"
>
Backup File
</label>
<div
class=
"col-lg-9"
>
<input
class=
"form-control
"
type=
"text
"
id=
"inputImportBackupFile"
<input
class=
"form-control
filestyle"
type=
"file
"
id=
"inputImportBackupFile"
data-buttonName=
"btn-primary"
>
<span
class=
"help-block m-b-none"
>
Example:
<b>
/home/user/mongoclient/backup_17_10_2016_18_24_01.json
</b></span>
</div>
...
...
client/imports/views/layouts/top_navbar/top_navbar.js
浏览文件 @
0ace9c77
...
...
@@ -18,7 +18,27 @@ require('datatables.net-bs')(window, $);
require
(
'
datatables.net-buttons-bs
'
)(
window
,
$
);
require
(
'
datatables.net-responsive-bs
'
)(
window
,
$
);
export
const
loadFile
=
function
(
currentVal
,
input
,
done
,
readAsString
)
{
let
fileInput
=
input
.
siblings
(
'
.bootstrap-filestyle
'
).
children
(
'
input
'
);
if
(
input
[
0
].
files
.
length
==
0
&&
currentVal
&&
fileInput
.
val
())
{
done
(
currentVal
);
}
else
if
(
input
[
0
].
files
.
length
!=
0
)
{
const
fileReader
=
new
FileReader
();
fileReader
.
onload
=
function
(
file
)
{
if
(
readAsString
)
done
(
file
.
target
.
result
);
else
done
(
new
Uint8Array
(
file
.
target
.
result
));
};
if
(
readAsString
)
fileReader
.
readAsText
(
input
[
0
].
files
[
0
],
"
UTF-8
"
);
else
fileReader
.
readAsArrayBuffer
(
input
[
0
].
files
[
0
]);
}
else
{
done
([]);
}
};
const
init
=
function
()
{
$
(
"
.filestyle
"
).
filestyle
({});
let
selectorForSwitchDatabases
=
$
(
'
#tblSwitchDatabases
'
);
selectorForSwitchDatabases
.
find
(
'
tbody
'
).
on
(
'
click
'
,
'
tr
'
,
function
()
{
let
table
=
selectorForSwitchDatabases
.
DataTable
();
...
...
@@ -65,16 +85,18 @@ Template.topNavbar.events({
if
(
isImport
&&
importInput
.
val
())
{
laddaButton
.
start
();
Meteor
.
call
(
'
importMongoclient
'
,
importInput
.
val
(),
function
(
err
)
{
if
(
err
)
{
toastr
.
error
(
"
Couldn't import:
"
+
err
.
message
);
}
else
{
toastr
.
success
(
"
Successfully imported from
"
+
importInput
.
val
());
$
(
'
#importExportMongoclientModal
'
).
modal
(
'
hide
'
);
}
Ladda
.
stopAll
();
});
loadFile
(
null
,
importInput
,
function
(
val
)
{
Meteor
.
call
(
'
importMongoclient
'
,
val
,
function
(
err
)
{
if
(
err
)
{
toastr
.
error
(
"
Couldn't import:
"
+
err
.
message
);
}
else
{
toastr
.
success
(
"
Successfully imported from
"
+
importInput
.
siblings
(
'
.bootstrap-filestyle
'
).
children
(
'
input
'
).
val
());
$
(
'
#importExportMongoclientModal
'
).
modal
(
'
hide
'
);
}
Ladda
.
stopAll
();
});
},
true
);
}
else
if
(
!
isImport
&&
exportInput
.
val
())
{
laddaButton
.
start
();
...
...
@@ -92,6 +114,18 @@ Template.topNavbar.events({
},
'
change .filestyle
'
(
e
){
let
inputSelector
=
$
(
'
#
'
+
e
.
currentTarget
.
id
);
let
blob
=
inputSelector
[
0
].
files
[
0
];
let
fileInput
=
inputSelector
.
siblings
(
'
.bootstrap-filestyle
'
).
children
(
'
input
'
);
if
(
blob
)
{
fileInput
.
val
(
blob
.
name
);
}
else
{
fileInput
.
val
(
''
);
}
},
'
click #btnRefreshCollections2
'
()
{
connect
(
true
);
},
...
...
server/imports/internal/startup.js
浏览文件 @
0ace9c77
...
...
@@ -12,7 +12,7 @@ import {parseUrl} from "./internal_methods";
/**
* Migrates 1.x version connections to 2.x
*/
const
migrateConnectionsIfExist
=
function
()
{
export
const
migrateConnectionsIfExist
=
function
()
{
let
settings
=
Settings
.
findOne
();
if
(
settings
.
isMigrationDone
)
return
;
...
...
server/imports/mongodb/methods_common.js
浏览文件 @
0ace9c77
...
...
@@ -6,6 +6,7 @@
import
{
Meteor
}
from
"
meteor/meteor
"
;
import
{
Settings
}
from
"
/lib/imports/collections/settings
"
;
import
{
Connections
}
from
"
/lib/imports/collections/connections
"
;
import
{
migrateConnectionsIfExist
}
from
"
/server/imports/internal/startup
"
;
import
ShellCommands
from
"
/lib/imports/collections/shell
"
;
import
SchemaAnaylzeResult
from
"
/lib/imports/collections/schema_analyze_result
"
;
import
LOGGER
from
"
../internal/logger
"
;
...
...
@@ -188,34 +189,26 @@ Meteor.methods({
importMongoclient
(
file
)
{
LOGGER
.
info
(
'
[importMongoclient]
'
,
file
);
let
result
=
Async
.
runSync
(
function
(
done
)
{
try
{
fs
.
readFile
(
file
,
'
utf8
'
,
function
(
err
,
data
)
{
done
(
err
,
data
);
});
}
catch
(
ex
)
{
LOGGER
.
error
(
'
[importMongoclient]
'
,
ex
);
done
(
new
Meteor
.
Error
(
ex
.
message
),
null
);
try
{
let
mongoclientData
=
JSON
.
parse
(
file
);
if
(
mongoclientData
.
settings
)
{
Settings
.
remove
({});
delete
mongoclientData
.
settings
.
_id
;
Settings
.
insert
(
mongoclientData
.
settings
);
}
});
if
(
result
.
err
)
{
return
result
;
}
let
mongoclientData
=
JSON
.
parse
(
result
.
result
);
if
(
mongoclientData
.
settings
)
{
Settings
.
remove
({});
delete
mongoclientData
.
settings
.
_id
;
Settings
.
insert
(
mongoclientData
.
settings
);
}
if
(
mongoclientData
.
connections
)
{
for
(
let
i
=
0
;
i
<
mongoclientData
.
connections
.
length
;
i
++
)
{
delete
mongoclientData
.
connections
[
i
].
_id
;
Connections
.
_collection
.
insert
(
mongoclientData
.
connections
[
i
]);
if
(
mongoclientData
.
connections
)
{
for
(
let
i
=
0
;
i
<
mongoclientData
.
connections
.
length
;
i
++
)
{
delete
mongoclientData
.
connections
[
i
].
_id
;
Connections
.
_collection
.
insert
(
mongoclientData
.
connections
[
i
]);
}
migrateConnectionsIfExist
();
}
}
catch
(
ex
)
{
LOGGER
.
error
(
'
[importMongoclient]
'
,
'
unexpected error during import
'
,
ex
);
throw
new
Meteor
.
Error
(
ex
.
message
);
}
},
exportMongoclient
(
dir
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录