@@ -68,12 +68,10 @@ class AppConfig {
68
68
}
69
69
70
70
class AppContext {
71
-
72
71
schema_tree = { } ;
73
72
dhs = { } ;
74
73
current_data_harmonizer_name = null ;
75
74
template = null ;
76
-
77
75
78
76
constructor ( appConfig ) {
79
77
this . appConfig = appConfig ;
@@ -565,7 +563,6 @@ function findSlotNamesForClass(schema, class_name) {
565
563
* @returns {Object|null } The schema tree object, or null if no "Container" classes are found.
566
564
*/
567
565
function buildSchemaTree ( schema ) {
568
-
569
566
function updateChildrenAndSharedKeys ( data ) {
570
567
// Use a deep clone to avoid mutating the original object
571
568
const result = JSON . parse ( JSON . stringify ( data ) ) ;
@@ -635,13 +632,12 @@ function buildSchemaTree(schema) {
635
632
} ) ;
636
633
} , { } ) ,
637
634
} ;
635
+ }
638
636
639
- } ;
640
-
641
- console . log ( 'has Container' )
637
+ console . log ( 'has Container' ) ;
642
638
643
639
const classes = Object . keys ( schema . classes ) . filter (
644
- ( el ) => el !== 'dh_interface' && el !== 'Container'
640
+ ( el ) => el !== 'dh_interface' && el !== 'Container'
645
641
) ;
646
642
647
643
const tree_base = {
@@ -660,7 +656,7 @@ function buildSchemaTree(schema) {
660
656
} , tree_base ) ;
661
657
662
658
const schema_tree = updateChildrenAndSharedKeys ( pre_schema_tree ) ;
663
- console . log ( schema_tree )
659
+ console . log ( schema_tree ) ;
664
660
return schema_tree ;
665
661
}
666
662
@@ -693,7 +689,6 @@ function makeDataHarmonizersFromSchemaTree(
693
689
schema_name ,
694
690
export_formats
695
691
) {
696
-
697
692
function createDataHarmonizerContainer ( dhId , isActive ) {
698
693
let dhSubroot = document . createElement ( 'div' ) ;
699
694
dhSubroot . id = dhId ;
@@ -741,11 +736,10 @@ function makeDataHarmonizersFromSchemaTree(
741
736
dhTab . addEventListener ( 'click' , ( ) => {
742
737
// set the current dataharmonizer tab in the context
743
738
context . setCurrentDataHarmonizer ( spec . name ) ;
744
-
739
+
745
740
$ ( document ) . trigger ( 'dhCurrentChange' , {
746
- data : spec . name
741
+ data : spec . name ,
747
742
} ) ;
748
-
749
743
} ) ;
750
744
dhTabNav . appendChild ( dhTab ) ; // Appending to the tab navigation
751
745
@@ -900,16 +894,13 @@ function setupSharedColumn(data_harmonizer, shared_key_name, callback) {
900
894
*/
901
895
function makeSharedKeyHandler ( data_harmonizer , schema_tree_node ) {
902
896
const makeUpdateHandler = ( shared_key_spec ) => {
903
-
904
897
const updateSchemaNodeChildrenCallback = (
905
898
changes ,
906
899
source ,
907
900
old_value ,
908
901
new_value
909
902
) => {
910
-
911
903
schema_tree_node . children . forEach ( ( cls_key ) => {
912
-
913
904
// lift this out to a more general function?
914
905
915
906
// transformation handler: what to do when a cell with a shared key is updated
@@ -928,12 +919,10 @@ function makeSharedKeyHandler(data_harmonizer, schema_tree_node) {
928
919
// visitSchemaTree(schema_tree, () => transformMultivaluedColumn(data_harmonizers[cls_key], shared_key_name, changes, source, old_value, new_value), cls_key)
929
920
// })
930
921
// }, cls_key);
931
-
932
922
} ) ;
933
923
} ;
934
924
935
925
return updateSchemaNodeChildrenCallback ;
936
-
937
926
} ;
938
927
939
928
schema_tree_node . shared_keys . forEach ( ( shared_key_spec ) => {
@@ -980,80 +969,80 @@ function attachPropagationEventHandlersToDataHarmonizers(
980
969
}
981
970
} ) ;
982
971
983
-
984
972
function stripDiv ( html ) {
985
- const div = document . createElement ( " div" ) ;
973
+ const div = document . createElement ( ' div' ) ;
986
974
div . innerHTML = html ;
987
- return ( div . innerText ) ;
975
+ return div . innerText ;
988
976
}
989
977
990
- Object . values ( data_harmonizers ) . forEach ( dh => {
991
-
978
+ Object . values ( data_harmonizers ) . forEach ( ( dh ) => {
992
979
dh . hot . addHook ( 'afterSelection' , ( row , col ) => {
993
980
const valueToMatch = dh . hot . getDataAtCell ( row , col ) ;
994
981
995
982
// get value at cell
996
983
// filter other data harmonizer at cell
997
- schema_tree [ dh . class_assignment ] . children . forEach ( child_name => {
998
- const shared_key_name = schema_tree [ dh . class_assignment ] . shared_keys . filter ( el => el . related_concept === child_name ) [ 0 ] . name ;
984
+ schema_tree [ dh . class_assignment ] . children . forEach ( ( child_name ) => {
985
+ const shared_key_name = schema_tree [
986
+ dh . class_assignment
987
+ ] . shared_keys . filter ( ( el ) => el . related_concept === child_name ) [ 0 ] . name ;
999
988
visitSchemaTree (
1000
989
schema_tree ,
1001
990
( schema_tree_node ) => {
1002
-
1003
991
const hot = data_harmonizers [ schema_tree_node . name ] . hot ;
1004
992
const columnHeaders = hot . getColHeader ( ) ;
1005
993
const columnName = shared_key_name ; // shared_key based on event selection ~ replace columnIndex with event data?
1006
- const columnIndex = columnHeaders . map ( stripDiv ) . findIndex ( header => header === columnName ) ;
994
+ const columnIndex = columnHeaders
995
+ . map ( stripDiv )
996
+ . findIndex ( ( header ) => header === columnName ) ;
1007
997
1008
998
if ( columnIndex === - 1 ) {
1009
999
console . error ( 'Column name not found' ) ;
1010
1000
return ;
1011
1001
}
1012
1002
const plugin = hot . getPlugin ( 'filters' ) ;
1013
1003
// Add a condition where the column value equals the specified value
1014
- plugin . clearConditions ( columnIndex ) ; // change valueToMatch per new selection in the column
1004
+ plugin . clearConditions ( columnIndex ) ; // change valueToMatch per new selection in the column
1015
1005
plugin . addCondition ( columnIndex , 'eq' , [ valueToMatch ] ) ;
1016
1006
plugin . filter ( ) ;
1017
-
1018
1007
} ,
1019
- child_name )
1020
- } )
1008
+ child_name
1009
+ ) ;
1010
+ } ) ;
1021
1011
} ) ;
1022
1012
1023
1013
dh . hot . addHook ( 'afterDeselect' , ( ) => {
1014
+ // get value at cell
1015
+ // filter other data harmonizer at cell
1016
+ schema_tree [ dh . class_assignment ] . children . forEach ( ( child_name ) => {
1017
+ const shared_key_name = schema_tree [
1018
+ dh . class_assignment
1019
+ ] . shared_keys . filter ( ( el ) => el . related_concept === child_name ) [ 0 ] . name ;
1024
1020
1025
- // get value at cell
1026
- // filter other data harmonizer at cell
1027
- schema_tree [ dh . class_assignment ] . children . forEach ( child_name => {
1028
-
1029
- const shared_key_name = schema_tree [ dh . class_assignment ] . shared_keys . filter ( el => el . related_concept === child_name ) [ 0 ] . name ;
1030
-
1031
- visitSchemaTree (
1032
- schema_tree ,
1033
- ( schema_tree_node ) => {
1034
-
1035
- const hot = data_harmonizers [ schema_tree_node . name ] . hot ;
1036
- const columnHeaders = hot . getColHeader ( ) ;
1037
- const columnName = shared_key_name ; // shared_key based on event selection ~ replace columnIndex with event data?
1038
- const columnIndex = columnHeaders . map ( stripDiv ) . findIndex ( header => header === columnName ) ;
1039
-
1040
- if ( columnIndex === - 1 ) {
1041
- console . error ( 'Column name not found' ) ;
1042
- return ;
1043
- }
1044
-
1045
- const plugin = hot . getPlugin ( 'filters' ) ;
1046
- plugin . clearConditions ( columnIndex ) ;
1047
- plugin . filter ( ) ;
1021
+ visitSchemaTree (
1022
+ schema_tree ,
1023
+ ( schema_tree_node ) => {
1024
+ const hot = data_harmonizers [ schema_tree_node . name ] . hot ;
1025
+ const columnHeaders = hot . getColHeader ( ) ;
1026
+ const columnName = shared_key_name ; // shared_key based on event selection ~ replace columnIndex with event data?
1027
+ const columnIndex = columnHeaders
1028
+ . map ( stripDiv )
1029
+ . findIndex ( ( header ) => header === columnName ) ;
1048
1030
1049
- } ,
1050
- child_name )
1031
+ if ( columnIndex === - 1 ) {
1032
+ console . error ( 'Column name not found' ) ;
1033
+ return ;
1034
+ }
1051
1035
1052
- } )
1036
+ const plugin = hot . getPlugin ( 'filters' ) ;
1037
+ plugin . clearConditions ( columnIndex ) ;
1038
+ plugin . filter ( ) ;
1039
+ } ,
1040
+ child_name
1041
+ ) ;
1042
+ } ) ;
1053
1043
} ) ;
1054
1044
// TODO: preserve memory of selection between tabs! in DH? => using outsideClickDeselects: false, // for maintaining selection between tabs
1055
-
1056
- } )
1045
+ } ) ;
1057
1046
1058
1047
return data_harmonizers ;
1059
1048
}
0 commit comments