@@ -11,11 +11,24 @@ export const gtt_setting = ():void => {
11
11
const wrapper = $ ( '<div>' , {
12
12
text : ''
13
13
} )
14
- $ ( '<i>' , {
15
- class : "ui-icons material-icons" ,
16
- title : item . label ,
17
- text : item . value
18
- } ) . prependTo ( wrapper )
14
+ const style = item . optgroup . toLowerCase ( ) . split ( ' ' ) . join ( '-' )
15
+ switch ( style ) {
16
+ case 'material-icons' :
17
+ $ ( '<i>' , {
18
+ class : 'ui-icons ' + style ,
19
+ title : item . label ,
20
+ text : item . value
21
+ } ) . prependTo ( wrapper )
22
+ break ;
23
+
24
+ default :
25
+ $ ( '<i>' , {
26
+ class : 'ui-icons ' + style + ' icon-' + item . value ,
27
+ title : item . label ,
28
+ text : ''
29
+ } ) . prependTo ( wrapper )
30
+ break ;
31
+ }
19
32
return li . append ( wrapper ) . appendTo ( ul )
20
33
}
21
34
} ) ;
@@ -25,44 +38,58 @@ export const gtt_setting = ():void => {
25
38
const selectedValue = element . value
26
39
if ( element . length === 1 && selectedValue !== "" ) {
27
40
element . remove ( 0 )
28
- element . append ( new Option ( "" , "" , false , false ) )
41
+ // element.append(new Option("", "", false, false))
29
42
}
30
43
for ( let font in FontSymbol . prototype . defs . fonts ) {
44
+ const optgroup = document . createElement ( 'optgroup' )
45
+ optgroup . label = FontSymbol . prototype . defs . fonts [ font ] . name
31
46
for ( let i in glyph ) {
32
47
if ( glyph [ i ] . font == font ) {
33
48
const selected = selectedValue === i
34
49
const words = i . split ( '_' )
35
50
const text = words . map ( ( word ) => {
36
51
return word [ 0 ] . toUpperCase ( ) + word . substring ( 1 )
37
- } ) . join ( " " )
38
- element . append ( new Option ( text , i , selected , selected ) )
52
+ } ) . join ( ' ' )
53
+ optgroup . appendChild ( new Option ( text , i , selected , selected ) )
39
54
if ( selected ) {
40
- element . nextElementSibling . className = "material-icons"
41
- element . nextElementSibling . textContent = i
55
+ const style = font . toLowerCase ( ) . split ( ' ' ) . join ( '-' )
56
+ switch ( style ) {
57
+ case 'material-icons' :
58
+ element . nextElementSibling . className = style
59
+ element . nextElementSibling . textContent = i
60
+ break ;
61
+
62
+ default :
63
+ element . nextElementSibling . className = style + ' icon-' + i
64
+ element . nextElementSibling . textContent = ''
65
+ break ;
66
+ }
42
67
}
43
68
}
44
69
}
70
+ element . append ( optgroup )
45
71
}
46
72
47
73
// Apply better Selector styling with jQuery UI (available in Redmine)
48
74
$ ( element )
49
75
. selectmenu ( {
50
76
change : function ( event : any , data : any ) {
51
- console . log ( data . item . value )
52
- document . querySelector ( `#icon_${ element . id } ` ) . textContent = data . item . value
77
+ const style = data . item . optgroup . toLowerCase ( ) . split ( ' ' ) . join ( '-' )
78
+ switch ( style ) {
79
+ case 'material-icons' :
80
+ document . querySelector ( `#icon_${ element . id } ` ) . className = style
81
+ document . querySelector ( `#icon_${ element . id } ` ) . textContent = data . item . value
82
+ break ;
83
+
84
+ default :
85
+ document . querySelector ( `#icon_${ element . id } ` ) . className = style + ' icon-' + data . item . value
86
+ document . querySelector ( `#icon_${ element . id } ` ) . textContent = ''
87
+ break ;
88
+ }
53
89
}
54
90
} )
55
91
. selectmenu ( 'menuWidget' )
56
92
. addClass ( 'select-overflow' )
57
93
. addClass ( 'ui-menu-icons customicons' )
58
94
} )
59
-
60
- // document.querySelectorAll("[id^='settings_tracker_']").forEach((element: HTMLSelectElement) => {
61
- // element.addEventListener('change', (ev) => {
62
- // const currentTarget = ev.currentTarget as HTMLSelectElement
63
- // const trackerId = currentTarget.id
64
- // document.querySelector(`#icon_${trackerId}`).className = "material-icons"
65
- // document.querySelector(`#icon_${trackerId}`).textContent = currentTarget.value
66
- // })
67
- // })
68
95
}
0 commit comments