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
cdb3bc3d
Commit
cdb3bc3d
authored
Feb 02, 2018
by
yann300
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
reorg function , add comment
parent
9913b04b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
60 deletions
+52
-60
file-explorer.js
src/app/files/file-explorer.js
+52
-60
No files found.
src/app/files/file-explorer.js
100644 → 100755
View file @
cdb3bc3d
/* global FileReader */
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
csjs
=
require
(
'csjs-inject'
)
var
csjs
=
require
(
'csjs-inject'
)
var
Treeview
=
require
(
'remix-debugger'
).
ui
.
TreeView
var
Treeview
=
require
(
'remix-debugger'
).
ui
.
TreeView
...
@@ -56,9 +55,14 @@ module.exports = fileExplorer
...
@@ -56,9 +55,14 @@ module.exports = fileExplorer
function
fileExplorer
(
appAPI
,
files
)
{
function
fileExplorer
(
appAPI
,
files
)
{
var
self
=
this
var
self
=
this
this
.
events
=
new
EventManager
()
this
.
events
=
new
EventManager
()
// file provider backend
this
.
files
=
files
this
.
files
=
files
// element currently focused on
this
.
focusElement
=
null
this
.
focusElement
=
null
// path currently focused on
this
.
focusPath
=
null
this
.
focusPath
=
null
// warn if file changed outside of Remix
function
remixdDialog
()
{
function
remixdDialog
()
{
return
yo
`<div>This file has been changed outside of Remix IDE.</div>`
return
yo
`<div>This file has been changed outside of Remix IDE.</div>`
}
}
...
@@ -80,8 +84,51 @@ function fileExplorer (appAPI, files) {
...
@@ -80,8 +84,51 @@ function fileExplorer (appAPI, files) {
}
}
})
})
var
fileEvents
=
files
.
event
// register to event of the file provider
files
.
event
.
register
(
'fileRemoved'
,
fileRemoved
)
files
.
event
.
register
(
'fileRenamed'
,
fileRenamed
)
files
.
event
.
register
(
'fileRenamedError'
,
fileRenamedError
)
files
.
event
.
register
(
'fileAdded'
,
fileAdded
)
function
fileRenamedError
(
error
)
{
modalDialogCustom
.
alert
(
error
)
}
function
fileAdded
(
filepath
)
{
self
.
ensureRoot
(()
=>
{
var
folderpath
=
filepath
.
split
(
'/'
).
slice
(
0
,
-
1
).
join
(
'/'
)
var
currentTree
=
self
.
treeView
.
nodeAt
(
folderpath
)
if
(
currentTree
&&
self
.
treeView
.
isExpanded
(
folderpath
))
{
self
.
files
.
resolveDirectory
(
folderpath
,
(
error
,
fileTree
)
=>
{
if
(
error
)
console
.
error
(
error
)
if
(
!
fileTree
)
return
fileTree
=
normalize
(
folderpath
,
fileTree
)
self
.
treeView
.
updateNodeFromJSON
(
folderpath
,
fileTree
,
true
)
self
.
focusElement
=
self
.
treeView
.
labelAt
(
self
.
focusPath
)
// TODO: here we update the selected file (it applicable)
// cause we are refreshing the interface of the whole directory when there's a new file.
if
(
self
.
focusElement
&&
!
self
.
focusElement
.
classList
.
contains
(
css
.
hasFocus
))
{
self
.
focusElement
.
classList
.
add
(
css
.
hasFocus
)
}
})
}
})
}
function
fileRemoved
(
filepath
)
{
var
label
=
this
.
treeView
.
labelAt
(
filepath
)
if
(
label
&&
label
.
parentElement
)
{
label
.
parentElement
.
removeChild
(
label
)
}
}
function
fileRenamed
(
oldName
,
newName
,
isFolder
)
{
fileRemoved
(
oldName
)
fileAdded
(
newName
)
}
// make interface and register to nodeClick, leafClick
self
.
treeView
=
new
Treeview
({
self
.
treeView
=
new
Treeview
({
extractData
:
function
extractData
(
value
,
tree
,
key
)
{
extractData
:
function
extractData
(
value
,
tree
,
key
)
{
var
newValue
=
{}
var
newValue
=
{}
...
@@ -150,6 +197,7 @@ function fileExplorer (appAPI, files) {
...
@@ -150,6 +197,7 @@ function fileExplorer (appAPI, files) {
return
newList
return
newList
}
}
// register to main app, trigger when the current file in the editor changed
appAPI
.
event
.
register
(
'currentFileChanged'
,
(
newFile
,
explorer
)
=>
{
appAPI
.
event
.
register
(
'currentFileChanged'
,
(
newFile
,
explorer
)
=>
{
if
(
self
.
focusElement
&&
explorer
.
type
!==
files
.
type
&&
self
.
focusPath
!==
newFile
)
{
if
(
self
.
focusElement
&&
explorer
.
type
!==
files
.
type
&&
self
.
focusPath
!==
newFile
)
{
self
.
focusElement
.
classList
.
remove
(
css
.
hasFocus
)
self
.
focusElement
.
classList
.
remove
(
css
.
hasFocus
)
...
@@ -157,23 +205,14 @@ function fileExplorer (appAPI, files) {
...
@@ -157,23 +205,14 @@ function fileExplorer (appAPI, files) {
self
.
focusPath
=
null
self
.
focusPath
=
null
}
}
})
})
fileEvents
.
register
(
'fileRemoved'
,
fileRemoved
)
fileEvents
.
register
(
'fileRenamed'
,
fileRenamed
)
fileEvents
.
register
(
'fileRenamedError'
,
fileRenamedError
)
fileEvents
.
register
(
'fileAdded'
,
fileAdded
)
var
textUnderEdit
=
null
var
textUnderEdit
=
null
var
textInRename
=
false
var
textInRename
=
false
function
getElement
(
path
)
{
var
label
=
self
.
element
.
querySelector
(
`label[data-path="
${
path
}
"]`
)
if
(
label
)
return
getLiFrom
(
label
)
}
function
editModeOn
(
event
)
{
function
editModeOn
(
event
)
{
if
(
self
.
files
.
readonly
)
return
if
(
self
.
files
.
readonly
)
return
var
label
=
this
var
label
=
this
var
li
=
getLiFrom
(
label
)
var
li
=
label
.
parentElement
.
parentElement
.
parentElement
var
classes
=
li
.
className
var
classes
=
li
.
className
if
(
~
classes
.
indexOf
(
'hasFocus'
)
&&
!
label
.
getAttribute
(
'contenteditable'
)
&&
label
.
getAttribute
(
'data-path'
)
!==
self
.
files
.
type
)
{
if
(
~
classes
.
indexOf
(
'hasFocus'
)
&&
!
label
.
getAttribute
(
'contenteditable'
)
&&
label
.
getAttribute
(
'data-path'
)
!==
self
.
files
.
type
)
{
textUnderEdit
=
label
.
innerText
textUnderEdit
=
label
.
innerText
...
@@ -204,66 +243,19 @@ function fileExplorer (appAPI, files) {
...
@@ -204,66 +243,19 @@ function fileExplorer (appAPI, files) {
}
}
}
}
function
cancelRename
()
{
label
.
innerText
=
textUnderEdit
}
if
(
event
.
which
===
13
)
event
.
preventDefault
()
if
(
event
.
which
===
13
)
event
.
preventDefault
()
if
(
!
textInRename
&&
(
event
.
type
===
'blur'
||
event
.
which
===
27
||
event
.
which
===
13
)
&&
label
.
getAttribute
(
'contenteditable'
))
{
if
(
!
textInRename
&&
(
event
.
type
===
'blur'
||
event
.
which
===
27
||
event
.
which
===
13
)
&&
label
.
getAttribute
(
'contenteditable'
))
{
textInRename
=
true
textInRename
=
true
var
isFolder
=
label
.
className
.
indexOf
(
'folder'
)
!==
-
1
var
isFolder
=
label
.
className
.
indexOf
(
'folder'
)
!==
-
1
var
save
=
textUnderEdit
!==
label
.
innerText
var
save
=
textUnderEdit
!==
label
.
innerText
if
(
save
)
{
if
(
save
)
{
modalDialogCustom
.
confirm
(
null
,
'Do you want to rename?'
,
()
=>
{
rename
()
},
()
=>
{
cancelRename
()
})
modalDialogCustom
.
confirm
(
null
,
'Do you want to rename?'
,
()
=>
{
rename
()
},
()
=>
{
label
.
innerText
=
textUnderEdit
})
}
}
label
.
removeAttribute
(
'contenteditable'
)
label
.
removeAttribute
(
'contenteditable'
)
label
.
classList
.
remove
(
css
.
rename
)
label
.
classList
.
remove
(
css
.
rename
)
textInRename
=
false
textInRename
=
false
}
}
}
}
function
fileRemoved
(
filepath
)
{
var
li
=
getElement
(
filepath
)
if
(
li
)
li
.
parentElement
.
removeChild
(
li
)
}
function
fileRenamed
(
oldName
,
newName
,
isFolder
)
{
var
li
=
getElement
(
oldName
)
if
(
li
)
{
li
.
parentElement
.
removeChild
(
li
)
fileAdded
(
newName
)
}
}
function
fileRenamedError
(
error
)
{
modalDialogCustom
.
alert
(
error
)
}
function
fileAdded
(
filepath
)
{
self
.
ensureRoot
(()
=>
{
var
folderpath
=
filepath
.
split
(
'/'
).
slice
(
0
,
-
1
).
join
(
'/'
)
var
currentTree
=
self
.
treeView
.
nodeAt
(
folderpath
)
if
(
currentTree
&&
self
.
treeView
.
isExpanded
(
folderpath
))
{
self
.
files
.
resolveDirectory
(
folderpath
,
(
error
,
fileTree
)
=>
{
if
(
error
)
console
.
error
(
error
)
if
(
!
fileTree
)
return
fileTree
=
normalize
(
folderpath
,
fileTree
)
self
.
treeView
.
updateNodeFromJSON
(
folderpath
,
fileTree
,
true
)
self
.
focusElement
=
self
.
treeView
.
labelAt
(
self
.
focusPath
)
// TODO: here we update the selected file (it applicable)
// cause we are refreshing the interface of the whole directory when there's a new file.
if
(
self
.
focusElement
&&
!
self
.
focusElement
.
classList
.
contains
(
css
.
hasFocus
))
{
self
.
focusElement
.
classList
.
add
(
css
.
hasFocus
)
}
})
}
})
}
}
function
getLiFrom
(
label
)
{
return
label
.
parentElement
.
parentElement
.
parentElement
}
}
fileExplorer
.
prototype
.
init
=
function
()
{
fileExplorer
.
prototype
.
init
=
function
()
{
...
...
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