@@ -67,76 +67,11 @@ window.buildTimeTrend_displayBuilds = function (data) {
67
67
/**
68
68
* Generate SVG Icon
69
69
*/
70
- function generateSVGIcon ( iconName , iconSizeClass ) {
71
- const imagesURL = document . head . getAttribute ( "data-imagesurl" ) ;
72
-
73
- const isInProgress = iconName . endsWith ( "anime" ) ;
74
- let buildStatus = "never-built" ;
75
- switch ( iconName ) {
76
- case "red" :
77
- case "red-anime" :
78
- buildStatus = "last-failed" ;
79
- break ;
80
- case "yellow" :
81
- case "yellow-anime" :
82
- buildStatus = "last-unstable" ;
83
- break ;
84
- case "blue" :
85
- case "blue-anime" :
86
- buildStatus = "last-successful" ;
87
- break ;
88
- case "grey" :
89
- case "grey-anime" :
90
- case "disabled" :
91
- case "disabled-anime" :
92
- buildStatus = "last-disabled" ;
93
- break ;
94
- case "aborted" :
95
- case "aborted-anime" :
96
- buildStatus = "last-aborted" ;
97
- break ;
98
- case "nobuilt" :
99
- case "nobuilt-anime" :
100
- buildStatus = "never-built" ;
101
- break ;
102
- }
70
+ function generateSVGIcon ( iconName ) {
71
+ const icons = document . querySelector ( "#jenkins-build-status-icons" ) ;
72
+ iconName = iconName . replace ( "-anime" , "" ) ;
103
73
104
- const svg1 = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ;
105
- svg1 . setAttribute ( "class" , "svg-icon" ) ;
106
- svg1 . setAttribute ( "viewBox" , "0 0 24 24" ) ;
107
- const use1 = document . createElementNS ( "http://www.w3.org/2000/svg" , "use" ) ;
108
- use1 . setAttribute (
109
- "href" ,
110
- imagesURL +
111
- "/build-status/build-status-sprite.svg#build-status-" +
112
- ( isInProgress ? "in-progress" : "static" ) ,
113
- ) ;
114
- svg1 . appendChild ( use1 ) ;
115
-
116
- const svg2 = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ;
117
- svg2 . setAttribute (
118
- "class" ,
119
- "svg-icon icon-" + iconName + " " + ( iconSizeClass || "icon-sm" ) ,
120
- ) ;
121
- svg2 . setAttribute ( "viewBox" , "0 0 24 24" ) ;
122
- const use2 = document . createElementNS ( "http://www.w3.org/2000/svg" , "use" ) ;
123
- use2 . setAttribute (
124
- "href" ,
125
- imagesURL + "/build-status/build-status-sprite.svg#" + buildStatus ,
126
- ) ;
127
- svg2 . appendChild ( use2 ) ;
128
-
129
- const span = document . createElement ( "span" ) ;
130
- span . classList . add ( "build-status-icon__wrapper" , "icon-" + iconName ) ;
131
-
132
- let span2 = document . createElement ( "span" ) ;
133
- span2 . classList . add ( "build-status-icon__outer" ) ;
134
- span2 . appendChild ( svg1 ) ;
135
-
136
- span . appendChild ( span2 ) ;
137
- span . appendChild ( svg2 ) ;
138
-
139
- return span ;
74
+ return icons . content . querySelector ( `#${ iconName } ` ) . cloneNode ( true ) ;
140
75
}
141
76
142
77
/**
@@ -155,7 +90,7 @@ window.displayBuilds = function (data) {
155
90
td1 . classList . add ( "jenkins-table__cell--tight" , "jenkins-table__icon" ) ;
156
91
var div1 = document . createElement ( "div" ) ;
157
92
div1 . classList . add ( "jenkins-table__cell__button-wrapper" ) ;
158
- var svg = generateSVGIcon ( e . iconName , p . dataset . iconSizeClass ) ;
93
+ var svg = generateSVGIcon ( e . iconName ) ;
159
94
div1 . appendChild ( svg ) ;
160
95
td1 . appendChild ( div1 ) ;
161
96
tr . appendChild ( td1 ) ;
0 commit comments