Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
purescript-gargantext
Project
Project
Details
Activity
Releases
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
Grégoire Locqueville
purescript-gargantext
Commits
c23bbf37
Commit
c23bbf37
authored
Feb 09, 2021
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '228-doc-annotation-multiterms' into dev-doc-multi-annotation
parents
4e207779
d78a74d3
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
123 additions
and
124 deletions
+123
-124
annotation.css
dist/styles/annotation.css
+0
-15
sass.css
dist/styles/sass.css
+5
-5
sass.css.map
dist/styles/sass.css.map
+1
-1
AnnotatedField.purs
src/Gargantext/Components/Annotation/AnnotatedField.purs
+60
-52
Utils.purs
src/Gargantext/Components/Annotation/Utils.purs
+2
-1
Core.purs
src/Gargantext/Components/NgramsTable/Core.purs
+52
-48
Document.purs
src/Gargantext/Components/Nodes/Corpus/Document.purs
+1
-1
_annotation.sass
src/sass/_annotation.sass
+2
-1
No files found.
dist/styles/annotation.css
deleted
100644 → 0
View file @
4e207779
.annotation-run
{
cursor
:
pointer
;
}
.annotation-run.candidate-term
,
.context-menu
.candidate-term
{
color
:
#000
;
background-color
:
#aaa
;
}
.annotation-run.graph-term
,
.context-menu
.graph-term
{
color
:
#000
;
background-color
:
#0f0
;
}
.annotation-run.stop-term
,
.context-menu
.stop-term
{
color
:
#000
;
background-color
:
#f00
;
}
dist/styles/sass.css
View file @
c23bbf37
...
@@ -778,15 +778,15 @@ ul li {
...
@@ -778,15 +778,15 @@ ul li {
}
}
.annotation-run.candidate-term.graph-term.stop-term
{
.annotation-run.candidate-term.graph-term.stop-term
{
color
:
#000
;
color
:
#000
;
background-image
:
linear-gradient
(
rgba
(
184
,
184
,
184
,
0.34
),
rgba
(
184
,
184
,
184
,
0.34
)),
linear-gradient
(
rgba
(
149
,
210
,
149
,
0.33
),
rgba
(
149
,
210
,
149
,
0.33
)),
linear-gradient
(
rgba
(
245
,
148
,
153
,
0.33
),
rgba
(
245
,
148
,
153
,
0.33
));
background-image
:
linear-gradient
(
rgba
(
184
,
218
,
255
,
0.34
),
rgba
(
184
,
218
,
255
,
0.34
)),
linear-gradient
(
rgba
(
149
,
210
,
149
,
0.33
),
rgba
(
149
,
210
,
149
,
0.33
)),
linear-gradient
(
rgba
(
245
,
148
,
153
,
0.33
),
rgba
(
245
,
148
,
153
,
0.33
));
}
}
.annotation-run.candidate-term.graph-term
{
.annotation-run.candidate-term.graph-term
{
color
:
#000
;
color
:
#000
;
background-image
:
linear-gradient
(
rgba
(
184
,
184
,
184
,
0.5
),
rgba
(
184
,
184
,
184
,
0.5
)),
linear-gradient
(
rgba
(
149
,
210
,
149
,
0.5
),
rgba
(
149
,
210
,
149
,
0.5
));
background-image
:
linear-gradient
(
rgba
(
184
,
218
,
255
,
0.5
),
rgba
(
184
,
218
,
255
,
0.5
)),
linear-gradient
(
rgba
(
149
,
210
,
149
,
0.5
),
rgba
(
149
,
210
,
149
,
0.5
));
}
}
.annotation-run.candidate-term.stop-term
{
.annotation-run.candidate-term.stop-term
{
color
:
#000
;
color
:
#000
;
background-image
:
linear-gradient
(
rgba
(
184
,
184
,
184
,
0.5
),
rgba
(
184
,
184
,
184
,
0.5
)),
linear-gradient
(
rgba
(
245
,
148
,
153
,
0.5
),
rgba
(
245
,
148
,
153
,
0.5
));
background-image
:
linear-gradient
(
rgba
(
184
,
218
,
255
,
0.5
),
rgba
(
184
,
218
,
255
,
0.5
)),
linear-gradient
(
rgba
(
245
,
148
,
153
,
0.5
),
rgba
(
245
,
148
,
153
,
0.5
));
}
}
.annotation-run.graph-term.stop-term
{
.annotation-run.graph-term.stop-term
{
color
:
#000
;
color
:
#000
;
...
@@ -794,7 +794,7 @@ ul li {
...
@@ -794,7 +794,7 @@ ul li {
}
}
.annotation-run.candidate-term
{
.annotation-run.candidate-term
{
color
:
#000
;
color
:
#000
;
background-color
:
#
B8B8B876
;
background-color
:
#
b8daff
;
}
}
.annotation-run.graph-term
{
.annotation-run.graph-term
{
color
:
#000
;
color
:
#000
;
...
@@ -807,7 +807,7 @@ ul li {
...
@@ -807,7 +807,7 @@ ul li {
.context-menu
.candidate-term
{
.context-menu
.candidate-term
{
color
:
#000
;
color
:
#000
;
background-color
:
#
B8B8B876
;
background-color
:
#
b8daff
;
}
}
.context-menu
.graph-term
{
.context-menu
.graph-term
{
color
:
#000
;
color
:
#000
;
...
...
dist/styles/sass.css.map
View file @
c23bbf37
{"version":3,"sourceRoot":"","sources":["../../src/sass/_menu.sass","../../src/sass/_context_menu.sass","../../src/sass/_graph.sass","../../src/sass/_login.sass","../../src/sass/_tree.sass","../../src/sass/_code_editor.sass","../../src/sass/_styles.sass","../../src/sass/_range_slider.sass","../../src/sass/_annotation.sass"],"names":[],"mappings":"AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACE;;;AAEF;AACI;EACA;;;AAEJ;AACI;EACA;;;AAGJ;AACA;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACE;EACA;;;AAEF;EACE;;;AC7CF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AClBF;EACE;EACA;EACA;;;AAEF;AAkCE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAxCA;EAZA;EACA;EAEA;EAWE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;;AAGA;EACE;EACA;;AACN;EACE;;AACF;EACE;;AAEF;EApCA;EACA;EAEA;EAmCE;EACA;;AACF;EACE;;AACF;EACE;;AAWF;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;;AAEJ;EACE;;AAEA;EACE;;AAEJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;ACrFJ;EACE;;;AAOF;EACE;;AACA;EACE;EACA;;;AAEJ;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;;AAEE;EACE;EACA;;AACA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAKJ;EACE;EACA;EACA;;;AAGJ;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;AACF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;;AACF;EACE;EACA;EACA;EACA;;AACA;EACE;;AACN;EACE;EACA;EACA;EACA;;;AAGN;EACE;EACA;EACA;EACA;EACA;;AAGE;EACE;;;AAEN;EACE;EACA;EACA;EACA;EACA;;AAGE;EACE;;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAEJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AAGF;EACE;;;AAEJ;EACI;EACA;;;AAGF;EACE;;;AAEJ;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;ACvKF;EACE;;;AAGA;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAER;EACE;;AAEE;EACE;;AACA;EACE;EACA;EACA;EACA;;AACF;EACE;EACA;EACA;EACA;EACA;;AACF;EACE;;AACF;EACE;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;;AACF;EACE;;AAGN;EACE;;AACF;EACE;;AACA;EACE;EACA;;AAEE;EACE;EACA;;AACF;EACE;EACA;;AAIR;EACE;;AACF;EACE;;AACA;EACE;EACA;;AAEE;EACE;EACA;;AACF;EACE;EACA;;AACF;EACE;EACA;;AAEV;EACE;;AACF;EACE;;AAEE;EACE;;AACF;EACE;;AACN;EACE;;AAEE;EACE;;;AAGR;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;;;AAIF;EACE;;AAEA;EACE;;;AAGN;EACE;;AACF;EACE;;AACF;EACE;;;AC3IA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EApCR;EACA;EACA;EACA;EACA;EACA;EACA;EAlBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA0CM;EACE;EACA;EACA;EACA;EACA;EA5CR;EACA;EACA;EACA;EACA;EACA;EACA;EAlBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAkDE;EACE;EACA;EACA;EACA;EACA;EACA;;AACF;EACE;EACA;EACA;;AACA;EACE;EACA;;AACF;EACE;EACA;;AACF;EACE;EACA;;AAGE;EACE;;AAEF;EACE;;;ACrFV;EACE;;AACF;EACE;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGE;EACE;EACA;;AAEF;EACE;EACA;;;AAEV;EACE;;AACA;EACE;;AACF;EACE;EACA;EACA;;;AAIA;EACE;;AACA;EACE;EACA;;AACF;EACE;;AACA;EACE;;AACJ;EACE;;;AAER;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAGI;EACE;;AACF;EACE;;;AAEN;EACE;EACA;EACA;;;AAIA;EACE;;AACF;EACE;;;AAGF;EACE;;;AAEJ;EACE;EACA;;;AChFF;EACE;AACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EAEA;;AAEA;EACE;EAEA;EACA;EACA;;;AAGN;EACE;;;ACzBJ;EACE;;AAEA;EANE;EACA;;AAQF;EAbE;EACA;;AAeF;EAhBE;EACA;;AAkBF;EAnBE;EACA;;AAqBF;EA1BE;EACA,kBALyB;;AAiC3B;EA7BE;EACA,kBANqB;;AAqCvB;EAhCE;EACA,kBAJoB;;;AAuCtB;EApCE;EACA,kBALyB;;AA2C3B;EAvCE;EACA,kBANqB;;AA+CvB;EA1CE;EACA,kBAJoB","file":"sass.css"}
{"version":3,"sourceRoot":"","sources":["../../src/sass/_menu.sass","../../src/sass/_context_menu.sass","../../src/sass/_graph.sass","../../src/sass/_login.sass","../../src/sass/_tree.sass","../../src/sass/_code_editor.sass","../../src/sass/_styles.sass","../../src/sass/_range_slider.sass","../../src/sass/_annotation.sass"],"names":[],"mappings":"AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACE;;;AAEF;AACI;EACA;;;AAEJ;AACI;EACA;;;AAGJ;AACA;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACE;EACA;;;AAEF;EACE;;;AC7CF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;;;AClBF;EACE;EACA;EACA;;;AAEF;AAkCE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAxCA;EAZA;EACA;EAEA;EAWE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;;AAGA;EACE;EACA;;AACN;EACE;;AACF;EACE;;AAEF;EApCA;EACA;EAEA;EAmCE;EACA;;AACF;EACE;;AACF;EACE;;AAWF;EAEE;EACA;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;;AAEJ;EACE;;AAEA;EACE;;AAEJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;ACrFJ;EACE;;;AAOF;EACE;;AACA;EACE;EACA;;;AAEJ;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;EACE;;AAEE;EACE;EACA;;AACA;EACE;;;AAIJ;EACE;EACA;EACA;EACA;;;AAKJ;EACE;EACA;EACA;;;AAGJ;EACE;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;;AACF;EACE;EACA;;AACA;EACE;EACA;EACA;EACA;;AACA;EACE;;AACF;EACE;EACA;EACA;EACA;;AACA;EACE;;AACN;EACE;EACA;EACA;EACA;;;AAGN;EACE;EACA;EACA;EACA;EACA;;AAGE;EACE;;;AAEN;EACE;EACA;EACA;EACA;EACA;;AAGE;EACE;;;AAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAEJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;;;AAGF;EACE;;;AAEJ;EACI;EACA;;;AAGF;EACE;;;AAEJ;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;ACvKF;EACE;;;AAGA;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAEF;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAER;EACE;;AAEE;EACE;;AACA;EACE;EACA;EACA;EACA;;AACF;EACE;EACA;EACA;EACA;EACA;;AACF;EACE;;AACF;EACE;EACA;EACA;EAEA;EACA;EACA;;AAEA;EACE;;AACF;EACE;;AAGN;EACE;;AACF;EACE;;AACA;EACE;EACA;;AAEE;EACE;EACA;;AACF;EACE;EACA;;AAIR;EACE;;AACF;EACE;;AACA;EACE;EACA;;AAEE;EACE;EACA;;AACF;EACE;EACA;;AACF;EACE;EACA;;AAEV;EACE;;AACF;EACE;;AAEE;EACE;;AACF;EACE;;AACN;EACE;;AAEE;EACE;;;AAGR;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;;AAEF;EACE;;;AAIF;EACE;;AAEA;EACE;;;AAGN;EACE;;AACF;EACE;;AACF;EACE;;;AC3IA;EACE;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EApCR;EACA;EACA;EACA;EACA;EACA;EACA;EAlBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AA0CM;EACE;EACA;EACA;EACA;EACA;EA5CR;EACA;EACA;EACA;EACA;EACA;EACA;EAlBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAkDE;EACE;EACA;EACA;EACA;EACA;EACA;;AACF;EACE;EACA;EACA;;AACA;EACE;EACA;;AACF;EACE;EACA;;AACF;EACE;EACA;;AAGE;EACE;;AAEF;EACE;;;ACrFV;EACE;;AACF;EACE;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;;AAGE;EACE;EACA;;AAEF;EACE;EACA;;;AAEV;EACE;;AACA;EACE;;AACF;EACE;EACA;EACA;;;AAIA;EACE;;AACA;EACE;EACA;;AACF;EACE;;AACA;EACE;;AACJ;EACE;;;AAER;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;AAGI;EACE;;AACF;EACE;;;AAEN;EACE;EACA;EACA;;;AAIA;EACE;;AACF;EACE;;;AAGF;EACE;;;AAEJ;EACE;EACA;;;AChFF;EACE;AACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EAEA;;AAEA;EACE;EAEA;EACA;EACA;;;AAGN;EACE;;;ACxBJ;EACE;;AAEA;EANE;EACA;;AAQF;EAbE;EACA;;AAeF;EAhBE;EACA;;AAkBF;EAnBE;EACA;;AAqBF;EA1BE;EACA,kBALyB;;AAiC3B;EA7BE;EACA,kBAPqB;;AAsCvB;EAhCE;EACA,kBAJoB;;;AAuCtB;EApCE;EACA,kBALyB;;AA2C3B;EAvCE;EACA,kBAPqB;;AAgDvB;EA1CE;EACA,kBAJoB","file":"sass.css"}
\ No newline at end of file
\ No newline at end of file
src/Gargantext/Components/Annotation/AnnotatedField.purs
View file @
c23bbf37
...
@@ -11,11 +11,14 @@
...
@@ -11,11 +11,14 @@
-- | 2. We will need a more ambitious search algorithm for skipgrams.
-- | 2. We will need a more ambitious search algorithm for skipgrams.
module Gargantext.Components.Annotation.AnnotatedField where
module Gargantext.Components.Annotation.AnnotatedField where
import Data.Array as A
import Data.List ( List(..), (:), length )
import Data.Maybe ( Maybe(..), maybe )
import Data.Maybe ( Maybe(..), maybe )
import Data.String.Common ( joinWith )
import Data.Tuple (Tuple(..), snd)
import Data.Tuple.Nested ( (/\) )
--import DOM.Simple.Console (log2)
--import DOM.Simple.Console (log2)
import DOM.Simple.Event as DE
import DOM.Simple.Event as DE
import Data.Tuple ( Tuple )
import Data.Tuple.Nested ( (/\) )
import Effect ( Effect )
import Effect ( Effect )
import Reactix as R
import Reactix as R
import Reactix.DOM.HTML as HTML
import Reactix.DOM.HTML as HTML
...
@@ -24,8 +27,9 @@ import Reactix.SyntheticEvent as E
...
@@ -24,8 +27,9 @@ import Reactix.SyntheticEvent as E
import Gargantext.Prelude
import Gargantext.Prelude
import Gargantext.Components.Annotation.Menu ( annotationMenu, AnnotationMenu, MenuType(..) )
import Gargantext.Components.Annotation.Menu ( annotationMenu, AnnotationMenu, MenuType(..) )
import Gargantext.Components.Annotation.Utils (
termClass
)
import Gargantext.Components.Annotation.Utils (
termBootstrapClass, termClass
)
import Gargantext.Components.NgramsTable.Core (NgramsTable, NgramsTerm, findNgramTermList, highlightNgrams, normNgram)
import Gargantext.Components.NgramsTable.Core (NgramsTable, NgramsTerm, findNgramTermList, highlightNgrams, normNgram)
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Selection as Sel
import Gargantext.Utils.Selection as Sel
import Gargantext.Types (CTabNgramType(..), TermList)
import Gargantext.Types (CTabNgramType(..), TermList)
...
@@ -43,8 +47,8 @@ type MouseEvent = E.SyntheticEvent DE.MouseEvent
...
@@ -43,8 +47,8 @@ type MouseEvent = E.SyntheticEvent DE.MouseEvent
-- defaultProps :: Record Props
-- defaultProps :: Record Props
-- defaultProps = { ngrams: NgramsTable Map.empty, text: Nothing, setTermList: \_ _ _ -> pure unit }
-- defaultProps = { ngrams: NgramsTable Map.empty, text: Nothing, setTermList: \_ _ _ -> pure unit }
annotatedField :: R
ecord Props -> R.Element
annotatedField :: R
2.Component Props
annotatedField
p = R.createElement annotatedFieldComponent p []
annotatedField
= R.createElement annotatedFieldComponent
annotatedFieldComponent :: R.Component Props
annotatedFieldComponent :: R.Component Props
annotatedFieldComponent = R.hooksComponentWithModule thisModule "annotatedField" cpt
annotatedFieldComponent = R.hooksComponentWithModule thisModule "annotatedField" cpt
...
@@ -63,50 +67,46 @@ annotatedFieldComponent = R.hooksComponentWithModule thisModule "annotatedField"
...
@@ -63,50 +67,46 @@ annotatedFieldComponent = R.hooksComponentWithModule thisModule "annotatedField"
pure $ HTML.div wrapperProps
pure $ HTML.div wrapperProps
[ maybe (HTML.div {} []) annotationMenu $ R.readRef menuRef
[ maybe (HTML.div {} []) annotationMenu $ R.readRef menuRef
, HTML.div { className: "annotated-field-runs" }
, HTML.div { className: "annotated-field-runs" }
$ annotateRun
((\p -> annotateRun p []) <$> wrap <$> compile ngrams fieldText)
<$> wrap
<$> compile ngrams fieldText
]
]
compile :: NgramsTable -> Maybe String -> Array (Tuple String (
Maybe TermList
))
compile :: NgramsTable -> Maybe String -> Array (Tuple String (
List (Tuple NgramsTerm TermList)
))
compile ngrams = maybe [] (highlightNgrams CTabTerms ngrams)
compile ngrams = maybe [] (highlightNgrams CTabTerms ngrams)
-- Runs
-- Runs
onAnnotationSelect { menuRef, ngrams, setRedrawMenu, setTermList } text mList event =
onAnnotationSelect { menuRef, ngrams, setRedrawMenu, setTermList } Nothing event = do
case mList of
s <- Sel.getSelection
Just list ->
case s of
showMenu { event
Just sel -> do
, getList: const (Just list)
case Sel.selectionToString sel of
, menuRef
"" -> hideMenu { menuRef, setRedrawMenu }
, menuType: SetTermListItem
sel' -> do
, setRedrawMenu
showMenu { event
, setTermList
, getList: findNgramTermList ngrams
, text }
, menuRef
Nothing -> do
, menuType: NewNgram
s <- Sel.getSelection
, ngram: normNgram CTabTerms sel'
case s of
, setRedrawMenu
Just sel -> do
, setTermList }
case Sel.selectionToString sel of
Nothing -> hideMenu { menuRef, setRedrawMenu }
"" -> hideMenu { menuRef, setRedrawMenu }
onAnnotationSelect { menuRef, ngrams, setRedrawMenu, setTermList } (Just (Tuple ngram list)) event =
sel' -> do
showMenu { event
showMenu { event
, getList: const (Just list)
, getList: findNgramTermList ngrams
, menuRef
, menuRef
, menuType: SetTermListItem
, menuType: NewNgram
, ngram
, setRedrawMenu
, setRedrawMenu
, setTermList
, setTermList }
, text: sel' }
Nothing -> hideMenu { menuRef, setRedrawMenu }
showMenu { event, getList, menuRef, menuType, ngram, setRedrawMenu, setTermList } = do
showMenu { event, getList, menuRef, menuType, setRedrawMenu, setTermList, text } = do
let x = E.clientX event
let x = E.clientX event
y = E.clientY event
y = E.clientY event
n = normNgram CTabTerms text
--
n = normNgram CTabTerms text
list = getList n
list = getList n
gram
redrawMenu = setRedrawMenu not
redrawMenu = setRedrawMenu not
setList t = do
setList t = do
setTermList n list t
setTermList n
gram
list t
hideMenu { menuRef, setRedrawMenu }
hideMenu { menuRef, setRedrawMenu }
E.preventDefault event
E.preventDefault event
--range <- Sel.getRange sel 0
--range <- Sel.getRange sel 0
...
@@ -128,24 +128,32 @@ hideMenu { menuRef, setRedrawMenu } = do
...
@@ -128,24 +128,32 @@ hideMenu { menuRef, setRedrawMenu } = do
redrawMenu
redrawMenu
type Run =
type Run =
( list ::
(Maybe
TermList)
( list ::
List (Tuple NgramsTerm
TermList)
, onSelect ::
String -> Maybe TermList
-> MouseEvent -> Effect Unit
, onSelect ::
Maybe (Tuple NgramsTerm TermList)
-> MouseEvent -> Effect Unit
, text :: String
, text :: String
)
)
annotateRun :: R
ecord Run -> R.Element
annotateRun :: R
2.Component Run
annotateRun
p = R.createElement annotatedRunComponent p []
annotateRun
= R.createElement annotatedRunComponent
annotatedRunComponent :: R.Component Run
annotatedRunComponent :: R.Component Run
annotatedRunComponent = R.staticComponent "AnnotatedRun" cpt
annotatedRunComponent = R.staticComponent "AnnotatedRun" cpt
where
where
cpt { list, onSelect, text } _ = elt [ HTML.text text ]
cpt { list: Nil, onSelect, text } _ =
HTML.span { on: { mouseUp: onSelect Nothing } } [ HTML.text text ]
cpt { list: lst@((ngram /\ list) : otherLists), onSelect, text } _ =
HTML.span { className
, on: { click: onSelect (Just (ngram /\ list)) } } [ HTML.text text ]
where
where
cb = onSelect text list
bgClasses = joinWith " " $ A.fromFoldable $ termClass <<< snd <$> lst
elt =
-- className = "annotation-run bg-" <> termBootstrapClass list
case list of
className = "annotation-run " <> bgClasses
Nothing -> HTML.span { on: { mouseUp: cb } }
-- cb = onSelect text list
Just l -> HTML.span { -- className: "annotation-run bg-" <> termBootstrapClass l
-- elt =
className: "annotation-run " <> termClass l
-- case list of
, on: { click: cb }
-- Nothing -> HTML.span { on: { mouseUp: cb } }
}
-- Just l -> HTML.span { -- className: "annotation-run bg-" <> termBootstrapClass l
-- className: "annotation-run " <> termClass l
-- , on: { click: cb }
-- }
src/Gargantext/Components/Annotation/Utils.purs
View file @
c23bbf37
...
@@ -3,11 +3,12 @@ module Gargantext.Components.Annotation.Utils where
...
@@ -3,11 +3,12 @@ module Gargantext.Components.Annotation.Utils where
import Gargantext.Types ( TermList(..) )
import Gargantext.Types ( TermList(..) )
termClass :: TermList -> String
termClass :: TermList -> String
termClass CandidateTerm = "candidate-term"
termClass MapTerm = "graph-term"
termClass MapTerm = "graph-term"
termClass StopTerm = "stop-term"
termClass StopTerm = "stop-term"
termClass CandidateTerm = "candidate-term"
termBootstrapClass :: TermList -> String
termBootstrapClass :: TermList -> String
-- termBootstrapClass CandidateTerm = "warning"
termBootstrapClass MapTerm = "success"
termBootstrapClass MapTerm = "success"
termBootstrapClass StopTerm = "danger"
termBootstrapClass StopTerm = "danger"
termBootstrapClass CandidateTerm = "primary"
termBootstrapClass CandidateTerm = "primary"
src/Gargantext/Components/NgramsTable/Core.purs
View file @
c23bbf37
...
@@ -102,9 +102,10 @@ import Data.Lens.Index (class Index, ix)
...
@@ -102,9 +102,10 @@ import Data.Lens.Index (class Index, ix)
import Data.Lens.Iso.Newtype (_Newtype)
import Data.Lens.Iso.Newtype (_Newtype)
import Data.Lens.Record (prop)
import Data.Lens.Record (prop)
import Data.List ((:), List(Nil))
import Data.List ((:), List(Nil))
import Data.List as L
import Data.Map (Map)
import Data.Map (Map)
import Data.Map as Map
import Data.Map as Map
import Data.Maybe (Maybe(..), fromMaybe, isJust)
import Data.Maybe (Maybe(..), fromMaybe,
fromMaybe',
isJust)
import Data.Monoid.Additive (Additive(..))
import Data.Monoid.Additive (Additive(..))
import Data.Newtype (class Newtype)
import Data.Newtype (class Newtype)
import Data.Set (Set)
import Data.Set (Set)
...
@@ -116,7 +117,7 @@ import Data.String.Regex.Flags (global, multiline) as R
...
@@ -116,7 +117,7 @@ import Data.String.Regex.Flags (global, multiline) as R
import Data.String.Utils as SU
import Data.String.Utils as SU
import Data.Symbol (SProxy(..))
import Data.Symbol (SProxy(..))
import Data.These (These(..))
import Data.These (These(..))
import Data.Traversable (for, traverse_)
import Data.Traversable (for, traverse_
, traverse
)
import Data.TraversableWithIndex (traverseWithIndex)
import Data.TraversableWithIndex (traverseWithIndex)
import Data.Tuple (Tuple(..), snd)
import Data.Tuple (Tuple(..), snd)
import Data.Tuple.Nested ((/\))
import Data.Tuple.Nested ((/\))
...
@@ -500,67 +501,70 @@ wordBoundaryReg2 = case R.regex ("(" <> wordBoundaryChars <> ")\\1") (R.global <
...
@@ -500,67 +501,70 @@ wordBoundaryReg2 = case R.regex ("(" <> wordBoundaryChars <> ")\\1") (R.global <
Left e -> unsafePartial $ crashWith e
Left e -> unsafePartial $ crashWith e
Right r -> r
Right r -> r
type HighlightElement = Tuple String (List (Tuple NgramsTerm TermList))
type HighlightAccumulator = List HighlightElement
-- TODO: while this function works well with word boundaries,
-- TODO: while this function works well with word boundaries,
-- it inserts too many spaces.
-- it inserts too many spaces.
highlightNgrams :: CTabNgramType -> NgramsTable -> String -> Array
(Tuple String (Maybe TermList))
highlightNgrams :: CTabNgramType -> NgramsTable -> String -> Array
HighlightElement
highlightNgrams ntype table@(NgramsTable {ngrams_repo_elements: elts}) input0 =
highlightNgrams ntype table@(NgramsTable {ngrams_repo_elements: elts}) input0 =
-- trace {pats, input0, input, ixs} \_ ->
-- trace {pats, input0, input, ixs} \_ ->
let sN = unsafePartial (foldl goFold {i0: 0, s: input, l: Nil} ixs) in
A.fromFoldable ((\(s /\ ls)-> undb s /\ ls) <$> unsafePartial (foldl goFold ((input /\ Nil) : Nil) ixs))
A.reverse (A.fromFoldable (consNonEmpty (undb (init sN.s)) sN.l))
where
where
spR x = " " <> R.replace wordBoundaryReg "$1$1" x <> " "
spR x = " " <> R.replace wordBoundaryReg "$1$1" x <> " "
reR = R.replace wordBoundaryReg " "
reR = R.replace wordBoundaryReg " "
db = S.replaceAll (S.Pattern " ") (S.Replacement " ")
db = S.replaceAll (S.Pattern " ") (S.Replacement " ")
sp x = " " <> db x <> " "
sp x = " " <> db x <> " "
undb = R.replace wordBoundaryReg2 "$1"
undb = R.replace wordBoundaryReg2 "$1"
init x = S.take (S.length x - 1) x
input = spR input0
input = spR input0
pats = A.fromFoldable (Map.keys elts)
pats = A.fromFoldable (Map.keys elts)
ixs = indicesOfAny (sp <<< ngramsTermText <$> pats) (normNgramInternal ntype input)
ixs = indicesOfAny (sp <<< ngramsTermText <$> pats) (normNgramInternal ntype input)
consOnJustTail s xs@(Tuple _ (Just _) : _) =
splitAcc :: Partial => Int -> HighlightAccumulator
Tuple s Nothing : xs
-> Tuple HighlightAccumulator HighlightAccumulator
consOnJustTail _ xs = xs
splitAcc i = go 0 Nil
where
consNonEmpty x xs
go j pref acc =
| S.null x = xs
case compare i j of
| otherwise = Tuple x Nothing : xs
LT -> crashWith "highlightNgrams: splitAcc': i < j"
EQ -> L.reverse pref /\ acc
-- NOTE that only the first matching pattern is used, the others are ignored!
GT ->
goFold :: Partial => _ -> Tuple Int (Array Int) -> _
case acc of
goFold { i0, s, l } (Tuple i pis)
Nil -> crashWith "highlightNgrams: splitAcc': acc=Nil" -- pref /\ Nil
| i < i0 =
elt@(s /\ ls) : elts ->
-- Skip this pattern which is overlapping with a previous one.
let slen = S.length s in
{ i0, s, l }
case compare i (j + slen) of
| otherwise =
LT -> let {before: s0, after: s1} = S.splitAt (i - j) s in
case A.index pis 0 of
L.reverse ((s0 /\ ls) : pref) /\ ((s1 /\ ls) : elts)
EQ -> L.reverse (elt : pref) /\ elts
GT -> go (j + slen) (elt : pref) elts
extractInputTextMatch :: Int -> Int -> String -> String
extractInputTextMatch i len input = undb $ S.take len $ S.drop (i + 1) input
addNgramElt ng ne_list (elt /\ elt_lists) = (elt /\ ((ng /\ ne_list) : elt_lists))
goAcc :: Partial => Int -> HighlightAccumulator -> Tuple NgramsTerm Int -> HighlightAccumulator
goAcc i acc (pat /\ lpat) =
case lookupRootList pat table of
Nothing ->
Nothing ->
{ i0, s, l }
crashWith "highlightNgrams: pattern missing from table"
Just pi ->
Just ne_list ->
case A.index pats pi of
let
Nothing ->
(acc0 /\ acc1_2) = splitAcc i acc
crashWith "highlightNgrams: out of bounds pattern"
(acc1 /\ acc2) = splitAcc (lpat + 1) acc1_2
Just pat ->
text = extractInputTextMatch i lpat input
let lpat = S.length (db (ngramsTermText pat)) in
ng = normNgram ntype text
case lookupRootList pat table of
in
Nothing ->
acc0 <> (addNgramElt ng ne_list <$> acc1) <> acc2
crashWith "highlightNgrams: pattern missing from table"
Just ne_list ->
goFold :: Partial => HighlightAccumulator -> Tuple Int (Array Int) -> HighlightAccumulator
let
goFold acc (Tuple i pis) = foldl (goAcc i) acc $
s1 = S.splitAt (i - i0) s
-- A.sortWith snd $
s2 = S.splitAt lpat (S.drop 1 s1.after)
map (\pat -> pat /\ S.length (db (ngramsTermText pat))) $
s3 = S.splitAt 1 s2.after
fromMaybe' (\_ -> crashWith "highlightNgrams: out of bounds pattern") $
unspB = if i0 == 0 then S.drop 1 else identity
traverse (A.index pats) pis
s3b = s3.before
in
-- trace {s, i, i0, s1, s2, s3, pat, lpat, s3b} \_ ->
-- `undb s2.before` and pat might differ by casing only!
{ i0: i + lpat + 2
, s: s3.after
, l: Tuple (undb s2.before) (Just ne_list) :
consOnJustTail s3b
(consNonEmpty (unspB (undb s1.before)) l)
}
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
...
...
src/Gargantext/Components/Nodes/Corpus/Document.purs
View file @
c23bbf37
...
@@ -123,7 +123,7 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
...
@@ -123,7 +123,7 @@ docViewCpt = R.hooksComponentWithModule thisModule "docView" cpt
ngrams = applyNgramsPatches (fst state) initTable
ngrams = applyNgramsPatches (fst state) initTable
annotate text = AnnotatedField.annotatedField { ngrams
annotate text = AnnotatedField.annotatedField { ngrams
, setTermList
, setTermList
, text }
, text }
[]
badge s = H.span { className: "badge badge-default badge-pill" } [ H.text s ]
badge s = H.span { className: "badge badge-default badge-pill" } [ H.text s ]
badgeLi s = H.span { className: "list-group-item-heading" } [
badgeLi s = H.span { className: "list-group-item-heading" } [
H.span { className: "badge-container" } [
H.span { className: "badge-container" } [
...
...
src/sass/_annotation.sass
View file @
c23bbf37
...
@@ -4,7 +4,8 @@
...
@@ -4,7 +4,8 @@
// Copied from bootstrap's bg-warning, bg-success, bg-danger:
// Copied from bootstrap's bg-warning, bg-success, bg-danger:
$annotation-graph-color
:
#95D295
93
$annotation-graph-color
:
#95D295
93
$annotation-candidate-color
:
#B8B8B8
76
// $annotation-candidate-color: #B8B8B876
$annotation-candidate-color
:
#b8daff
$annotation-stop-color
:
#F59499
31
$annotation-stop-color
:
#F59499
31
@mixin
lg1
(
$color
)
@mixin
lg1
(
$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