Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
8bfd802f
Commit
8bfd802f
authored
Aug 17, 2018
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor plugin loading/removing
parent
17718648
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
51 additions
and
26 deletions
+51
-26
righthand-panel.js
src/app/panels/righthand-panel.js
+1
-16
settings-tab.js
src/app/tabs/settings-tab.js
+50
-10
No files found.
src/app/panels/righthand-panel.js
View file @
8bfd802f
...
@@ -15,10 +15,8 @@ const SupportTab = require('../tabs/support-tab')
...
@@ -15,10 +15,8 @@ const SupportTab = require('../tabs/support-tab')
const
PluginTab
=
require
(
'../tabs/plugin-tab'
)
const
PluginTab
=
require
(
'../tabs/plugin-tab'
)
const
TestTab
=
require
(
'../tabs/test-tab'
)
const
TestTab
=
require
(
'../tabs/test-tab'
)
const
RunTab
=
require
(
'../tabs/run-tab'
)
const
RunTab
=
require
(
'../tabs/run-tab'
)
const
plugins
=
require
(
'../plugin/plugins'
)
const
DraggableContent
=
require
(
'../ui/draggableContent'
)
const
DraggableContent
=
require
(
'../ui/draggableContent'
)
var
toolTip
=
require
(
'../ui/tooltip'
)
const
EventManager
=
remixLib
.
EventManager
const
EventManager
=
remixLib
.
EventManager
const
styles
=
styleguide
.
chooser
()
const
styles
=
styleguide
.
chooser
()
...
@@ -71,23 +69,10 @@ module.exports = class RighthandPanel {
...
@@ -71,23 +69,10 @@ module.exports = class RighthandPanel {
test
:
new
TestTab
(
self
.
_components
.
registry
)
test
:
new
TestTab
(
self
.
_components
.
registry
)
}
}
self
.
event
.
register
(
'plugin-loadRequest'
,
json
=>
{
self
.
_components
.
settings
.
event
.
register
(
'plugin-loadRequest'
,
json
=>
{
self
.
loadPlugin
(
json
)
self
.
loadPlugin
(
json
)
})
})
self
.
event
.
register
(
'plugin-name-loadRequest'
,
name
=>
{
var
plugin
=
plugins
[
name
]
if
(
plugin
)
{
if
(
!
self
.
_components
.
pluginManager
.
plugins
[
plugin
.
title
])
{
self
.
loadPlugin
(
plugin
)
}
else
{
toolTip
(
name
+
' already loaded'
)
}
}
else
{
toolTip
(
'unknown plugin '
+
name
)
}
})
self
.
loadPlugin
=
function
(
json
)
{
self
.
loadPlugin
=
function
(
json
)
{
var
modal
=
new
DraggableContent
(()
=>
{
var
modal
=
new
DraggableContent
(()
=>
{
self
.
_components
.
pluginManager
.
unregister
(
json
)
self
.
_components
.
pluginManager
.
unregister
(
json
)
...
...
src/app/tabs/settings-tab.js
View file @
8bfd802f
...
@@ -2,8 +2,8 @@ var yo = require('yo-yo')
...
@@ -2,8 +2,8 @@ var yo = require('yo-yo')
var
csjs
=
require
(
'csjs-inject'
)
var
csjs
=
require
(
'csjs-inject'
)
var
remixLib
=
require
(
'remix-lib'
)
var
remixLib
=
require
(
'remix-lib'
)
const
defaultPlugins
=
require
(
'../plugin/plugins'
)
var
globalRegistry
=
require
(
'../../global/registry'
)
var
globalRegistry
=
require
(
'../../global/registry'
)
var
modal
=
require
(
'../ui/modal-dialog-custom'
)
var
tooltip
=
require
(
'../ui/tooltip'
)
var
tooltip
=
require
(
'../ui/tooltip'
)
var
copyToClipboard
=
require
(
'../ui/copy-to-clipboard'
)
var
copyToClipboard
=
require
(
'../ui/copy-to-clipboard'
)
var
styleGuide
=
require
(
'../ui/styles-guide/theme-chooser'
)
var
styleGuide
=
require
(
'../ui/styles-guide/theme-chooser'
)
...
@@ -30,6 +30,7 @@ module.exports = class SettingsTab {
...
@@ -30,6 +30,7 @@ module.exports = class SettingsTab {
optionVM
:
null
,
personal
:
null
,
warnPersonalMode
:
null
,
optionVM
:
null
,
personal
:
null
,
warnPersonalMode
:
null
,
pluginInput
:
null
,
versionSelector
:
null
,
version
:
null
,
pluginInput
:
null
,
versionSelector
:
null
,
version
:
null
,
theme
:
{
dark
:
null
,
light
:
null
},
theme
:
{
dark
:
null
,
light
:
null
},
plugins
:
{},
config
:
{
config
:
{
general
:
null
,
themes
:
null
,
general
:
null
,
themes
:
null
,
plugin
:
null
plugin
:
null
...
@@ -109,15 +110,15 @@ module.exports = class SettingsTab {
...
@@ -109,15 +110,15 @@ module.exports = class SettingsTab {
<label for="themeDark">Dark Theme</label>
<label for="themeDark">Dark Theme</label>
</div>
</div>
</div>`
</div>`
self
.
_view
.
config
.
plugins
=
yo
`<div></div>`
self
.
_view
.
config
.
plugin
=
yo
`
self
.
_view
.
config
.
plugin
=
yo
`
<div class="
${
css
.
info
}
">
<div class="
${
css
.
info
}
">
<div class=
${
css
.
title
}
>Plugin</div>
<div class=
${
css
.
title
}
>Plugin</div>
<div class="
${
css
.
crowNoFlex
}
">
<div class="
${
css
.
crowNoFlex
}
">
<input onclick=
${()
=>
{
onLoadPlugin
(
'oraclize'
)
}}
type
=
"button"
value
=
"Oraclize"
class
=
"${css.pluginLoad}"
>
<
input
onclick
=
$
{()
=>
{
onLoadPlugin
(
'etherscan-general'
)
}}
type
=
"button"
value
=
"Etherscan-general"
class
=
"${css.pluginLoad}"
>
<div>Load plugin from JSON description: </div>
<div>Load plugin from JSON description: </div>
${
self
.
_view
.
pluginInput
}
${
self
.
_view
.
pluginInput
}
<input onclick=
${
onloadPluginJson
}
type="button" value="Load" class="
${
css
.
pluginLoad
}
">
<input onclick=
${
onloadPluginJson
}
type="button" value="Load" class="
${
css
.
pluginLoad
}
">
${
self
.
_view
.
config
.
plugins
}
</div>
</div>
</div>`
</div>`
self
.
_view
.
el
=
yo
`
self
.
_view
.
el
=
yo
`
...
@@ -127,21 +128,57 @@ module.exports = class SettingsTab {
...
@@ -127,21 +128,57 @@ module.exports = class SettingsTab {
${
self
.
_view
.
gistToken
}
${
self
.
_view
.
gistToken
}
${
self
.
_view
.
config
.
themes
}
${
self
.
_view
.
config
.
themes
}
</div>`
</div>`
function
onchangeOption
(
event
)
{
self
.
_deps
.
config
.
set
(
'settings/always-use-vm'
,
!
self
.
_deps
.
config
.
get
(
'settings/always-use-vm'
))
function
loadPlugins
(
plugins
,
opt
)
{
for
(
var
k
in
plugins
)
{
var
plugin
=
plugins
[
k
]
if
(
!
self
.
_view
.
plugins
[
plugin
.
title
])
self
.
_view
.
plugins
[
plugin
.
title
]
=
{}
self
.
_view
.
plugins
[
plugin
.
title
].
json
=
plugin
self
.
_view
.
plugins
[
plugin
.
title
].
el
=
yo
`<div class="
${
css
.
pluginLoad
}
">
<div style="display: inline-block" onclick=
${()
=>
{
onLoadPlugin
(
plugin
.
title
)
}}
>
$
{
plugin
.
title
}
</div>
${
opt
.
removable
?
yo
`<span class="removePlugin" onclick=
${()
=>
{
onRemovePlugin
(
plugin
.
title
)
}}
><
i
class
=
"fa fa-close"
><
/i></
span
>
` : yo`
<
span
><
/span>`
}
<
/div>
`
self
.
_view
.
config
.
plugins
.
appendChild
(
self
.
_view
.
plugins
[
plugin
.
title
].
el
)
}
}
}
function getSavedPlugin () {
var savedPlugin = self._deps.config.get('settings/plugins-list')
return savedPlugin ? JSON.parse(savedPlugin) : {}
}
function setSavedPlugin (savedPlugins) {
self._deps.config.set('settings/plugins-list', JSON.stringify(savedPlugins))
}
loadPlugins(defaultPlugins, {removable: false})
loadPlugins(getSavedPlugin(), {removable: true})
function onLoadPlugin (name) {
function onLoadPlugin (name) {
// @TODO: BAD! REFACTOR: no module should trigger events of another modules emitter
self.event.trigger('plugin-loadRequest', [self._view.plugins[name].json])
self
.
_deps
.
righthandpanel
.
event
.
trigger
(
'plugin-name-loadRequest'
,
[
name
])
}
function onRemovePlugin (name) {
var savedPlugin = getSavedPlugin()
delete savedPlugin[name]
setSavedPlugin(savedPlugin)
if (self._view.plugins[name]) {
self._view.plugins[name].el.parentNode.removeChild(self._view.plugins[name].el)
delete self._view.plugins[name]
}
}
}
function onloadPluginJson (event) {
function onloadPluginJson (event) {
try {
try {
var json = JSON.parse(self._view.pluginInput.value)
var json = JSON.parse(self._view.pluginInput.value)
} catch (e) {
} catch (e) {
return
modal
.
alert
(
'cannot parse the plugin definition to JSON'
)
return
tooltip
('cannot parse the plugin definition to JSON')
}
}
// @TODO: BAD! REFACTOR: no module should trigger events of another modules emitter
var savedPlugin = getSavedPlugin()
self
.
_deps
.
righthandpanel
.
event
.
trigger
(
'plugin-loadRequest'
,
[
json
])
if (self._view.plugins[json.title]) return tooltip('Plugin already loaded')
savedPlugin[json.title] = json
setSavedPlugin(savedPlugin)
loadPlugins([json], {removable: true})
}
function onchangeOption (event) {
self._deps.config.set('settings/always-use-vm', !self._deps.config.get('settings/always-use-vm'))
}
}
function onswitch2darkTheme (event) {
function onswitch2darkTheme (event) {
styleGuide.switchTheme('dark')
styleGuide.switchTheme('dark')
...
@@ -218,6 +255,9 @@ const css = csjs`
...
@@ -218,6 +255,9 @@ const css = csjs`
width: inherit;
width: inherit;
display: inline-block;
display: inline-block;
}
}
.removePlugin {
cursor: pointer;
}
i.warnIt {
i.warnIt {
color:
${
styles
.
appProperties
.
warningText_Color
}
;
color:
${
styles
.
appProperties
.
warningText_Color
}
;
}
}
...
...
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