Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
matefun
Frontend
Commits
f4ecc13a
Commit
f4ecc13a
authored
Feb 22, 2019
by
Franco Pariani
Committed by
Franco Pariani
Feb 23, 2019
Browse files
Jump to file preview when it's included
parent
1962e505
Changes
4
Hide whitespace changes
Inline
Side-by-side
Frontend Angular 4/src/app/layout/archivos/archivos.component.ts
View file @
f4ecc13a
...
...
@@ -4,7 +4,7 @@ import { AuthenticationService } from '../../shared/services/authentication.serv
import
{
HaskellService
}
from
'
../../shared/services/haskell.service
'
;
import
{
SessionService
}
from
'
../../shared/services/session.service
'
;
import
{
NotificacionService
}
from
'
../../shared/services/notificacion.service
'
;
import
{
Router
}
from
'
@angular/router
'
;
import
{
Router
,
ActivatedRoute
}
from
'
@angular/router
'
;
import
{
NuevoArchivo
}
from
'
./nuevoArchivo.component
'
;
import
{
VerCalificacionComponent
}
from
'
./verCalificacion.component
'
;
import
{
CompartirArchivoComponent
}
from
'
./compartirArchivo.component
'
;
...
...
@@ -16,6 +16,7 @@ import { CodemirrorComponent } from 'ng2-codemirror';
import
{
NgbPopoverConfig
,
NgbPopover
}
from
'
@ng-bootstrap/ng-bootstrap
'
;
import
{
TranslateService
}
from
'
@ngx-translate/core
'
;
import
{
TitleCasePipe
}
from
'
../../shared/pipes/titlecase.pipe
'
;
import
{
map
}
from
'
rxjs/operators
'
;
import
'
codemirror/mode/haskell/haskell
'
;
import
'
codemirror/addon/display/panel
'
;
...
...
@@ -30,6 +31,8 @@ import 'codemirror/mode/markdown/markdown';
})
export
class
ArchivosComponent
{
file_loaded
=
null
;
function_to_find
=
null
;
translateService
:
any
;
titlecasePipe
:
any
;
archivos
:
Archivo
[]
=
[];
...
...
@@ -54,7 +57,8 @@ export class ArchivosComponent {
private
haskellService
:
HaskellService
,
private
sessionService
:
SessionService
,
private
dialogService
:
DialogService
,
public
translate
:
TranslateService
public
translate
:
TranslateService
,
private
route
:
ActivatedRoute
){
this
.
translateService
=
translate
;
this
.
titlecasePipe
=
new
TitleCasePipe
();
...
...
@@ -67,6 +71,10 @@ export class ArchivosComponent {
@
ViewChild
(
CodemirrorComponent
)
codemirror
:
CodemirrorComponent
;
ngOnInit
(){
this
.
route
.
queryParams
.
subscribe
(
params
=>
{
this
.
file_loaded
=
params
[
'
file
'
]
||
null
;
});
this
.
sortFunction
=
'
tipo
'
let
cedula
=
this
.
authService
.
getUser
().
cedula
;
this
.
loading
=
true
;
...
...
@@ -77,6 +85,11 @@ export class ArchivosComponent {
this
.
loading
=
false
;
this
.
buildTreeFromList
();
if
(
this
.
file_loaded
!==
null
){
var
file_id
=
this
.
file_loaded
;
var
found_file
=
this
.
archivos
.
filter
(
a
=>
a
.
id
==
parseInt
(
file_id
))[
0
];
this
.
seleccionarArchivo
(
found_file
);
}
},
error
=>
console
.
log
(
error
)
);
...
...
Frontend Angular 4/src/app/layout/matefun/codemirror/matefun-mode-EN.js
View file @
f4ecc13a
...
...
@@ -25,11 +25,13 @@
var
specialRE
=
/
[
(),;[
\]
`{}
]
/
;
var
whiteCharRE
=
/
[
\t\v\f]
/
;
// newlines are handled in tokenizer
var
INCLUIR
=
/include
\s
+
([\w\_\d]
+
)
/
;
// jump to definition
var
COMPLETE_FUNS
=
/
([\w\_\d\-]
+
)(\s
+
\:\:
.*
)
/
;
CodeMirror
.
defineExtension
(
"
jumpToDefinition
"
,
function
(
editor
,
options
)
{
CodeMirror
.
defineExtension
(
"
jumpToDefinition
"
,
function
(
all_files
,
editor
,
options
)
{
var
word
=
options
&&
options
.
word
||
WORD
;
var
range
=
options
&&
options
.
range
||
RANGE
;
var
cur
=
editor
.
getCursor
(),
curLine
=
editor
.
getLine
(
cur
.
line
);
...
...
@@ -64,6 +66,42 @@
}
}
}
if
(
!
found
){
var
file_found
=
null
;
var
re_digits
=
new
RegExp
(
/^
\d
+$/
,
"
g
"
);
var
includes
=
new
RegExp
(
INCLUIR
.
source
,
"
g
"
);
var
content
=
editor
.
getValue
();
var
file
;
while
((
file
=
includes
.
exec
(
content
))
&&
!
found
)
{
var
files
=
all_files
.
archivos
.
filter
(
function
(
a
){
return
a
.
nombre
===
file
[
1
];
});
for
(
var
f
=
0
;
f
<
files
.
length
&&
!
found
;
f
++
){
var
seen
=
{};
var
m
;
var
re_funs
=
new
RegExp
(
FUNS
.
source
,
"
g
"
);
var
file_content
=
files
[
f
].
contenido
;
while
((
m
=
re_funs
.
exec
(
file_content
))
&&
!
found
)
{
if
(
!
re_digits
.
exec
(
m
[
1
])
&&
(
!
curWord
||
m
[
1
].
lastIndexOf
(
curWord
,
0
)
==
0
)
&&
!
Object
.
prototype
.
hasOwnProperty
.
call
(
seen
,
m
[
1
]))
{
seen
[
m
[
1
]]
=
true
;
found
=
true
;
file_found
=
files
[
f
];
}
}
}
}
if
(
file_found
!==
null
){
editor
.
cm
.
closeFunctionDefinition
();
window
.
matefunComponent
.
component
.
goToFilesPreview
(
file_found
);
}
}
}
});
...
...
@@ -234,8 +272,6 @@
return
{
list
:
list
,
from
:
CodeMirror
.
Pos
(
cur
.
line
,
start
),
to
:
CodeMirror
.
Pos
(
cur
.
line
,
end
)};
});
var
INCLUIR
=
/include
\s
+
([\w\_\d]
+
)
/
;
function
hintsFunctionsFromIncludedFiles
(
all_files
,
editor
,
curWord
,
list
){
var
re_digits
=
new
RegExp
(
/^
\d
+$/
,
"
g
"
);
var
includes
=
new
RegExp
(
INCLUIR
.
source
,
"
g
"
);
...
...
Frontend Angular 4/src/app/layout/matefun/codemirror/matefun-mode-ES.js
View file @
f4ecc13a
...
...
@@ -25,11 +25,13 @@
var
specialRE
=
/
[
(),;[
\]
`{}
]
/
;
var
whiteCharRE
=
/
[
\t\v\f]
/
;
// newlines are handled in tokenizer
var
INCLUIR
=
/incluir
\s
+
([\w\_\d]
+
)
/
;
// jump to definition
var
COMPLETE_FUNS
=
/
([\w\_\d\-]
+
)(\s
+
\:\:
.*
)
/
;
CodeMirror
.
defineExtension
(
"
jumpToDefinition
"
,
function
(
editor
,
options
)
{
CodeMirror
.
defineExtension
(
"
jumpToDefinition
"
,
function
(
all_files
,
editor
,
options
)
{
var
word
=
options
&&
options
.
word
||
WORD
;
var
range
=
options
&&
options
.
range
||
RANGE
;
var
cur
=
editor
.
getCursor
(),
curLine
=
editor
.
getLine
(
cur
.
line
);
...
...
@@ -65,6 +67,42 @@
}
}
}
if
(
!
found
){
var
file_found
=
null
;
var
re_digits
=
new
RegExp
(
/^
\d
+$/
,
"
g
"
);
var
includes
=
new
RegExp
(
INCLUIR
.
source
,
"
g
"
);
var
content
=
editor
.
getValue
();
var
file
;
while
((
file
=
includes
.
exec
(
content
))
&&
!
found
)
{
var
files
=
all_files
.
archivos
.
filter
(
function
(
a
){
return
a
.
nombre
===
file
[
1
];
});
for
(
var
f
=
0
;
f
<
files
.
length
&&
!
found
;
f
++
){
var
seen
=
{};
var
m
;
var
re_funs
=
new
RegExp
(
FUNS
.
source
,
"
g
"
);
var
file_content
=
files
[
f
].
contenido
;
while
((
m
=
re_funs
.
exec
(
file_content
))
&&
!
found
)
{
if
(
!
re_digits
.
exec
(
m
[
1
])
&&
(
!
curWord
||
m
[
1
].
lastIndexOf
(
curWord
,
0
)
==
0
)
&&
!
Object
.
prototype
.
hasOwnProperty
.
call
(
seen
,
m
[
1
]))
{
seen
[
m
[
1
]]
=
true
;
found
=
true
;
file_found
=
files
[
f
];
}
}
}
}
if
(
file_found
!==
null
){
editor
.
cm
.
closeFunctionDefinition
();
window
.
matefunComponent
.
component
.
goToFilesPreview
(
file_found
);
}
}
});
const
hintWords
=
require
(
'
./addons/hint_words
'
);
...
...
@@ -231,8 +269,6 @@
return
{
list
:
list
,
from
:
CodeMirror
.
Pos
(
cur
.
line
,
start
),
to
:
CodeMirror
.
Pos
(
cur
.
line
,
end
)};
});
var
INCLUIR
=
/incluir
\s
+
([\w\_\d]
+
)
/
;
function
hintsFunctionsFromIncludedFiles
(
all_files
,
editor
,
curWord
,
list
){
var
re_digits
=
new
RegExp
(
/^
\d
+$/
,
"
g
"
);
var
includes
=
new
RegExp
(
INCLUIR
.
source
,
"
g
"
);
...
...
Frontend Angular 4/src/app/layout/matefun/matefun.component.ts
View file @
f4ecc13a
...
...
@@ -24,6 +24,7 @@ import { Graph2DComponent } from '../plotter/graph2D/graph2D.component';
import
{
Graph3DComponent
}
from
'
../plotter/graph3D/graph3D.component
'
;
import
{
TranslateService
}
from
'
@ngx-translate/core
'
;
import
{
TitleCasePipe
}
from
'
../../shared/pipes/titlecase.pipe
'
;
import
{
Router
,
NavigationExtras
}
from
'
@angular/router
'
;
import
'
rxjs/add/operator/catch
'
;
import
'
rxjs/add/operator/map
'
;
...
...
@@ -118,7 +119,8 @@ export class MateFunComponent {
private
sessionService
:
SessionService
,
private
dialogService
:
DialogService
,
private
usuarioService
:
UsuarioService
,
public
translate
:
TranslateService
)
{
public
translate
:
TranslateService
,
private
router
:
Router
)
{
// i18n
this
.
translateService
=
translate
;
...
...
@@ -290,6 +292,7 @@ export class MateFunComponent {
}
ngOnInit
()
{
window
[
'
matefunComponent
'
]
=
{
component
:
this
};
this
.
ghciService
.
rendered
();
...
...
@@ -458,7 +461,7 @@ export class MateFunComponent {
this
.
modificado
=
false
;
}
}
else
if
(
event
.
ctrlKey
&&
event
.
shiftKey
&&
event
.
key
==
'
K
'
)
this
.
codemirror
.
instance
.
toggleComment
();
else
if
(
event
.
altKey
&&
event
.
key
==
'
.
'
)
this
.
codemirror
.
instance
.
jumpToDefinition
(
this
.
codemirror
.
instance
.
doc
,
event
);
else
if
(
event
.
altKey
&&
event
.
key
==
'
.
'
)
this
.
codemirror
.
instance
.
jumpToDefinition
(
this
.
archivosTree
,
this
.
codemirror
.
instance
.
doc
,
event
);
}
clickEnEditor
(
event
){
...
...
@@ -472,6 +475,14 @@ export class MateFunComponent {
}
}
goToFilesPreview
(
file_found
){
let
navigationExtras
:
NavigationExtras
=
{
queryParams
:
{
file
:
file_found
.
id
},
skipLocationChange
:
true
};
this
.
router
.
navigate
([
'
/archivos
'
],
navigationExtras
);
}
guardarArchivo
(){
var
regex
=
/^
[
A-Z
]
/
if
(
this
.
archivo
.
nombre
.
trim
()
==
""
){
...
...
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