@@ -8,20 +8,20 @@ document.addEventListener('DOMContentLoaded', function() {
8
8
throw new Error ( `HTTP error! status: ${ response . status } ` ) ;
9
9
}
10
10
const data = await response . json ( ) ;
11
- const directories = data . filter ( item => item . type === 'dir' && item . name !== 'Website' ) ;
11
+ const directories = data . filter ( item => item . type === 'dir' && item . name !== 'Website' && item . name !== '.github' ) ;
12
12
13
13
directories . forEach ( directory => {
14
14
const li = document . createElement ( 'li' ) ;
15
15
li . classList . add ( 'card' ) ;
16
-
16
+
17
17
const h3 = document . createElement ( 'h3' ) ;
18
18
h3 . textContent = directory . name ;
19
19
20
20
const a = document . createElement ( 'a' ) ;
21
21
a . href = directory . html_url ;
22
22
a . textContent = 'View Repository' ;
23
23
a . classList . add ( 'btn-view-repo' ) ;
24
-
24
+
25
25
li . appendChild ( h3 ) ;
26
26
li . appendChild ( a ) ;
27
27
directoriesList . appendChild ( li ) ;
@@ -41,7 +41,7 @@ document.addEventListener('DOMContentLoaded', function() {
41
41
document . getElementById ( 'languages' ) . insertBefore ( toggleLanguagesButton , languagesList ) ;
42
42
43
43
languagesList . style . display = 'none' ;
44
-
44
+
45
45
toggleLanguagesButton . addEventListener ( 'click' , function ( ) {
46
46
languagesList . style . display = languagesList . style . display === 'none' ? 'block' : 'none' ;
47
47
toggleLanguagesButton . textContent = languagesList . style . display === 'none' ? 'Show Languages Used' : 'Hide Languages Used' ;
@@ -76,10 +76,14 @@ document.addEventListener('DOMContentLoaded', function() {
76
76
for ( const [ language , bytes ] of Object . entries ( languagesData ) ) {
77
77
const percentage = ( ( bytes / totalBytes ) * 100 ) . toFixed ( 2 ) ;
78
78
const listItem = document . createElement ( 'li' ) ;
79
- listItem . innerHTML = `
80
- <span>${ language } </span>
81
- <div class="progress-bar" style="width: ${ percentage } %;"></div>
82
- ` ;
79
+ listItem . classList . add ( 'card-languages' ) ;
80
+ const h3 = document . createElement ( 'h3' ) ;
81
+ h3 . textContent = `${ language } ` ;
82
+ listItem . appendChild ( h3 ) ;
83
+ // listItem.innerHTML = `
84
+ // <h3>${language}</h3>
85
+ // <div class="progress-bar" style="width: ${percentage}%;"></div>
86
+ // `;
83
87
languageList . appendChild ( listItem ) ;
84
88
85
89
if ( bytes > mostUsedLanguage . bytes ) {
@@ -107,6 +111,97 @@ document.addEventListener('DOMContentLoaded', function() {
107
111
} ) ;
108
112
}
109
113
114
+ const chatbotButton = document . getElementById ( 'chatbot-button' ) ;
115
+ const chatbot = document . getElementById ( 'chatbot' ) ;
116
+ const closeChatbot = document . getElementById ( 'close-chatbot' ) ;
117
+ const messagesContainer = document . getElementById ( 'chatbot-messages' ) ;
118
+ const inputField = document . getElementById ( 'chatbot-input' ) ;
119
+ const sendButton = document . getElementById ( 'chatbot-send' ) ;
120
+ const questionList = document . getElementById ( 'question-list' ) ;
121
+ let questionsRendered = false ;
122
+
123
+ const messages = [
124
+ { text : 'Hello! Welcome to Machine Learning Repos' , type : 'bot' }
125
+ ] ;
126
+
127
+ // hardcoded questions and answers
128
+ const questionsAndAnswers = [
129
+ { question : 'What is Machine Learning?' , answer : 'Machine Learning is a field of AI that enables computers to learn from data without being explicitly programmed.' } ,
130
+ { question : 'Tell me about Machine Learning Repos.' , answer : 'Machine Learning Repos is a curated collection of Machine Learning Repositories' } ,
131
+ { question : 'How do I contribute to the repository?' , answer : 'You can contribute by forking the repository, making changes, and submitting a pull request. Learn more <a href="https://github.com/recodehive/machine-learning-repos/blob/main/Website/README.md" target="_blank">here</a>' } ,
132
+ ] ;
133
+
134
+
135
+ function renderMessages ( ) {
136
+ messagesContainer . innerHTML = '' ;
137
+ messages . forEach ( ( msg ) => {
138
+ const messageDiv = document . createElement ( 'div' ) ;
139
+ messageDiv . className = `message ${ msg . type } ` ;
140
+ messageDiv . innerHTML = `<span class="message-text">${ msg . text } </span>` ;
141
+ messagesContainer . appendChild ( messageDiv ) ;
142
+ } ) ;
143
+ messagesContainer . scrollTop = messagesContainer . scrollHeight ;
144
+ }
145
+
146
+ function addMessage ( text , type ) {
147
+ messages . push ( { text, type } ) ;
148
+ renderMessages ( ) ;
149
+ }
150
+
151
+ function renderQuestions ( ) {
152
+ questionsAndAnswers . forEach ( ( qa , index ) => {
153
+ const listItem = document . createElement ( 'li' ) ;
154
+ listItem . textContent = qa . question ;
155
+ listItem . addEventListener ( 'click' , ( ) => {
156
+ addMessage ( qa . question , 'user' ) ;
157
+ setTimeout ( ( ) => addMessage ( qa . answer , 'bot' ) , 500 ) ;
158
+ } ) ;
159
+ questionList . appendChild ( listItem ) ;
160
+ } ) ;
161
+ }
162
+
163
+ chatbotButton . addEventListener ( 'click' , ( ) => {
164
+ chatbot . classList . add ( 'active' ) ;
165
+ renderMessages ( ) ;
166
+ if ( questionsRendered === false ) {
167
+ questionsRendered = true ;
168
+ renderQuestions ( ) ;
169
+ }
170
+ } ) ;
171
+
172
+ closeChatbot . addEventListener ( 'click' , ( ) => {
173
+ chatbot . classList . remove ( 'active' ) ;
174
+ } ) ;
175
+
176
+ sendButton . addEventListener ( 'click' , ( ) => {
177
+ const userInput = inputField . value . trim ( ) ;
178
+ if ( userInput ) {
179
+ addMessage ( userInput , 'user' ) ;
180
+ inputField . value = '' ;
181
+ setTimeout ( ( ) => addMessage ( 'Choose from the list of questions!' , 'bot' ) , 500 ) ; // response by bot
182
+ }
183
+ } ) ;
184
+
185
+ inputField . addEventListener ( 'keypress' , ( e ) => {
186
+ if ( e . key === 'Enter' ) {
187
+ sendButton . click ( ) ;
188
+ }
189
+ } ) ;
190
+
191
+ const goToTopButton = document . getElementById ( 'go-to-top' ) ;
192
+
193
+ window . addEventListener ( 'scroll' , ( ) => {
194
+ if ( window . scrollY > 300 ) {
195
+ goToTopButton . style . display = 'block' ;
196
+ } else {
197
+ goToTopButton . style . display = 'none' ;
198
+ }
199
+ } ) ;
200
+
201
+ goToTopButton . addEventListener ( 'click' , ( ) => {
202
+ window . scrollTo ( { top : 0 , behavior : 'smooth' } ) ;
203
+ } ) ;
204
+
110
205
fetchDirectories ( ) ;
111
206
toggleLanguagesSection ( ) ;
112
207
fetchRepoStats ( ) ;
0 commit comments