Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
clinicaltrials
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
david Chavalarias
clinicaltrials
Commits
54ed16c2
Commit
54ed16c2
authored
Jun 28, 2017
by
Romain Loth
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
first prototype for new db.json specifications
for servermenu mode, let the nodetypes be stipulated by graph source
parent
9532a8e0
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
108 additions
and
92 deletions
+108
-92
db.json
db.json
+43
-27
settings_explorerjs.js
settings_explorerjs.js
+4
-3
README.md
twbackends/phpAPI/README.md
+1
-1
Tinaweb.js
twmain/Tinaweb.js
+2
-11
enviroment.js
twmain/enviroment.js
+11
-5
extras_explorerjs.js
twmain/extras_explorerjs.js
+7
-14
main.js
twmain/main.js
+40
-31
No files found.
db.json
View file @
54ed16c2
{
{
"data/gargistex"
:
{
"data/gargistex"
:
{
"first"
:
"shale_and_ice.gexf"
,
"first"
:
"shale_and_ice.gexf"
,
"g
exfs"
:
{
"g
raphs"
:
{
"shale_and_ice.gexf"
:
{
"shale_and_ice.gexf"
:
{
"dbtype"
:
"csv"
,
"dbtype"
:
"csv"
,
"semantic"
:[
"title"
,
"keywords"
,
"abstract"
],
"semantic"
:[
"title"
,
"keywords"
,
"abstract"
],
"social"
:[
"authors"
],
"social"
:[
"authors"
],
"dbfile"
:
"shale_and_ice.csv"
"dbfile"
:
"shale_and_ice.csv"
,
"node0"
:
{
"name"
:
"terms"
}
},
"model_calibration.gexf"
:
{
"dbtype"
:
"csv"
,
"semantic"
:[
"title"
,
"keywords"
,
"abstract"
],
"social"
:[
"authors"
],
"dbfile"
:
"model_calibration.csv"
,
"node0"
:
{
"name"
:
"terms"
}
}
}
}
}
},
},
"data/test"
:
{
"data/test"
:
{
"first"
:
"mini_for_csv.gexf"
,
"first"
:
"mini_for_csv.gexf"
,
"g
exf
s"
:
{
"g
raph
s"
:
{
"mini_for_csv.gexf"
:
{
"mini_for_csv.gexf"
:
{
"_comment"
:
"NB: underspecified for csv and for db.json !! so this is a prototype structure"
,
"_comment"
:
"NB: underspecified for csv and for db.json !! so this is a prototype structure"
,
"_comment"
:
"POSS: weighted columns for matching importance"
,
"_comment"
:
"POSS: weighted columns for matching importance"
,
"dbtype"
:
"csv"
,
"dbtype"
:
"csv"
,
"semantic"
:[
"title"
,
"keywords"
,
"text"
],
"semantic"
:[
"title"
,
"keywords"
,
"text"
],
"social"
:[
"author"
],
"social"
:[
"author"
],
"dbfile"
:
"mini_for_csv.csv"
"dbfile"
:
"mini_for_csv.csv"
,
"node0"
:
{
"name"
:
"term"
},
"node1"
:
{
"name"
:
"person"
}
},
},
"test_with_various_atts.gexf"
:
{}
"test_with_various_atts.gexf"
:
{}
}
}
},
},
"data/politoscope"
:
{
"data/politoscope"
:
{
"dbname"
:
null
,
"dbname"
:
null
,
"title"
:
"Politoscope"
,
"title"
:
"Politoscope"
,
"date"
:
"2017"
,
"date"
:
"2017"
,
"abstract"
:
""
,
"abstract"
:
""
,
"first"
:
"ProgrammeDesCandidats.enrichi.gexf"
,
"first"
:
"ProgrammeDesCandidats.enrichi.gexf"
,
"gexfs"
:
{
"graphs"
:
{
"ProgrammeDesCandidats.enrichi.gexf"
:
{
"ProgrammeDesCandidats.enrichi.gexf"
:
{
"social"
:
{},
"node0"
:
{
"name"
:
"terms"
},
"semantic"
:
{}
"social"
:
{},
},
"semantic"
:
{}
"ProgrammeDesCandidats.gexf"
:
{
},
"social"
:
{},
"ProgrammeDesCandidats.gexf"
:
{
"semantic"
:
{}
"node0"
:
{
"name"
:
"terms"
},
}
"social"
:
{},
}
"semantic"
:
{}
},
}
}
},
"data/ClimateChange"
:
{
"data/ClimateChange"
:
{
"dbname"
:
"wos_climate-change_title_2014-2015.db"
,
"dbname"
:
"wos_climate-change_title_2014-2015.db"
,
"title"
:
"ISITITLE"
,
"title"
:
"ISITITLE"
,
"date"
:
"ISIpubdate"
,
"date"
:
"ISIpubdate"
,
"abstract"
:
"ISIABSTRACT"
,
"abstract"
:
"ISIABSTRACT"
,
"g
exf
s"
:
{
"g
raph
s"
:
{
"Maps_S_800.gexf"
:
{
"Maps_S_800.gexf"
:
{
"node0"
:
{
"name"
:
"ISItermsWhitelistV2Oct_5 & ISItermsWhitelistV2Oct_5"
},
"social"
:
{
"table"
:
"ISIAUTHOR"
,
"textCol"
:
"data"
,
"forkeyCol"
:
"id"
},
"social"
:
{
"table"
:
"ISIAUTHOR"
,
"textCol"
:
"data"
,
"forkeyCol"
:
"id"
},
"semantic"
:
{
"table"
:
"ISItermsWhitelistV2Oct_5"
,
"textCol"
:
"data"
,
"forkeyCol"
:
"id"
}
"semantic"
:
{
"table"
:
"ISItermsWhitelistV2Oct_5"
,
"textCol"
:
"data"
,
"forkeyCol"
:
"id"
}
}
}
}
}
},
},
"data/comexjsons"
:
{
"data/comexjsons"
:
{
"first"
:
"graph_example.json"
,
"first"
:
"graph_example.json"
,
"gexfs"
:
{
"graphs"
:
{
"graph_example.json"
:
{}
"graph_example.json"
:
{
}
"node0"
:
{
"name"
:
"NGram"
},
}
"node1"
:
{
"name"
:
"Document"
}
}
}
}
}
}
settings_explorerjs.js
View file @
54ed16c2
...
@@ -156,9 +156,10 @@ TW.conf = (function(TW){
...
@@ -156,9 +156,10 @@ TW.conf = (function(TW){
// Node typology: categories (resp. 0 and 1) will get these default labels
// Node typology: categories (resp. 0 and 1) will get these default labels
TWConf
.
catSem
=
"term"
;
TWConf
.
catSem
=
"term"
;
TWConf
.
catSoc
=
"person"
;
TWConf
.
catSoc
=
"document"
;
// NB: these labels may be superseded by the input data's node types values
// NB: these labels may be superseded by:
// cf. sortNodeTypes()
// - the input data's node types values cf. sortNodeTypes()
// - in servermenu mode, by the node0 & node1 properties
// Modules path
// Modules path
// ------------
// ------------
...
...
twbackends/phpAPI/README.md
View file @
54ed16c2
...
@@ -64,7 +64,7 @@ Finally, to match the correct DB with the correct graph file:
...
@@ -64,7 +64,7 @@ Finally, to match the correct DB with the correct graph file:
"title"
:
"yourDocumentTitlesTable"
,
"title"
:
"yourDocumentTitlesTable"
,
"date"
:
"yourDocumentPubDatesTable"
,
"date"
:
"yourDocumentPubDatesTable"
,
"abstract"
:
"yourDocumentContentsTable"
,
"abstract"
:
"yourDocumentContentsTable"
,
"g
exf
s"
:
{
"g
raph
s"
:
{
"your.graph.gexf"
:
{
"your.graph.gexf"
:
{
"semantic"
:
{
"table"
:
"yourTableWithTerms"
},
"semantic"
:
{
"table"
:
"yourTableWithTerms"
},
"social"
:
{
"table"
:
"yourTableWithSocialNodes"
}
"social"
:
{
"table"
:
"yourTableWithSocialNodes"
}
...
...
twmain/Tinaweb.js
View file @
54ed16c2
...
@@ -643,31 +643,22 @@ var TinaWebJS = function ( sigmacanvas ) {
...
@@ -643,31 +643,22 @@ var TinaWebJS = function ( sigmacanvas ) {
});
});
$
(
"#changetype"
).
click
(
function
(){
$
(
"#changetype"
).
click
(
function
(){
console
.
log
(
""
)
console
.
log
(
"changeTYPE click"
);
console
.
log
(
" ############ changeTYPE click"
);
if
(
TW
.
partialGraph
.
isForceAtlas2Running
())
if
(
TW
.
partialGraph
.
isForceAtlas2Running
())
sigma_utils
.
ourStopFA2
();
sigma_utils
.
ourStopFA2
();
console
.
log
(
"DBG before changeType SystemState:"
,
TW
.
SystemState
())
changeType
();
changeType
();
setTimeout
(
function
(){
setTimeout
(
function
(){
$
(
'.etabs a[href="#tabs1"]'
).
trigger
(
'click'
);
$
(
'.etabs a[href="#tabs1"]'
).
trigger
(
'click'
);
},
500
)
},
500
)
console
.
log
(
" ############ / changeTYPE click"
);
console
.
log
(
""
)
});
});
$
(
"#changelevel"
).
click
(
function
(){
$
(
"#changelevel"
).
click
(
function
(){
console
.
log
(
""
)
console
.
log
(
"changeLEVEL click"
);
console
.
log
(
" ############ changeLEVEL click"
);
if
(
TW
.
partialGraph
.
isForceAtlas2Running
())
if
(
TW
.
partialGraph
.
isForceAtlas2Running
())
sigma_utils
.
ourStopFA2
();
sigma_utils
.
ourStopFA2
();
changeLevel
();
changeLevel
();
console
.
log
(
" ############ / changeLEVEL click"
);
console
.
log
(
""
)
});
});
// sidepanel folding
// sidepanel folding
...
...
twmain/enviroment.js
View file @
54ed16c2
...
@@ -1017,8 +1017,8 @@ function createWaitIcon(idname, width) {
...
@@ -1017,8 +1017,8 @@ function createWaitIcon(idname, width) {
}
}
function
jsActionOnGexfSelector
(
g
exf
Basename
){
function
jsActionOnGexfSelector
(
g
raph
Basename
){
let
g
exfPath
=
TW
.
gexfPaths
[
gexfBasename
]
||
gexf
Basename
+
".gexf"
let
g
raphPath
=
TW
.
gmenuPaths
[
graphBasename
]
||
graph
Basename
+
".gexf"
let
serverPrefix
=
''
let
serverPrefix
=
''
var
pathcomponents
=
window
.
location
.
pathname
.
split
(
'/'
)
var
pathcomponents
=
window
.
location
.
pathname
.
split
(
'/'
)
for
(
var
i
in
pathcomponents
)
{
for
(
var
i
in
pathcomponents
)
{
...
@@ -1026,13 +1026,19 @@ function jsActionOnGexfSelector(gexfBasename){
...
@@ -1026,13 +1026,19 @@ function jsActionOnGexfSelector(gexfBasename){
serverPrefix
+=
'/'
+
pathcomponents
[
i
]
serverPrefix
+=
'/'
+
pathcomponents
[
i
]
}
}
var
newDataRes
=
AjaxSync
({
"url"
:
window
.
location
.
origin
+
serverPrefix
+
'/'
+
g
exf
Path
});
var
newDataRes
=
AjaxSync
({
"url"
:
window
.
location
.
origin
+
serverPrefix
+
'/'
+
g
raph
Path
});
// remove any previous instance and flags
// remove any previous instance and flags
TW
.
resetGraph
()
TW
.
resetGraph
()
// override default categories with the ones from db.json
if
(
TW
.
gmenuInfos
[
graphPath
].
nodetypes
)
{
TW
.
conf
.
catSem
=
TW
.
gmenuInfos
[
graphPath
].
nodetypes
.
node0
TW
.
conf
.
catSoc
=
TW
.
gmenuInfos
[
graphPath
].
nodetypes
.
node1
}
mainStartGraph
(
newDataRes
[
"format"
],
newDataRes
[
"data"
],
TW
.
instance
)
mainStartGraph
(
newDataRes
[
"format"
],
newDataRes
[
"data"
],
TW
.
instance
)
writeLabel
(
g
exf
Basename
)
writeLabel
(
g
raph
Basename
)
TW
.
File
=
g
exf
Path
TW
.
File
=
g
raph
Path
}
}
//============================= </OTHER ACTIONS > =============================//
//============================= </OTHER ACTIONS > =============================//
twmain/extras_explorerjs.js
View file @
54ed16c2
...
@@ -449,8 +449,8 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
...
@@ -449,8 +449,8 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
});
});
}
}
else
if
(
TW
.
conf
.
relatedDocsType
==
"wosLocalDB"
)
{
else
if
(
TW
.
conf
.
relatedDocsType
==
"wosLocalDB"
)
{
let
gexfinfos
=
TW
.
relDocsInfos
[
TW
.
File
]
let
thisRelDocsConf
=
TW
.
gmenuInfos
[
TW
.
File
].
relDocsConf
if
(
!
gexfinfos
||
!
gexfinfos
[
swType
])
{
if
(
!
thisRelDocsConf
||
!
thisRelDocsConf
[
swType
])
{
resHTML
=
resHTML
=
`<p>Your settings for relatedDocsType are set on a local wos database,
`<p>Your settings for relatedDocsType are set on a local wos database,
but your servermenu file does not provide any information about
but your servermenu file does not provide any information about
...
@@ -460,7 +460,6 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
...
@@ -460,7 +460,6 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
return
return
}
}
else
{
else
{
// /!\ documentation and specification needed for the php use cases /!\
// /!\ documentation and specification needed for the php use cases /!\
let
joinedQ
=
JSON
.
stringify
(
qWords
).
split
(
'&'
).
join
(
'__and__'
);
let
joinedQ
=
JSON
.
stringify
(
qWords
).
split
(
'&'
).
join
(
'__and__'
);
// cf. the php code for these url args:
// cf. the php code for these url args:
...
@@ -469,20 +468,20 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
...
@@ -469,20 +468,20 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
// or 'csv' (like gargantext exports)
// or 'csv' (like gargantext exports)
// POSS object + join.map(join)
// POSS object + join.map(join)
let
urlParams
=
"type="
+
swType
+
"&query="
+
joinedQ
+
"&gexf="
+
TW
.
File
+
"&n="
+
TW
.
conf
.
relatedDocsMax
+
"&dbtype="
+
gexfinfos
.
dbtype
let
urlParams
=
"type="
+
swType
+
"&query="
+
joinedQ
+
"&gexf="
+
TW
.
File
+
"&n="
+
TW
.
conf
.
relatedDocsMax
+
"&dbtype="
+
thisRelDocsConf
.
dbtype
if
(
gexfinfos
.
dbtype
==
"sql"
)
{
if
(
thisRelDocsConf
.
dbtype
==
"sql"
)
{
var
qIndex
=
gexfinfos
[
swType
]
// a table
var
qIndex
=
thisRelDocsConf
[
swType
]
// a table
urlParams
+=
`&index=
${
qIndex
}
`
urlParams
+=
`&index=
${
qIndex
}
`
}
}
else
{
else
{
// a list of csv columns to search in
// a list of csv columns to search in
// ex: for semantic nodes matching we look in 'title', 'keywords' cols
// ex: for semantic nodes matching we look in 'title', 'keywords' cols
// for social nodes matching we look in 'authors' col... etc.
// for social nodes matching we look in 'authors' col... etc.
let
joinedSearchCols
=
JSON
.
stringify
(
gexfinfos
[
swType
])
let
joinedSearchCols
=
JSON
.
stringify
(
thisRelDocsConf
[
swType
])
urlParams
+=
`&searchin=
${
joinedSearchCols
}
`
urlParams
+=
`&searchin=
${
joinedSearchCols
}
`
let
joinedAllCols
=
JSON
.
stringify
(
gexfinfos
)
let
joinedAllCols
=
JSON
.
stringify
(
thisRelDocsConf
)
urlParams
+=
`&toindex=
${
joinedAllCols
}
`
urlParams
+=
`&toindex=
${
joinedAllCols
}
`
// POSS use a direct access from php to db.json to avoid toindex
// POSS use a direct access from php to db.json to avoid toindex
// POSS make it a REST array like: index[]=title&index[]=keywords
// POSS make it a REST array like: index[]=title&index[]=keywords
...
@@ -502,12 +501,6 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
...
@@ -502,12 +501,6 @@ function topPapersFetcher(swType, qWords, priorHtml, cbNext){
cbNext
(
priorHtml
+
stockErrMsg
)
cbNext
(
priorHtml
+
stockErrMsg
)
}
}
});
});
}
}
}
}
}
}
...
...
twmain/main.js
View file @
54ed16c2
...
@@ -12,15 +12,15 @@ TW.File = "" // remember the currently opened file
...
@@ -12,15 +12,15 @@ TW.File = "" // remember the currently opened file
TW
.
partialGraph
=
null
// will contain the sigma visible graph instance
TW
.
partialGraph
=
null
// will contain the sigma visible graph instance
TW
.
labels
=
[];
// fulltext search list
TW
.
labels
=
[];
// fulltext search list
TW
.
gexfPaths
=
{};
// for file selectors iff servermenu
TW
.
relDocsInfos
=
{};
// map [graphsource => relatedDocs db fields or tables names]
// TODO requires specifications !!
// (iff servermenu && relatedDocsType == 'wosLocalDB')
TW
.
categories
=
[];
// possible node types and their inverted map
TW
.
categories
=
[];
// possible node types and their inverted map
TW
.
catDict
=
{};
TW
.
catDict
=
{};
// used iff servermenu
TW
.
gmenuPaths
=
{};
// map [graphname => graphsource] for file selectors
TW
.
gmenuInfos
=
{};
// map [graphsource => { node0/1 categories
// + relatedDocs db fields names}]
// a system state is the summary of tina situation
// a system state is the summary of tina situation
TW
.
initialSystemState
=
{
TW
.
initialSystemState
=
{
activetypes
:
[],
// <== filled from TW.categories
activetypes
:
[],
// <== filled from TW.categories
...
@@ -259,58 +259,67 @@ function syncRemoteGraphData () {
...
@@ -259,58 +259,67 @@ function syncRemoteGraphData () {
var
files_selector
=
'<select onchange="jsActionOnGexfSelector(this.value);">'
var
files_selector
=
'<select onchange="jsActionOnGexfSelector(this.value);">'
for
(
var
path
in
preRES
.
data
)
{
for
(
var
path
in
preRES
.
data
)
{
var
theG
exfs
=
preRES
.
data
[
path
][
"gexf
s"
]
var
theG
raphs
=
preRES
.
data
[
path
][
"graph
s"
]
for
(
var
aG
exf
in
theGexf
s
)
{
for
(
var
aG
raph
in
theGraph
s
)
{
var
g
exfBasename
=
aGexf
.
replace
(
/
\.
gexf$/
,
""
)
// more human-readable in the menu
var
g
raphBasename
=
aGraph
.
replace
(
/
\.
gexf$/
,
""
)
// more human-readable in the menu
TW
.
g
exfPaths
[
gexfBasename
]
=
path
+
"/"
+
aGexf
TW
.
g
menuPaths
[
graphBasename
]
=
path
+
"/"
+
aGraph
// ex : "RiskV2PageRank1000.gexf":data/AXA/RiskV2PageRank1000.gexf
// ex : "RiskV2PageRank1000.gexf":data/AXA/RiskV2PageRank1000.gexf
// (we assume there's no duplicate basenames)
// (we assume there's no duplicate basenames)
if
(
TW
.
conf
.
debug
.
logFetchers
)
if
(
TW
.
conf
.
debug
.
logFetchers
)
console
.
log
(
"
\
t
\
t
\
t"
+
g
exf
Basename
)
console
.
log
(
"
\
t
\
t
\
t"
+
g
raph
Basename
)
// for associated wosLocalDBs sql queries
// for associated wosLocalDBs sql queries
if
(
theGexfs
[
aGexf
])
{
if
(
theGraphs
[
aGraph
])
{
let
gSrcEntry
=
theGraphs
[
aGraph
]
TW
.
gmenuInfos
[
path
+
"/"
+
aGraph
]
=
{
"nodetypes"
:
{
"node0"
:
''
,
"node1"
:
''
},
"relDocsConf"
:
{
"semantic"
:
null
,
"social"
:
null
,
"dbtype"
:
null
}
}
let
gSrcEntry
=
theGexfs
[
aGexf
]
// shortcut
let
thisInfos
=
TW
.
gmenuInfos
[
path
+
"/"
+
aGraph
]
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
]
=
{
"semantic"
:
null
,
"social"
:
null
,
"dbtype"
:
null
}
// db.json flat => 2 level structure: nodetype infos and relDocsConf
// POSS have this type attribute in db.json *for all the entries*
// node types (no fallback here)
thisInfos
.
nodetypes
.
node0
=
gSrcEntry
.
node0
?
gSrcEntry
.
node0
.
name
:
''
thisInfos
.
nodetypes
.
node1
=
gSrcEntry
.
node1
?
gSrcEntry
.
node1
.
name
:
''
// TODO here settings + templates by type as per new specifications
// ----------------------------------------------------------------------------------
// choice: we'll keep a flat structure by source unless some use cases need otherwise
// ----------------------------------------------------------------------------------
// csv LocalDB ~ gargantext
// csv LocalDB ~ gargantext
if
(
gSrcEntry
[
"dbtype"
]
&&
gSrcEntry
[
"dbtype"
]
==
"csv"
)
{
if
(
gSrcEntry
[
"dbtype"
]
&&
gSrcEntry
[
"dbtype"
]
==
"csv"
)
{
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
][
'dbtype'
]
=
"csv"
thisInfos
.
relDocsConf
.
dbtype
=
"csv"
// it's CSV columns here
// it's CSV columns here
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
][
'semantic'
]
=
gSrcEntry
[
"semantic"
]
thisInfos
.
relDocsConf
.
semantic
=
gSrcEntry
[
"semantic"
]
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
][
'social'
]
=
gSrcEntry
[
"social"
]
thisInfos
.
relDocsConf
.
social
=
gSrcEntry
[
"social"
]
}
}
// sqlite LocalDB ~ wos
// sqlite LocalDB ~ wos
else
{
else
{
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
][
'dbtype'
]
=
"sql"
thisInfos
.
dbtype
=
"sql"
if
(
theG
exfs
[
aGexf
][
"semantic"
]
&&
theGexfs
[
aGexf
][
"semantic"
][
"table"
])
{
if
(
theG
raphs
[
aGraph
][
"semantic"
]
&&
theGraphs
[
aGraph
][
"semantic"
][
"table"
])
{
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
][
'semantic'
]
=
theGexfs
[
aGexf
][
"semantic"
][
"table"
]
thisInfos
.
relDocsConf
.
semantic
=
theGraphs
[
aGraph
][
"semantic"
][
"table"
]
}
}
if
(
theG
exfs
[
aGexf
][
"social"
]
&&
theGexfs
[
aGexf
][
"social"
][
"table"
])
{
if
(
theG
raphs
[
aGraph
][
"social"
]
&&
theGraphs
[
aGraph
][
"social"
][
"table"
])
{
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
][
'social'
]
=
theGexfs
[
aGexf
][
"social"
][
"table"
]
thisInfos
.
relDocsConf
.
social
=
theGraphs
[
aGraph
][
"social"
][
"table"
]
}
}
}
}
}
}
else
{
else
{
TW
.
relDocsInfos
[
path
+
"/"
+
aGexf
]
=
null
TW
.
gmenuInfos
[
path
+
"/"
+
aGraph
]
=
null
}
}
// ^^^^^^ FIXME see if we got the expected behavior right
// ^^^^^^ FIXME finish implementing new specifications
// (? specifications ?)
let
cssFileSelected
=
(
TW
.
File
==
(
path
+
"/"
+
aG
exf
))?
"selected"
:
""
let
cssFileSelected
=
(
TW
.
File
==
(
path
+
"/"
+
aG
raph
))?
"selected"
:
""
files_selector
+=
'<option '
+
cssFileSelected
+
'>'
+
g
exf
Basename
+
'</option>'
files_selector
+=
'<option '
+
cssFileSelected
+
'>'
+
g
raph
Basename
+
'</option>'
}
}
// console.log( files_selector )
// console.log( files_selector )
}
}
...
...
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