lakshmivairamani commited on
Commit
80bf15f
·
verified ·
1 Parent(s): 8de9798

Delete templates

Browse files
templates/API_connectors.html DELETED
@@ -1,228 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>API Connectors</title>
6
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
7
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
8
- <!-- Include AdminLTE CSS -->
9
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
10
- <!-- Include DataTables CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
- <style>
13
- .header-row {
14
- display: flex;
15
- justify-content: space-between;
16
- align-items: center;
17
- }
18
-
19
- h2 {
20
- text-align: center;
21
- }
22
-
23
- .table-container {
24
- width: 100%;
25
- overflow-x: auto;
26
- }
27
-
28
- .wrapper {
29
- display: flex;
30
- flex-direction: column;
31
- height: 100vh;
32
- }
33
-
34
- .content-wrapper {
35
- flex: 1;
36
- overflow-y: auto;
37
- }
38
-
39
- .content-header {
40
- padding: 1rem;
41
- }
42
-
43
- .footer {
44
- text-align: right;
45
- padding: 10px;
46
- }
47
-
48
- th,
49
- td {
50
- white-space: nowrap;
51
- }
52
-
53
- th:nth-child(1),
54
- td:nth-child(1) {
55
- /* Sno column */
56
- width: 5%;
57
- }
58
-
59
- th:nth-child(2),
60
- td:nth-child(2) {
61
- /* API Name column */
62
- width: 20%;
63
- }
64
-
65
- th:nth-child(3),
66
- td:nth-child(3) {
67
- /* API Endpoint column */
68
- width: 40%;
69
- }
70
-
71
- th:nth-child(4),
72
- td:nth-child(4) {
73
- /* Auth/Bearer token column */
74
- width: 20%;
75
- }
76
-
77
- th:nth-child(5),
78
- td:nth-child(5) {
79
- /* View column */
80
- width: 15%;
81
- }
82
- </style>
83
- </head>
84
-
85
- <body>
86
- {% include 'sidepane.html' %}
87
-
88
- <div class="wrapper">
89
- <div class="content-wrapper">
90
- <!-- Content Header (Page header) -->
91
- <div class="content-header">
92
- <div class="container-fluid">
93
- <div class="row mb-2">
94
- <div class="col-12">
95
- <div class="header-row">
96
- <h2 class="m-0 text-center" style="flex-grow: 1;">API Connectors</h2>
97
- <button class="btn btn-primary" id="add">Add</button>
98
- </div>
99
- </div>
100
- </div>
101
- </div>
102
- </div>
103
- <!-- Main content -->
104
- <section class="content">
105
- <div class="container-fluid">
106
- <div class="row">
107
- <div class="col-12">
108
- <div class="card">
109
- <div class="card-body table-container">
110
- <table id="knowledgeTable" class="table table-bordered table-striped">
111
- <thead>
112
- <tr>
113
- <th>Sno</th>
114
- <th>API Name</th>
115
- <th>API Endpoint</th>
116
- <th>View</th>
117
- </tr>
118
- </thead>
119
- <tbody>
120
- <tr>
121
- <td>1</td>
122
- <td>Warehouse</td>
123
- <td>http://193.203.162.39:9090/nxt-wms/userWarehouse/fetchWarehouseForUserId
124
- </td>
125
- <td><button class="btn btn-primary viewButton">View</button></td>
126
- </tr>
127
- <tr>
128
- <td>2</td>
129
- <td>customer</td>
130
- <td>http://193.203.162.39:9090/nxt-wms/userCustomer/fetchCustomerForUserId
131
- </td>
132
- <td><button class="btn btn-primary viewButton">View</button></td>
133
- </tr>
134
- <tr>
135
- <td>3</td>
136
- <td>SKU</td>
137
- <td>http://193.203.162.39:9090/nxt-wms/sku/autoComplete?</td>
138
- <td><button class="btn btn-primary viewButton">View</button></td>
139
- </tr>
140
- <tr>
141
- <td>4</td>
142
- <td>ASN</td>
143
- <td>http://193.203.162.39:9090/nxt-wms/trnHeader</td>
144
- <td><button class="btn btn-primary viewButton">View</button></td>
145
- </tr>
146
- </tbody>
147
- </table>
148
- </div>
149
- </div>
150
- </div>
151
- </div>
152
- </div>
153
- </section>
154
- </div>
155
-
156
- </div>
157
-
158
- <!-- Modal -->
159
- <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel"
160
- aria-hidden="true">
161
- <div class="modal-dialog" role="document">
162
- <div class="modal-content">
163
- <div class="modal-header">
164
- <h5 class="modal-title" id="addModalLabel">Add Document</h5>
165
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
166
- <span aria-hidden="true">&times;</span>
167
- </button>
168
- </div>
169
- <div class="modal-body">
170
- <form>
171
- <div class="form-group">
172
- <label for="APIName">API Name <span class="text-danger">*</span></label>
173
- <input type="text" class="form-control" id="APIName" name="APIName" required>
174
- </div>
175
- <div class="form-group">
176
- <label for="APIEndpoint">API Endpoint <span class="text-danger">*</span></label>
177
- <input type="text" class="form-control" id="APIEndpoint" name="APIEndpoint" required>
178
- </div>
179
- <div class="form-group">
180
- <label for="Auth_Bearer">Auth/Bearer token <span class="text-danger">*</span></label>
181
- <input type="text" class="form-control" id="Auth_Bearer" name="Auth_Bearer" required>
182
- </div>
183
- <div class="form-group">
184
- <label for="Inputjson">Input parameter <span class="text-danger">*</span></label>
185
- <input type="text" class="form-control" id="Inputjson" name="Inputjson" required>
186
- </div>
187
- <div class="form-group">
188
- <label for="OutputJson">Output Json <span class="text-danger">*</span></label>
189
- <input type="text" class="form-control" id="OutputJson" name="OutputJson" required>
190
- </div>
191
- <div class="form-group">
192
- <label for="Description">Description <span class="text-danger">*</span></label>
193
- <textarea class="form-control" id="Description" name="Description" rows="3"
194
- required></textarea>
195
- </div>
196
- </form>
197
- </div>
198
- <div class="modal-footer">
199
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
200
- <button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button>
201
- </div>
202
- </div>
203
- </div>
204
- </div>
205
-
206
- <!-- Include DataTables JS and your custom script -->
207
- <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
208
- <script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script>
209
- <script>
210
- $(document).ready(function () {
211
- // Initialize DataTable
212
- $('#knowledgeTable').DataTable();
213
-
214
- // Show modal function
215
- $('#add').on('click', function () {
216
- $('#addModal').modal('show');
217
- });
218
-
219
- // Your save file function here
220
- async function save_file() {
221
- alert('Save button clicked');
222
- // Your save file logic goes here
223
- }
224
- });
225
- </script>
226
- </body>
227
-
228
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/chatbot.html DELETED
@@ -1,81 +0,0 @@
1
- # jinja2 html page with chatbot functionality using adminlte3 theme
2
- <html>
3
- <body>
4
- <form id="myform">
5
- <div class="content-wrapper">
6
- <section class="content-header">
7
- <div class="container-fluid">
8
- <div class="row mb-2">
9
- <div class="col-sm-6">
10
- <h1>Chatbot</h1>
11
- </div>
12
- <div class="col-sm-6">
13
- <ol class="breadcrumb float-sm-right">
14
- <li class="breadcrumb-item"><a href="#">Home</a></li>
15
- <li class="breadcrumb-item active">Chatbot</li>
16
- </ol>
17
- </div>
18
- </div>
19
- </div>
20
- </section>
21
-
22
- <section class="content">
23
- <div class="container-fluid">
24
- <div class="row">
25
- <div class="col-md-8 offset-md-2">
26
- <div class="card card-primary">
27
- <div class="card-header">
28
- <h3 class="card-title">Chat with our AI</h3>
29
- </div>
30
- <div class="card-body">
31
- <div id="chat-container">
32
- <div class="chat-messages">
33
- <!-- Chat messages will be dynamically added here -->
34
- </div>
35
- <div class="chat-input">
36
- <input type="text" id="user_question" placeholder="Type your message...">
37
- <button id="send-button" onclick="clickform()">Send</button>
38
- </div>
39
- </div>
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- </div>
45
- </section>
46
- </div>
47
- </form>
48
- <script>
49
- const chatContainer = document.getElementById('chat-container');
50
- const userInput = document.getElementById('user_question');
51
- const sendButton = document.getElementById('send-button');
52
-
53
- function clickform() {
54
- alert('Please enter');
55
- var formElement = document.getElementById('myForm');
56
- var user_question = document.getElementById('user_question').value;
57
- alert(user_question);
58
- //var data = new FormData(formElement);
59
- //alert(data);
60
- fetch('/chat_with_agent', {
61
- method: 'POST',
62
- //body: data,
63
- })
64
- .then(resp => resp.text()) // or, resp.json(), etc.
65
- .then(data => {
66
- //document.getElementById("responseArea").innerHTML = data;
67
- alert(data);
68
- const chatMessage = document.createElement('div');
69
- chatMessage.classList.add('chat-message');
70
- chatMessage.innerHTML = '<strong>You:</strong> ${user_question}<br><strong>AI:</strong> ${data}';
71
- chatContainer.appendChild(chatMessage);
72
-
73
- userInput.value = '';
74
- userInput.focus();
75
- })
76
- .catch(error => {
77
- console.error(error);
78
- });
79
- }
80
- </script>
81
- </body></html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/company_profile.html DELETED
@@ -1,190 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Company Profile</title>
8
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
9
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
10
- <!-- Include AdminLTE CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
12
- <!-- Include DataTables CSS -->
13
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
14
- <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
15
- <link href="https://cdn.jsdelivr.net/npm/@ttskch/select2-bootstrap4-theme@1.4.0/dist/select2-bootstrap4.min.css"
16
- rel="stylesheet" />
17
-
18
- <style>
19
- .container {
20
- margin-top: 10px;
21
- margin-left: 420px;
22
- align-items: center;
23
- max-width: 600px;
24
- padding: 10px;
25
- border: 1px solid #ccc;
26
- border-radius: 5px;
27
- position: relative;
28
- z-index: 1;
29
- }
30
-
31
- .container::before {
32
- content: '';
33
- position: absolute;
34
- top: 50%;
35
- left: 40%;
36
- background: url('..\static\img\redmindlogo3.jpg') no-repeat center center;
37
- background-size: contain;
38
- opacity: 0.1;
39
- width: 100%;
40
- height: 90%;
41
- z-index: -1;
42
- }
43
-
44
- .form-group {
45
- margin-bottom: 5px;
46
- }
47
-
48
- .form-group label {
49
- font-weight: bold;
50
- margin-bottom: 5px;
51
- display: block;
52
- }
53
-
54
- .form-group input .form-group select {
55
- width: 100%;
56
- padding: 10px;
57
- border: 1px solid #ccc;
58
- border-radius: 4px;
59
- text-align: center;
60
- }
61
-
62
- .form-group select.select2-container--bootstrap4 .select2-selection--multiple {
63
- height: auto;
64
- /* Adjust height to fit content */
65
- }
66
-
67
- .btn-primary {
68
- margin-right: 10px;
69
- color: black;
70
- font-size: 16px;
71
- font-weight: bold;
72
- }
73
-
74
- h3 {
75
- text-align: center;
76
- margin-bottom: 10px;
77
- }
78
-
79
- .btn-container {
80
- text-align: center;
81
- margin-top: 10px;
82
- color: white;
83
- }
84
-
85
- footer {
86
- position: absolute;
87
- bottom: 0;
88
- width: 100%;
89
- color: black;
90
- text-align: right;
91
- padding-right: 245px;
92
- padding-top: 0px;
93
- background-color: #f8f9fa;
94
- border: none !important;
95
- }
96
-
97
- #llm_tools {
98
- text-align: center;
99
- font-weight: bold;
100
- }
101
- </style>
102
- </head>
103
-
104
- <body>
105
- {% include 'sidepane.html' %}
106
- <div class="container mt-4">
107
- <h3>Company Profile</h3>
108
- <form id="companyProfileForm" class="needs-validation" novalidate action="/submit_company_profile"
109
- method="post">
110
- <div class="form-group">
111
- <label for="company_name">Company Name <span class="text-danger">*</span></label>
112
- <input type="text" id="company_name" name="company_name" class="form-control" required>
113
- <div class="invalid-feedback">
114
- Please enter the company name.
115
- </div>
116
- </div>
117
- <div class="form-group">
118
- <label for="company_code">Company Code <span class="text-danger">*</span></label>
119
- <input type="text" id="company_code" name="company_code" class="form-control" required>
120
- <div class="invalid-feedback">
121
- Please enter the company code.
122
- </div>
123
- </div>
124
- <div class="form-group">
125
- <label for="domain">Domain/Business <span class="text-danger">*</span></label>
126
- <input type="text" id="domain" name="domain" class="form-control" required>
127
- <div class="invalid-feedback">
128
- Please enter the domain/business.
129
- </div>
130
- </div>
131
- <div class="form-group">
132
- <label for="llm_tools">LLM Tools <span class="text-danger">*</span></label>
133
- <select type='text' id="llm_tools" name="llm_tools" class="form-control" multiple required>
134
- <option value="Database">Database</option>
135
- <option value="Static Documents">Static Documents</option>
136
- <option value="API">API</option>
137
- </select>
138
- <div class="invalid-feedback">
139
- Please select at least one LLM tool.
140
- </div>
141
- </div>
142
- <div class="btn-container">
143
- <button type="submit" class="btn btn-primary">Save</button>
144
- <button type="reset" class="btn btn-primary">Clear</button>
145
- </div>
146
- </form>
147
- </div>
148
-
149
- <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
150
- <script>
151
- $(document).ready(function () {
152
- // Initialize Select2 for multi-select dropdown
153
- $('#llm_tools').select2({
154
- theme: 'bootstrap4',
155
- placeholder: 'Select',
156
- allowClear: true
157
- });
158
-
159
- $('#companyProfileForm').on('submit', function (event) {
160
- event.preventDefault(); // Prevent default form submission
161
-
162
- // Gather form data
163
- var formData = $(this).serialize();
164
-
165
- $.ajax({
166
- type: "POST",
167
- url: "/submit_company_profile",
168
- data: formData,
169
- success: function (response) {
170
- // Show success message
171
- alert('Data saved successfully');
172
- // Reset the form values
173
- $('#companyProfileForm')[0].reset();
174
- // Reset Select2 fields
175
- $('#llm_tools').val(null).trigger('change');
176
- setTimeout(function () {
177
- window.location.href = '/company_profile'; // Redirect to the desired page after a delay
178
- }, 2000); // Delay for 2 seconds (2000 milliseconds)
179
- },
180
- error: function (xhr) {
181
- alert("An error occurred: " + xhr.responseJSON.detail); // Show error message
182
- }
183
- });
184
- });
185
- });
186
- </script>
187
-
188
- </body>
189
-
190
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/dashboard.html DELETED
@@ -1,156 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Dashboard</title>
6
- <!-- AdminLTE CSS -->
7
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/3.1.0/css/adminlte.min.css">
8
- </head>
9
-
10
- <body class="hold-transition sidebar-mini">
11
- <div class="wrapper">
12
- <!-- Main Sidebar -->
13
- <aside class="main-sidebar sidebar-dark-primary elevation-4">
14
- <!-- Sidebar -->
15
- <div class="sidebar">
16
- <!-- Sidebar Menu -->
17
- <nav class="mt-2">
18
- <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
19
- <!-- Navigation Links -->
20
- <li class="nav-item">
21
- <a href="#" class="nav-link">
22
- <i class="nav-icon fas fa-home"></i>
23
- <p>Dashboard</p>
24
- </a>
25
- </li>
26
- <li class="nav-item">
27
- <a href="{{ url_for('company_profile') }}" class="nav-link">
28
- <i class="nav-icon fas fa-cogs"></i>
29
- <p>Company Profile</p>
30
- </a>
31
- </li>
32
- <li class="nav-item">
33
- <a href="{{ url_for('knowledgebase') }}" class="nav-link">
34
- <i class="nav-icon fas fa-cogs"></i>
35
- <p>KnowledgeBase</p>
36
- </a>
37
- </li>
38
- <li class="nav-item">
39
- <a href="{{ url_for('data_connectors') }}" class="nav-link">
40
- <i class="nav-icon fas fa-home"></i>
41
- <p>Data Connectors</p>
42
- </a>
43
- </li>
44
- <li class="nav-item">
45
- <a href="{{ url_for('API_connectors') }}" class="nav-link">
46
- <i class="nav-icon fas fa-users"></i>
47
- <p>API Connectors</p>
48
- </a>
49
- </li>
50
- <li class="nav-item">
51
- <a href="{{url_for('prompt_template')}}" class="nav-link">
52
- <i class="nav-icon fas fa-cogs"></i>
53
- <p>Prompt Templates</p>
54
- </a>
55
- </li>
56
- <!-- <li class="nav-item">
57
- <a href="#" class="nav-link">
58
- <i class="nav-icon fas fa-cogs"></i>
59
- <p>LLM Settings</p>
60
- </a>
61
-
62
- </li>-->
63
- <li class="nav-item">
64
- <a href="{{ url_for('chatbot') }}" class="nav-link">
65
- <i class="nav-icon fas fa-cogs"></i>
66
- <p>Chat</p>
67
- </a>
68
- </li>
69
-
70
- <!-- Add more navigation links here -->
71
- </ul>
72
- </nav>
73
- <!-- /.sidebar-menu -->
74
- </div>
75
- <!-- /.sidebar -->
76
- </aside>
77
-
78
- <!-- Content Wrapper -->
79
- <div class="content-wrapper">
80
- <!-- Main content -->
81
- <section class="content">
82
- <!-- Project Information -->
83
- <div class="container-fluid">
84
- <h3 style="text-align: center; margin-bottom:40px;">RedMindGPT</h>
85
- </div>
86
- </section>
87
- <section class="content">
88
- <div class="container-fluid">
89
-
90
- <div class="row">
91
- <div class="col-lg-4 col-6">
92
-
93
- <div class="small-box bg-info">
94
- <div class="inner">
95
- <h3>4 </h3>
96
- <h4> KnowledgeBase</h4>
97
- </div>
98
- <div class="icon">
99
- <i class="ion ion-bag"></i>
100
- </div>
101
- </div>
102
- </div>
103
-
104
- <div class="col-lg-4 col-6">
105
-
106
- <div class="small-box bg-success">
107
- <div class="inner">
108
- <h3>1</h3>
109
- <h4>Data connectors</h4>
110
- </div>
111
- <div class="icon">
112
- <i class="ion ion-stats-bars"></i>
113
- </div>
114
-
115
- </div>
116
- </div>
117
-
118
- <div class="col-lg-4 col-6">
119
-
120
- <div class="small-box bg-warning">
121
- <div class="inner">
122
- <h3>4 </h3>
123
- <h4>API Connectors</h4>
124
- </div>
125
- <div class="icon">
126
- <i class="ion ion-person-add"></i>
127
- </div>
128
-
129
- </div>
130
- </div>
131
-
132
- <div class="col-lg-4 col-6">
133
-
134
- <div class="small-box bg-warning">
135
- <div class="inner">
136
- <h3>5 </h3>
137
- <h4>Prompt_Templates</h4>
138
- </div>
139
- <div class="icon">
140
- <i class="ion ion-person-add"></i>
141
- </div>
142
-
143
- </div>
144
- </div>
145
- <!-- /.content -->
146
- </div>
147
- <!-- /.content-wrapper -->
148
- </div>
149
- <!-- ./wrapper -->
150
-
151
- <!-- AdminLTE JS -->
152
- <script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/3.1.0/js/adminlte.min.js"></script>
153
-
154
- </body>
155
-
156
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/data_connectors.html DELETED
@@ -1,368 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Data Connectors</title>
8
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
9
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
10
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
-
13
- <style>
14
- html,
15
- body {
16
- height: 90%;
17
- margin: 0;
18
- display: flex;
19
- flex-direction: column;
20
- }
21
-
22
- body {
23
- display: flex;
24
- flex-direction: column;
25
- min-height: 90%;
26
- }
27
-
28
- .main-content {
29
- flex: 1;
30
- display: flex;
31
- flex-direction: column;
32
- align-items: center;
33
- justify-content: flex-start;
34
- padding: 20px;
35
- }
36
-
37
- .container {
38
- margin-top: 50px;
39
- margin-left: 420px;
40
- max-width: 600px;
41
- padding: 10px;
42
- border: 1px solid #ccc;
43
- border-radius: 5px;
44
- background-color: #fff;
45
- position: relative;
46
- z-index: 1;
47
- }
48
-
49
- .form-group {
50
- margin-bottom: 20px;
51
- }
52
-
53
- .form-group label {
54
- font-weight: bold;
55
- margin-top: 5px;
56
- margin-bottom: 5px;
57
- display: block;
58
- }
59
-
60
- .form-group input,
61
- .form-group select,
62
- .form-group textarea {
63
- width: 100%;
64
- height: auto;
65
- padding: 10px;
66
- border: 1px solid #ccc;
67
- border-radius: 4px;
68
- }
69
-
70
- .btn-primary {
71
- margin-right: 10px;
72
- color: black;
73
- font-size: 16px;
74
- font-weight: bold;
75
- }
76
-
77
- h2 {
78
- text-align: center;
79
- margin-bottom: 20px;
80
- }
81
-
82
- .btn-container {
83
- text-align: center;
84
- margin-top: 30px;
85
- margin-bottom: 0px;
86
- color: white;
87
- }
88
-
89
- #selectedTables,
90
- #labelselected {
91
- display: none;
92
- }
93
-
94
- #saveBtn1 {
95
- display: none;
96
- margin: 0 auto;
97
- }
98
-
99
- footer {
100
- position: relative;
101
- margin-top: auto;
102
- width: 100%;
103
- color: black;
104
- text-align: right;
105
- padding-right: 245px;
106
- padding-top: 20px;
107
- background-color: #f8f9fa;
108
- border: none !important;
109
- }
110
- </style>
111
- </head>
112
-
113
- <body>
114
- {% include 'sidepane.html' %}
115
- <div class="main-content">
116
- <div id="message-container"></div>
117
- <div class="container mt-2">
118
- <h2>Data Connectors</h2>
119
- <div class="form-group">
120
- <label for="company">Company Name <span class="text-danger">*</span></label>
121
- <select type="text" id="company" name="company" class="form-control" required>
122
- <option value="" selected>Select</option>
123
- </select>
124
- </div>
125
- <form id="databaseconnectorForm" class="needs-validation" novalidate action="/save_data_connectors"
126
- method="post" style="display:none;">
127
- <div class="form-group">
128
- <!-- <label for="company_id">company_id</label>--->
129
- <input type="hidden" id="company_id" name="company_id" class="form-control" required>
130
- </div>
131
- <div class="row">
132
- <div class="col-md-6">
133
- <div class="form-group">
134
- <label for="database">Database Type<span class="text-danger">*</span></label>
135
- <select type="text" id="database" name="database" class="form-control" required>
136
- <option value="" selected>Select</option>
137
- <option value="Postgress">Postgres</option>
138
- <option value="mysql">Mysql</option>
139
- </select>
140
- </div>
141
- </div>
142
- <div class="col-md-6">
143
- <div class="form-group">
144
- <label for="server">Server IP <span class="text-danger">*</span></label>
145
- <input type="text" id="server" name="server" class="form-control" required>
146
- </div>
147
- </div>
148
- </div>
149
- <div class="row">
150
- <div class="col-md-6">
151
- <div class="form-group">
152
- <label for="port">Port <span class="text-danger">*</span></label>
153
- <input type="text" id="port" name="port" class="form-control" required>
154
- </div>
155
- </div>
156
- <div class="col-md-6">
157
- <div class="form-group">
158
- <label for="databaseName">Database Name <span class="text-danger">*</span></label>
159
- <input type="text" id="databaseName" name="databaseName" class="form-control" required>
160
- </div>
161
- </div>
162
- </div>
163
- <div class="row">
164
- <div class="col-md-6">
165
- <div class="form-group">
166
- <label for="username">UserName <span class="text-danger">*</span></label>
167
- <input type="text" id="username" name="username" class="form-control" required>
168
- </div>
169
- </div>
170
- <div class="col-md-6">
171
- <div class="form-group">
172
- <label for="password">Password <span class="text-danger">*</span></label>
173
- <input type="password" id="password" name="password" class="form-control" required>
174
- </div>
175
- </div>
176
- </div>
177
- <div class="btn-container">
178
- <button type="button" id="connectBtn" class="btn btn-primary">Connect</button>
179
- <button type="reset" class="btn btn-primary">Clear</button>
180
- </div>
181
- <div id="schema-table-section" style="display: none;">
182
- <div class="form-group">
183
- <div class="row">
184
- <div class="col">
185
- <label for="schemas">Available Schemas <span class="text-danger">*</span></label>
186
- <select type="text" id="schemas" name="schemas" class="form-control" required>
187
- <option value="" selected>Select</option>
188
- <option value="schema1">Lookup</option>
189
- <option value="schema2">Public</option>
190
- <option value="schema3" selected>tenant_default</option>
191
- </select>
192
- </div>
193
- <div class="col">
194
- <label for="tables">Available Tables <span class="text-danger">*</span></label>
195
- <select type="text" id="tables" name="tables" class="form-control" multiple required>
196
- <option disabled>Select</option>
197
- <option value="customer_master">customer_master</option>
198
- <option value="efs_company_master">efs_company_master</option>
199
- <option value="efs_group_company_master">efs_group_company_master</option>
200
- <option value="efs_region_master">efs_region_master</option>
201
- <option value="party_address_detail">party_address_detail</option>
202
- <option value="wms_warehouse_master">wms_warehouse_master</option>
203
- </select>
204
- </div>
205
- </div>
206
- </div>
207
-
208
- <div class="btn-container">
209
- <button type="button" id="saveBtn" class="btn btn-primary">Save</button>
210
- </div>
211
- <div class="form-group">
212
- <label for="selectedTables" id="labelselected">Selected Tables:</label>
213
- <textarea type="text" id="selectedTables" name="selectedTables" class="form-control" rows="5"
214
- readonly style="display:none;"></textarea>
215
- </div>
216
- <div class="btn-container">
217
- <button type="submit" id="saveBtn1" class="btn btn-primary">Save Tables</button>
218
- </div>
219
- </div>
220
- </form>
221
- </div>
222
- </div>
223
- <footer>
224
- <p></p>
225
- </footer>
226
- <script>
227
-
228
- document.addEventListener('DOMContentLoaded', function () {
229
- fetchCompanies();
230
-
231
- const companySelect = document.getElementById('company');
232
- const databaseconnectorForm = document.getElementById('databaseconnectorForm');
233
-
234
- companySelect.addEventListener('change', async function () {
235
- const selectedCompanyName = companySelect.options[companySelect.selectedIndex].text;
236
- console.log(`Selected Company Name: ${selectedCompanyName}`);
237
-
238
- if (selectedCompanyName !== "Select") {
239
- try {
240
- const response = await fetch(`/api/company_id?company_name=${encodeURIComponent(selectedCompanyName)}`);
241
- if (!response.ok) {
242
- throw new Error('Network response was not ok');
243
- }
244
- const data = await response.json();
245
- console.log(`Company ID: ${data.company_id}`);
246
- const companyId = data.company_id;
247
- document.getElementById('company_id').value = companyId;
248
-
249
- if (companyId) {
250
- try {
251
- const connectorsResponse = await fetch(`/api/check_data_connectors?company_id=${companyId}&company_name=${selectedCompanyName}`);
252
- if (!connectorsResponse.ok) {
253
- throw new Error('data connector Network response was not ok');
254
- }
255
- const connectorsData = await connectorsResponse.json();
256
- //setMultiSelectValues(document.getElementById('database'), connectorsData.databasetype); // Ensure this is an array
257
- //setMultiSelectValues(document.getElementById('databaseName'), connectorsData.database_name); // Ensure this is an array
258
- document.getElementById('database').value = connectorsData.databasetype;
259
- document.getElementById('server').value = connectorsData.serverip;
260
- document.getElementById('port').value = connectorsData.port;
261
- document.getElementById('databaseName').value = connectorsData.database_name;
262
- document.getElementById('username').value = connectorsData.username;
263
- document.getElementById('password').value = connectorsData.password;
264
- document.getElementById('tables').value = connectorsData.dbtablename;
265
- databaseconnectorForm.style.display = 'block';
266
-
267
- } catch (error) {
268
- document.getElementById('database').value = " ";
269
- document.getElementById('server').value = " ";
270
- document.getElementById('port').value = " ";
271
- document.getElementById('databaseName').value = " ";
272
- document.getElementById('username').value = " ";
273
- document.getElementById('password').value = " ";
274
- document.getElementById('tables').value = " ";
275
- console.error('Error fetching data from data connectors:', error);
276
- ("Company name does not exist. Please fill in the details.");
277
-
278
- // Optionally, you can insert a message into the DOM
279
- const messageContainer = document.getElementById('message-container');
280
- if (messageContainer) {
281
- messageContainer.innerHTML = "<div class='alert alert-danger'>Database details does not exist for this Company name.. Please fill in the details.</div>";
282
- }
283
-
284
- databaseconnectorForm.style.display = 'block';
285
- }
286
- } else {
287
- console.log(`Company ID does not exist, you can create and save data: ${data.company_id}`);
288
- databaseconnectorForm.style.display = 'none';
289
- }
290
-
291
- } catch (error) {
292
-
293
- console.error('Error fetching company ID or data connectors:', error);
294
- databaseconnectorForm.style.display = 'none';
295
- }
296
- } else {
297
- databaseconnectorForm.style.display = 'none';
298
- }
299
- });
300
-
301
- document.getElementById("connectBtn").addEventListener("click", function (event) {
302
- var database = document.getElementById("database").value;
303
- var server = document.getElementById("server").value;
304
- var port = document.getElementById("port").value;
305
- var databaseName = document.getElementById("databaseName").value;
306
- var username = document.getElementById("username").value;
307
- var password = document.getElementById("password").value;
308
-
309
- if (!database || !server || !port || !databaseName || !username || !password) {
310
- alert("Please fill in all required fields.");
311
- return;
312
- }
313
-
314
- document.getElementById("schema-table-section").style.display = "block";
315
- });
316
-
317
- document.getElementById("saveBtn").addEventListener("click", function (event) {
318
- var tables = Array.from(document.getElementById("tables").selectedOptions).map(option => option.value);
319
- if (tables.length === 0) {
320
- alert("Please select at least one table.");
321
- return;
322
- }
323
-
324
- var selectedTables = document.getElementById("selectedTables");
325
- selectedTables.value = tables.join(", ");
326
- selectedTables.style.display = "block";
327
- document.getElementById("labelselected").style.display = "block";
328
- document.getElementById("saveBtn1").style.display = "block";
329
- });
330
- });
331
-
332
- async function fetchCompanies() {
333
- try {
334
- const response = await fetch('/api/companies');
335
- if (!response.ok) {
336
- throw new Error('Network response was not ok');
337
- }
338
- const data = await response.json();
339
- displayCompanies(data.companies);
340
- } catch (error) {
341
- console.error('Error fetching companies:', error);
342
- }
343
- }
344
-
345
- function displayCompanies(companies) {
346
- const companySelect = document.getElementById('company');
347
- companySelect.innerHTML = '<option value="" selected>Select</option>'; // Reset the dropdown
348
- companies.forEach(company => {
349
- const option = document.createElement('option');
350
- option.value = company.name;
351
- option.textContent = company.name;
352
- companySelect.appendChild(option);
353
- });
354
- }
355
-
356
- function setMultiSelectValues(selectElement, values) {
357
- // Ensure values is an array
358
- if (!Array.isArray(values)) {
359
- values = [values];
360
- }
361
- Array.from(selectElement.options).forEach(option => {
362
- option.selected = values.includes(option.value);
363
- });
364
- }
365
- </script>
366
- </body>
367
-
368
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/footer.html DELETED
@@ -1,26 +0,0 @@
1
- <!-- footer.html -->
2
-
3
- <!--
4
- This is the HTML code for the footer section of a web page.
5
- It displays the version number and copyright information.
6
-
7
- HTML Structure:
8
- - The footer element has a class of "main-footer".
9
- - Inside the footer, there is a div element with classes "float-right" and "d-none d-sm-block".
10
- - Inside the div, there is a bold tag (<b>) displaying the version number.
11
- - After the div, there is a strong tag (<strong>) displaying the copyright information.
12
- - The copyright information includes the year and a link to the company's website.
13
-
14
- Example Usage:
15
- <footer class="main-footer">
16
- <div class="float-right d-none d-sm-block">
17
- <b>Version</b> 3.0.5
18
- </div>
19
- <strong>&copy; 2023 <a href="https://yourcompany.com">Your Company</a>.</strong> All rights reserved.
20
- </footer>
21
- -->
22
- <footer class="main-footer" style="position: absolute; bottom: 0; width: 100%; color: black; text-align: right; padding-right:245px ;">
23
- <div class="container-fluid">
24
- <a href="https://redmindtechnologies.com" target="_blank" style="color: black; text-decoration: none;">Visit Redmind Technologies at https://redmindtechnologies.com</a>
25
- </div>
26
- </footer>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/index.html DELETED
@@ -1,103 +0,0 @@
1
- <!--
2
- This is the login page template for the RedMindGPT application.
3
- It contains a login form where users can enter their username and password to sign in.
4
- The form includes validation to ensure that both fields are filled out before submission.
5
- The page also includes styling using CSS and utilizes the AdminLTE and Font Awesome libraries for additional design elements.
6
- -->
7
-
8
- <!DOCTYPE html>
9
- <html lang="en">
10
- <head>
11
- <meta charset="UTF-8">
12
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
13
- <style>
14
- /* CSS styles for the login page */
15
- .login-box-msg {
16
- color: grey;
17
- font-size: larger;
18
- font-weight: bold;
19
- }
20
-
21
- .remember-me {
22
- text-align: center;
23
- }
24
- </style>
25
- <title>RedMindGPT</title>
26
- <!-- AdminLTE CSS -->
27
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
28
- <!-- Font Awesome -->
29
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
30
- </head>
31
- <body class="hold-transition login-page" style="background-image: url('static/img/AI.jpg'); background-size: cover;">
32
- <div class="login-box">
33
- <div class="card">
34
- <!-- Logo -->
35
- <div style="align-items: center;">
36
- <a href="#" style="color: blue;
37
- font-size: 30px;
38
- font-weight: bold;
39
- margin-left: 80px;
40
- margin-top: 20px;
41
- "><b>RedMindGPT</b></a>
42
- </div>
43
- <form action='/validate-user' name='loginForm' method="post" onsubmit="return validateForm()">
44
- <div class="card-body login-card-body">
45
- <p class="login-box-msg">Sign in</p>
46
- <div class="input-group mb-3">
47
- <input type="text" class="form-control" placeholder="Username" name="username" required>
48
- <div class="input-group-append">
49
- <div class="input-group-text">
50
- <span class="fas fa-user"></span>
51
- </div>
52
- </div>
53
- </div>
54
- <div class="input-group mb-3">
55
- <input type="password" class="form-control" placeholder="Password" name="password" required>
56
- <div class="input-group-append">
57
- <div class="input-group-text">
58
- <span class="fas fa-lock"></span>
59
- </div>
60
- </div>
61
- </div>
62
- <div class="row" style="align-content: center;">
63
- <div class="col-8">
64
- <div class="icheck-primary">
65
- <input type="checkbox" id="remember">
66
- <label for="remember">
67
- Remember Me
68
- </label>
69
- </div>
70
- </div>
71
- </div>
72
- <div class="row" style="align-content: center;">
73
- <div class="col-4">
74
- <button type="submit" class="btn btn-primary btn-block">Sign In</button>
75
- </div>
76
- <div class="col-4">
77
- <button type="reset" class="btn btn-secondary btn-block">Clear</button>
78
- </div>
79
- </div>
80
- </div>
81
- </form>
82
- </div>
83
- </div>
84
- <!-- jQuery -->
85
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
86
- <!-- Bootstrap 4 -->
87
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script>
88
- <!-- AdminLTE App -->
89
- <script src="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/js/adminlte.min.js"></script>
90
- <script>
91
- // JavaScript function to validate the login form
92
- function validateForm() {
93
- //alert("Validating form");
94
- var username = document.forms["loginForm"]["username"].value;
95
- var password = document.forms["loginForm"]["password"].value;
96
- if (username == "" || password == "") {
97
- alert("Username and Password must be filled out");
98
- return false;
99
- }
100
- }
101
- </script>
102
- </body>
103
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/knowledgebase.html DELETED
@@ -1,360 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>Knowledge Base</title>
6
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
7
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
8
- <!-- Include AdminLTE CSS -->
9
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
10
- <!-- Include DataTables CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
- <!-- Include AdminLTE JS -->
13
- <script src="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/js/adminlte.min.js"></script>
14
- <!-- Include DataTables JS -->
15
- <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
16
- <script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script>
17
- <style>
18
- body {
19
- background-color: transparent !important;
20
- }
21
-
22
- .content-wrapper {
23
- background-color: transparent !important;
24
- text-align: center;
25
- }
26
-
27
- .wrapper {
28
- background-color: transparent !important;
29
- }
30
-
31
- .modal-content {
32
- background-color: #fff;
33
- }
34
-
35
- h1 {
36
- text-align: center;
37
- margin-bottom: 30px;
38
- }
39
-
40
- /* Adjust table width to full container width */
41
- .card-body {
42
- padding: 0;
43
- }
44
-
45
- .table {
46
- width: 100%;
47
- }
48
-
49
- .text-wrap {
50
- white-space: normal !important;
51
- word-break: break-word;
52
- }
53
-
54
- .center-align {
55
- padding-top: 20px;
56
- display: flex;
57
- justify-content: center;
58
- align-items: center;
59
- width: 100%;
60
- }
61
-
62
- .reduced-width {
63
- width: 50%;
64
- /* Adjust the percentage as needed */
65
- }
66
- </style>
67
- </head>
68
-
69
- <body>
70
- {% include 'sidepane.html' %}
71
-
72
-
73
- <div class="wrapper" style="position: relative; top: 0;">
74
- <div class="content-wrapper">
75
- <div class="content-header">
76
- <div class="container-fluid">
77
- <div class="container mt-2">
78
- <h1 class="m-0 text-center" style="flex-grow: 1;">Knowledge Base</h1>
79
- <div class="form-group center-align">
80
- <label for="company" class="mr-2">Company Name <span class="text-danger">*</span></label>
81
- <select type="text" id="company" name="company" class="form-control reduced-width" required>
82
- <option value="" selected>Select</option>
83
- </select>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- <section class="content" id="contentSection" style="display: none;">
89
- <div class="container-fluid">
90
- <div class="form-group">
91
- <!-- <label for="company_id">company_id</label>--->
92
- <input type="hidden" id="company_id" name="company_id" class="form-control" required>
93
- </div>
94
- <div class="row">
95
- <div class="col-12 d-flex justify-content-end mb-3">
96
- <button class="btn btn-primary" id="add">Add</button>
97
- </div>
98
- <div class="row mb-2">
99
- <div class="col-12">
100
- <div class="col-12">
101
- <div class="card">
102
- <div class="card-body">
103
- <div class="table-responsive">
104
- <div id="message-container">
105
- <table id="knowledgeTable" class="table table-bordered table-striped">
106
- <thead>
107
- <tr>
108
- <th>Sno</th>
109
- <th>Document Name</th>
110
- <th>Document Description</th>
111
- <th>Document Version</th>
112
- <th>VectorDB Flag</th>
113
- <th>View</th>
114
- </tr>
115
- </thead>
116
- <tbody>
117
- <tr>
118
- <td>1</td>
119
- <td>NewAge eWMS BusinessRequirementsDocument_V1.9 - Inbound
120
- </td>
121
- <td>GRN Inbound</td>
122
- <td>1.9</td>
123
- <td>Yes</td>
124
- <td>
125
- <button class="btn btn-primary viewButton">View</button>
126
- </td>
127
- </tr>
128
- <tr>
129
- <td>2</td>
130
- <td>NewAge eWMS BusinessRequirementsDocument_V2.3 - Inbound
131
- </td>
132
- <td>GRN Inbound</td>
133
- <td>2.3</td>
134
- <td>No</td>
135
- <td>
136
- <button class="btn btn-primary viewButton">View</button>
137
- </td>
138
- </tr>
139
- <tr>
140
- <td>3</td>
141
- <td>NewAge eWMS BusinessRequirementsDocument_V1.9 - Outbound
142
- </td>
143
- <td>GRN Outbound</td>
144
- <td>1.9</td>
145
- <td>Yes</td>
146
- <td>
147
- <button class="btn btn-primary viewButton">View</button>
148
- </td>
149
- </tr>
150
- <tr>
151
- <td>4</td>
152
- <td class="text-wrap">NewAge eWMS
153
- BusinessRequirementsDocument_V2.2 - Outbound</td>
154
- <td>ASN Outbound</td>
155
- <td>2.2</td>
156
- <td>No</td>
157
- <td>
158
- <button class="btn btn-primary viewButton">View</button>
159
- </td>
160
- </tr>
161
- </tbody>
162
- </table>
163
- </div>
164
- </div>
165
- </div>
166
- </div>
167
- </div>
168
- </div>
169
- </div>
170
- </section>
171
- </div>
172
-
173
- <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel"
174
- aria-hidden="true">
175
- <div class="modal-dialog" role="document">
176
- <div class="modal-content">
177
- <div class="modal-header">
178
- <h5 class="modal-title" id="addModalLabel">Add Document</h5>
179
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
180
- <span aria-hidden="true">&times;</span>
181
- </button>
182
- </div>
183
- <div class="modal-body">
184
- <div class="form-group">
185
- <!-- <label for="company_id">company_id</label>--->
186
- <input type="hidden" id="company_id" name="company_id" class="form-control" required>
187
- </div>
188
- <form id="documentForm">
189
- <div class="form-group">
190
- <label for="uploadFile">Upload File<span class="text-danger">*</span></label>
191
- <input type="file" class="form-control-file" id="uploadFile" name="uploadFile" required accept=".pdf,.doc,.docx">
192
- <small class="form-text text-muted">Accepted formats: .pdf, .doc, .docx</small>
193
- </div>
194
- <div class="form-group">
195
- <label for="documentName">Document Name<span class="text-danger">*</span></label>
196
- <input type="text" class="form-control" id="documentName" name="documentName" required>
197
- </div>
198
- <div class="form-group">
199
- <label for="documentDescription">Document Description<span class="text-danger">*</span></label>
200
- <textarea class="form-control" id="documentDescription" name="documentDescription"
201
- rows="3" required></textarea>
202
- </div>
203
- <div class="form-group">
204
- <label for="department">Department<span class="text-danger">*</span></label>
205
- <input type="text" class="form-control" id="department" name="department" required>
206
- </div>
207
- <div class="form-group">
208
- <label for="version">Version<span class="text-danger">*</span></label>
209
- <input type="text" class="form-control" id="version" name="version" required>
210
- </div>
211
- <div class="form-group">
212
- <label for="lastUpdated">Last Updated<span class="text-danger">*</span></label>
213
- <input type="text" class="form-control" id="lastUpdated" name="lastUpdated" required>
214
- </div>
215
- </form>
216
- </div>
217
- <div class="modal-footer">
218
- <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
219
- <button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button>
220
- </div>
221
- </div>
222
- </div>
223
- </div>
224
- </div>
225
- <!-- JavaScript to handle modal display -->
226
- <script>
227
- document.addEventListener("DOMContentLoaded", function () {
228
- now = new Date().toISOString().substr(0, 10);
229
- document.getElementById('lastUpdated').value = now
230
- // clearFormFields();
231
- });
232
- document.addEventListener('DOMContentLoaded', function () {
233
-
234
- fetchCompanies();
235
-
236
- const companySelect = document.getElementById('company');
237
- const documentForm = document.getElementById('documentForm');
238
-
239
- companySelect.addEventListener('change', async function () {
240
- const selectedCompanyName = companySelect.options[companySelect.selectedIndex].text;
241
- console.log(`Selected Company Name: ${selectedCompanyName}`);
242
-
243
- if (selectedCompanyName !== "Select") {
244
-
245
- try {
246
- const response = await fetch(`/api/company_id?company_name=${encodeURIComponent(selectedCompanyName)}`);
247
- if (!response.ok) {
248
- contentSection.style.display='none';
249
- const messageContainer = document.getElementById('message-container');
250
- if (messageContainer) {
251
- messageContainer.innerHTML = "<div class='alert alert-danger'>Document details do not exist for this company. Please fill in the details.</div>";
252
- }
253
- throw new Error('Network response was not ok');
254
- }
255
- const data = await response.json();
256
- console.log(`Company ID: ${data.company_id}`);
257
- const companyId = data.company_id;
258
- document.getElementById('company_id').value = companyId;
259
-
260
- if (companyId) {
261
- contentSection.style.display = 'block';
262
- }
263
-
264
-
265
- } catch (error) {
266
- console.error('Error fetching company ID or data documents:', error);
267
- documentForm.style.display = 'none';
268
- }
269
- } else {
270
- //clearFormFields();
271
- documentForm.style.display = 'block';
272
- }
273
- });
274
- });
275
- function clearFormFields() {
276
- document.getElementById('uploadFile').value = "";
277
- document.getElementById('documentName').value = "";
278
- document.getElementById('documentDescription').value = "";
279
- document.getElementById('department').value = "";
280
- document.getElementById('version').value = "";
281
- //document.getElementById('lastUpdated').value = "";
282
- }
283
-
284
-
285
- $(document).ready(function () {
286
- // Show modal function
287
- $('#add').on('click', function () {
288
- clearFormFields();
289
- $('#addModal').modal('show');
290
- });
291
- $('.modal-footer .btn-secondary').on('click', function () {
292
- $('#addModal').modal('hide');
293
- });
294
- // Your save file function here
295
- // async function save_file() {
296
- // alert('Save button clicked');
297
- // // Your save file logic goes here
298
- // }
299
- });
300
- function save_file() {
301
- const uploadFile = document.getElementById("uploadFile").files[0];
302
- const documentName = document.getElementById("documentName").value;
303
- const documentDescription = document.getElementById("documentDescription").value;
304
- const department = document.getElementById("department").value;
305
- const version = document.getElementById("version").value;
306
- const lastUpdated = document.getElementById("lastUpdated").value;
307
- const company_id = document.getElementById("company_id").value;
308
-
309
- const formData = new FormData();
310
- formData.append("uploadFile", uploadFile);
311
- formData.append("documentName", documentName);
312
- formData.append("documentDescription", documentDescription);
313
- formData.append("department", department);
314
- formData.append("version", version);
315
- formData.append("lastUpdated", lastUpdated);
316
- formData.append("company_id", company_id);
317
-
318
- fetch('/upload_document', {
319
- method: 'POST',
320
- body: formData
321
- })
322
- .then(response => {
323
- if (!response.ok) {
324
- throw new Error('Network response was not ok');
325
- }
326
- return response.text();
327
- })
328
- .then(data => {
329
- alert('Document saved successfully');
330
- // $('#addModal').modal('hide');
331
- })
332
- .catch(error => console.error('Error:', error));
333
- }
334
- async function fetchCompanies() {
335
- try {
336
- const response = await fetch('/api/companies');
337
- if (!response.ok) {
338
- throw new Error('Network response was not ok');
339
- }
340
- const data = await response.json();
341
- displayCompanies(data.companies);
342
- } catch (error) {
343
- console.error('Error fetching companies:', error);
344
- }
345
- }
346
-
347
- function displayCompanies(companies) {
348
- const companySelect = document.getElementById('company');
349
- companySelect.innerHTML = '<option value="" selected>Select</option>'; // Reset the dropdown
350
- companies.forEach(company => {
351
- const option = document.createElement('option');
352
- option.value = company.name;
353
- option.textContent = company.name;
354
- companySelect.appendChild(option);
355
- });
356
- }
357
- </script>
358
- </body>
359
-
360
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/prompt_template.html DELETED
@@ -1,224 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>Prompt Template</title>
6
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
7
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
8
- <!-- Include AdminLTE CSS -->
9
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
10
- <!-- Include DataTables CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
- <style>
13
- .header-row {
14
- display: flex;
15
- justify-content: space-between;
16
- align-items: center;
17
- }
18
-
19
- h2 {
20
- text-align: center;
21
- }
22
-
23
- .table-container {
24
- width: 100%;
25
- overflow-x: auto;
26
- }
27
-
28
- .wrapper {
29
- display: flex;
30
- flex-direction: column;
31
- height: 100vh;
32
- }
33
-
34
- .content-wrapper {
35
- flex: 1;
36
- overflow-y: auto;
37
- }
38
-
39
- .content-header {
40
- padding: 1rem;
41
- }
42
-
43
- .footer {
44
- text-align: right;
45
- padding: 10px;
46
- }
47
-
48
- th,
49
- td {
50
- white-space: nowrap;
51
- }
52
-
53
- th:nth-child(1),
54
- td:nth-child(1) {
55
- /* Sno column */
56
- width: 3%;
57
- }
58
-
59
- th:nth-child(2),
60
- td:nth-child(2) {
61
- /* API Name column */
62
- width: 20%;
63
- }
64
-
65
- th:nth-child(3),
66
- td:nth-child(3) {
67
- /* API Endpoint column */
68
- width: 40%;
69
- }
70
-
71
- th:nth-child(4),
72
- td:nth-child(4) {
73
- /* Auth/Bearer token column */
74
- width: 20%;
75
- }
76
-
77
- th:nth-child(5),
78
- td:nth-child(5) {
79
- /* View column */
80
- width: 15%;
81
- }
82
- </style>
83
- </head>
84
-
85
- <body>
86
- {% include 'sidepane.html' %}
87
-
88
- <div class="wrapper">
89
- <div class="content-wrapper">
90
- <!-- Content Header (Page header) -->
91
- <div class="content-header">
92
- <div class="container-fluid">
93
- <div class="row mb-2">
94
- <div class="col-12">
95
- <div class="header-row">
96
- <h2 class="m-0 text-center" style="flex-grow: 1;">Prompt Template</h2>
97
- <button class="btn btn-primary" id="add">Add</button>
98
- </div>
99
- </div>
100
- </div>
101
- </div>
102
- </div>
103
- <!-- Main content -->
104
- <section class="content">
105
- <div class="container-fluid">
106
- <div class="row">
107
- <div class="col-12">
108
- <div class="card">
109
- <div class="card-body table-container">
110
- <table id="knowledgeTable" class="table table-bordered table-striped">
111
- <thead>
112
- <tr>
113
- <th>Sno</th>
114
- <th>Scenario</th>
115
- <th>Sample Prompt</th>
116
- <th>Comments</th>
117
- <th>View</th>
118
- </tr>
119
- </thead>
120
- <tbody>
121
- <tr>
122
- <td>1</td>
123
- <td>Creating new database in mysql</td>
124
- <td>Need DB step for mysql with DB name = wwp, table name = customer_master with column name = name as datatype = string. (sample prompt).</td>
125
- <td>It didn't create database instead its showed how to make connection to database and create table.</td>
126
- <td><button class="btn btn-primary viewButton">View</button></td>
127
- </tr>
128
- <tr>
129
- <td>2</td>
130
- <td>Creating data table with columns</td>
131
- <td>Since you are an EXPERT in PHP, i want a code for an entity/configuration of table name called customer_Master. this table should be created inside database wwp which is in file database_connection.php. now, in that table customer_master i want to add columns. the column names and datatypes are given below:</td>
132
- <td>Expected response but adminlte theme was missing.</td>
133
- <td><button class="btn btn-primary viewButton">View</button></td>
134
- </tr>
135
- <tr>
136
- <td>3</td>
137
- <td>Creating home page with adminlte theme.</td>
138
- <td>I have created a new file named admintle_theme.php. I want this file filled with "ADMINLTE" theme. it should have a login/signup functionality and home button along with dashboard.
139
-
140
- example: https://adminlte.io/themes/v3/index3.html
141
-
142
- use this example for theme/html page. recreate it exactly like that
143
- .image.png
144
- </td>
145
- <td>It created a html page but lacked side bar, nav bar present in url.
146
- </td>
147
- <td><button class="btn btn-primary viewButton">View</button></td>
148
- </tr>
149
- <tr>
150
- <td>4</td>
151
- <td>Including side bar menu in customer master</td>
152
- <td>I want the side bar menu from admintle_theme to be present in customer_configuration.php</td>
153
- <td>It gave expected results.
154
- </td>
155
- <td><button class="btn btn-primary viewButton">View</button></td>
156
- </tr>
157
- </tbody>
158
- </table>
159
- </div>
160
- </div>
161
- </div>
162
- </div>
163
- </div>
164
- </section>
165
- </div>
166
-
167
- </div>
168
-
169
- <!-- Modal -->
170
- <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel"
171
- aria-hidden="true">
172
- <div class="modal-dialog" role="document">
173
- <div class="modal-content">
174
- <div class="modal-header">
175
- <h5 class="modal-title" id="addModalLabel">Add Prompt</h5>
176
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
177
- </div>
178
- <div class="modal-body">
179
- <form id="addPromptForm">
180
- <div class="form-group">
181
- <label for="APIName">Scenario <span class="text-danger">*</span></label>
182
- <input type="text" class="form-control" id="APIName" name="APIName" required>
183
- </div>
184
- <div class="form-group">
185
- <label for="APIEndpoint">Sample Prompt <span class="text-danger">*</span></label>
186
- <input type="text" class="form-control" id="APIEndpoint" name="APIEndpoint" required>
187
- </div>
188
- <div class="form-group">
189
- <label for="Auth_Bearer">Comments <span class="text-danger">*</span></label>
190
- <input type="text" class="form-control" id="Auth_Bearer" name="Auth_Bearer" required>
191
- </div>
192
- </form>
193
- </div>
194
- <div class="modal-footer">
195
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
196
- <button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button>
197
- </div>
198
- </div>
199
- </div>
200
- </div>
201
-
202
- <!-- Include DataTables JS and your custom script -->
203
- <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
204
- <script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script>
205
- <script>
206
- $(document).ready(function () {
207
- // Initialize DataTable
208
- $('#knowledgeTable').DataTable();
209
-
210
- // Show modal function
211
- $('#add').on('click', function () {
212
- $('#addModal').modal('show');
213
- });
214
-
215
- // Your save file function here
216
- function save_file() {
217
- alert('Save button clicked');
218
- // Your save file logic goes here
219
- }
220
- });
221
- </script>
222
- </body>
223
-
224
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/redmindlogo2.jpg DELETED
Binary file (82.6 kB)
 
templates/redmindlogo3.jpg DELETED
Binary file (82.6 kB)
 
templates/sidepane.html DELETED
@@ -1,95 +0,0 @@
1
- <!-- sidepane.html -->
2
-
3
- <!-- This file represents the sidepane component of a web application. It contains the navigation menu and sidebar. -->
4
-
5
- <nav class="main-header navbar navbar-expand navbar-white navbar-light" style="text-align: center;">
6
- <div class="container-fluid d-flex justify-content-center align-items-center">
7
- <img src="../static/img/redmindlogo3.jpg" alt="Logo" style="width: 80px; height: auto; margin-right: 10px;">
8
-
9
- <h2 style="text-align: center; margin-bottom: 0;">Redmind GPT</h2>
10
- </div>
11
- <!-- Left navbar links -->
12
- <ul class="navbar-nav">
13
- <li class="nav-item">
14
- <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
15
- </li>
16
- </ul>
17
- </nav>
18
-
19
- <!-- Main Sidebar Container -->
20
- <aside class="main-sidebar sidebar-dark-primary elevation-4" style="width: 200px;">
21
- <!-- Sidebar -->
22
- <div class="sidebar">
23
- <!-- Sidebar Menu -->
24
- <nav class="mt-2">
25
- <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
26
- <!-- Navigation Links -->
27
- <li class="nav-item">
28
- <a href="#" class="nav-link">
29
- <i class="nav-icon fas fa-home"></i>
30
- <p>Dashboard</p>
31
- </a>
32
- </li>
33
- <li class="nav-item">
34
- <a href="{{ url_for('company_profile') }}" class="nav-link">
35
- <i class="nav-icon fas fa-users"></i>
36
- <p>Company Profile</p>
37
- </a>
38
- </li>
39
- <li class="nav-item">
40
- <a href="{{ url_for('knowledgebase') }}" class="nav-link">
41
- <i class="nav-icon fas fa-cogs"></i>
42
- <p>KnowledgeBase</p>
43
- </a>
44
- </li>
45
- <li class="nav-item">
46
- <a href="{{ url_for('data_connectors') }}" class="nav-link">
47
- <i class="nav-icon fas fa-home"></i>
48
- <p>Data Connectors</p>
49
- </a>
50
- </li>
51
- <li class="nav-item">
52
- <a href="{{ url_for('API_connectors') }}" class="nav-link">
53
- <i class="nav-icon fas fa-users"></i>
54
- <p>API Connectors</p>
55
- </a>
56
- </li>
57
- <li class="nav-item">
58
- <a href="{{url_for('prompt_template')}}" class="nav-link">
59
- <i class="nav-icon fas fa-cogs"></i>
60
- <p>Prompt Templates</p>
61
- </a>
62
- </li>
63
- <!--<li class="nav-item">
64
- <a href="#" class="nav-link">
65
- <i class="nav-icon fas fa-cogs"></i>
66
- <p>LLM Settings</p>
67
- </a>
68
- <ul class="nav nav-treeview">
69
- <li class="nav-item">
70
- <a href="#" class="nav-link">
71
- <i class="far fa-circle nav-icon"></i>
72
- <p>Sublink 1</p>
73
- </a>
74
- </li>
75
- <li class="nav-item">
76
- <a href="#" class="nav-link">
77
- <i class="far fa-circle nav-icon"></i>
78
- <p>Sublink 2</p>
79
- </a>
80
- </li>
81
- <!-- Add more sublinks here -->
82
- </ul>
83
- </li> -->
84
-
85
- <!-- Add more navigation links here -->
86
- </ul>
87
- </nav>
88
- <!-- /.sidebar-menu -->
89
- </div>
90
- <!-- /.sidebar -->
91
- </aside>
92
-
93
-
94
- <!-- AdminLTE JS -->
95
- <script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/3.1.0/js/adminlte.min.js"></script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/API_connectors.html DELETED
@@ -1,228 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>API Connectors</title>
6
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
7
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
8
- <!-- Include AdminLTE CSS -->
9
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
10
- <!-- Include DataTables CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
- <style>
13
- .header-row {
14
- display: flex;
15
- justify-content: space-between;
16
- align-items: center;
17
- }
18
-
19
- h2 {
20
- text-align: center;
21
- }
22
-
23
- .table-container {
24
- width: 100%;
25
- overflow-x: auto;
26
- }
27
-
28
- .wrapper {
29
- display: flex;
30
- flex-direction: column;
31
- height: 100vh;
32
- }
33
-
34
- .content-wrapper {
35
- flex: 1;
36
- overflow-y: auto;
37
- }
38
-
39
- .content-header {
40
- padding: 1rem;
41
- }
42
-
43
- .footer {
44
- text-align: right;
45
- padding: 10px;
46
- }
47
-
48
- th,
49
- td {
50
- white-space: nowrap;
51
- }
52
-
53
- th:nth-child(1),
54
- td:nth-child(1) {
55
- /* Sno column */
56
- width: 5%;
57
- }
58
-
59
- th:nth-child(2),
60
- td:nth-child(2) {
61
- /* API Name column */
62
- width: 20%;
63
- }
64
-
65
- th:nth-child(3),
66
- td:nth-child(3) {
67
- /* API Endpoint column */
68
- width: 40%;
69
- }
70
-
71
- th:nth-child(4),
72
- td:nth-child(4) {
73
- /* Auth/Bearer token column */
74
- width: 20%;
75
- }
76
-
77
- th:nth-child(5),
78
- td:nth-child(5) {
79
- /* View column */
80
- width: 15%;
81
- }
82
- </style>
83
- </head>
84
-
85
- <body>
86
- {% include 'sidepane.html' %}
87
-
88
- <div class="wrapper">
89
- <div class="content-wrapper">
90
- <!-- Content Header (Page header) -->
91
- <div class="content-header">
92
- <div class="container-fluid">
93
- <div class="row mb-2">
94
- <div class="col-12">
95
- <div class="header-row">
96
- <h2 class="m-0 text-center" style="flex-grow: 1;">API Connectors</h2>
97
- <button class="btn btn-primary" id="add">Add</button>
98
- </div>
99
- </div>
100
- </div>
101
- </div>
102
- </div>
103
- <!-- Main content -->
104
- <section class="content">
105
- <div class="container-fluid">
106
- <div class="row">
107
- <div class="col-12">
108
- <div class="card">
109
- <div class="card-body table-container">
110
- <table id="knowledgeTable" class="table table-bordered table-striped">
111
- <thead>
112
- <tr>
113
- <th>Sno</th>
114
- <th>API Name</th>
115
- <th>API Endpoint</th>
116
- <th>View</th>
117
- </tr>
118
- </thead>
119
- <tbody>
120
- <tr>
121
- <td>1</td>
122
- <td>Warehouse</td>
123
- <td>http://193.203.162.39:9090/nxt-wms/userWarehouse/fetchWarehouseForUserId
124
- </td>
125
- <td><button class="btn btn-primary viewButton">View</button></td>
126
- </tr>
127
- <tr>
128
- <td>2</td>
129
- <td>customer</td>
130
- <td>http://193.203.162.39:9090/nxt-wms/userCustomer/fetchCustomerForUserId
131
- </td>
132
- <td><button class="btn btn-primary viewButton">View</button></td>
133
- </tr>
134
- <tr>
135
- <td>3</td>
136
- <td>SKU</td>
137
- <td>http://193.203.162.39:9090/nxt-wms/sku/autoComplete?</td>
138
- <td><button class="btn btn-primary viewButton">View</button></td>
139
- </tr>
140
- <tr>
141
- <td>4</td>
142
- <td>ASN</td>
143
- <td>http://193.203.162.39:9090/nxt-wms/trnHeader</td>
144
- <td><button class="btn btn-primary viewButton">View</button></td>
145
- </tr>
146
- </tbody>
147
- </table>
148
- </div>
149
- </div>
150
- </div>
151
- </div>
152
- </div>
153
- </section>
154
- </div>
155
-
156
- </div>
157
-
158
- <!-- Modal -->
159
- <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel"
160
- aria-hidden="true">
161
- <div class="modal-dialog" role="document">
162
- <div class="modal-content">
163
- <div class="modal-header">
164
- <h5 class="modal-title" id="addModalLabel">Add Document</h5>
165
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
166
- <span aria-hidden="true">&times;</span>
167
- </button>
168
- </div>
169
- <div class="modal-body">
170
- <form>
171
- <div class="form-group">
172
- <label for="APIName">API Name <span class="text-danger">*</span></label>
173
- <input type="text" class="form-control" id="APIName" name="APIName" required>
174
- </div>
175
- <div class="form-group">
176
- <label for="APIEndpoint">API Endpoint <span class="text-danger">*</span></label>
177
- <input type="text" class="form-control" id="APIEndpoint" name="APIEndpoint" required>
178
- </div>
179
- <div class="form-group">
180
- <label for="Auth_Bearer">Auth/Bearer token <span class="text-danger">*</span></label>
181
- <input type="text" class="form-control" id="Auth_Bearer" name="Auth_Bearer" required>
182
- </div>
183
- <div class="form-group">
184
- <label for="Inputjson">Input parameter <span class="text-danger">*</span></label>
185
- <input type="text" class="form-control" id="Inputjson" name="Inputjson" required>
186
- </div>
187
- <div class="form-group">
188
- <label for="OutputJson">Output Json <span class="text-danger">*</span></label>
189
- <input type="text" class="form-control" id="OutputJson" name="OutputJson" required>
190
- </div>
191
- <div class="form-group">
192
- <label for="Description">Description <span class="text-danger">*</span></label>
193
- <textarea class="form-control" id="Description" name="Description" rows="3"
194
- required></textarea>
195
- </div>
196
- </form>
197
- </div>
198
- <div class="modal-footer">
199
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
200
- <button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button>
201
- </div>
202
- </div>
203
- </div>
204
- </div>
205
-
206
- <!-- Include DataTables JS and your custom script -->
207
- <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
208
- <script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script>
209
- <script>
210
- $(document).ready(function () {
211
- // Initialize DataTable
212
- $('#knowledgeTable').DataTable();
213
-
214
- // Show modal function
215
- $('#add').on('click', function () {
216
- $('#addModal').modal('show');
217
- });
218
-
219
- // Your save file function here
220
- async function save_file() {
221
- alert('Save button clicked');
222
- // Your save file logic goes here
223
- }
224
- });
225
- </script>
226
- </body>
227
-
228
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/chatbot.html DELETED
@@ -1,81 +0,0 @@
1
- # jinja2 html page with chatbot functionality using adminlte3 theme
2
- <html>
3
- <body>
4
- <form id="myform">
5
- <div class="content-wrapper">
6
- <section class="content-header">
7
- <div class="container-fluid">
8
- <div class="row mb-2">
9
- <div class="col-sm-6">
10
- <h1>Chatbot</h1>
11
- </div>
12
- <div class="col-sm-6">
13
- <ol class="breadcrumb float-sm-right">
14
- <li class="breadcrumb-item"><a href="#">Home</a></li>
15
- <li class="breadcrumb-item active">Chatbot</li>
16
- </ol>
17
- </div>
18
- </div>
19
- </div>
20
- </section>
21
-
22
- <section class="content">
23
- <div class="container-fluid">
24
- <div class="row">
25
- <div class="col-md-8 offset-md-2">
26
- <div class="card card-primary">
27
- <div class="card-header">
28
- <h3 class="card-title">Chat with our AI</h3>
29
- </div>
30
- <div class="card-body">
31
- <div id="chat-container">
32
- <div class="chat-messages">
33
- <!-- Chat messages will be dynamically added here -->
34
- </div>
35
- <div class="chat-input">
36
- <input type="text" id="user_question" placeholder="Type your message...">
37
- <button id="send-button" onclick="clickform()">Send</button>
38
- </div>
39
- </div>
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- </div>
45
- </section>
46
- </div>
47
- </form>
48
- <script>
49
- const chatContainer = document.getElementById('chat-container');
50
- const userInput = document.getElementById('user_question');
51
- const sendButton = document.getElementById('send-button');
52
-
53
- function clickform() {
54
- alert('Please enter');
55
- var formElement = document.getElementById('myForm');
56
- var user_question = document.getElementById('user_question').value;
57
- alert(user_question);
58
- //var data = new FormData(formElement);
59
- //alert(data);
60
- fetch('/chat_with_agent', {
61
- method: 'POST',
62
- //body: data,
63
- })
64
- .then(resp => resp.text()) // or, resp.json(), etc.
65
- .then(data => {
66
- //document.getElementById("responseArea").innerHTML = data;
67
- alert(data);
68
- const chatMessage = document.createElement('div');
69
- chatMessage.classList.add('chat-message');
70
- chatMessage.innerHTML = '<strong>You:</strong> ${user_question}<br><strong>AI:</strong> ${data}';
71
- chatContainer.appendChild(chatMessage);
72
-
73
- userInput.value = '';
74
- userInput.focus();
75
- })
76
- .catch(error => {
77
- console.error(error);
78
- });
79
- }
80
- </script>
81
- </body></html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/company_profile.html DELETED
@@ -1,185 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Company Profile</title>
8
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
9
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
10
- <!-- Include AdminLTE CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
12
- <!-- Include DataTables CSS -->
13
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
14
- <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
15
- <link href="https://cdn.jsdelivr.net/npm/@ttskch/select2-bootstrap4-theme@1.4.0/dist/select2-bootstrap4.min.css"
16
- rel="stylesheet" />
17
-
18
- <style>
19
- .container {
20
- margin-top: 10px;
21
- margin-left: 420px;
22
- align-items: center;
23
- max-width: 600px;
24
- padding: 10px;
25
- border: 1px solid #ccc;
26
- border-radius: 5px;
27
- position: relative;
28
- z-index: 1;
29
- }
30
-
31
- .container::before {
32
- content: '';
33
- position: absolute;
34
- top: 50%;
35
- left: 40%;
36
- background: url('..\static\img\redmindlogo3.jpg') no-repeat center center;
37
- background-size: contain;
38
- opacity: 0.1;
39
- width: 100%;
40
- height: 90%;
41
- z-index: -1;
42
- }
43
-
44
- .form-group {
45
- margin-bottom: 5px;
46
- }
47
-
48
- .form-group label {
49
- font-weight: bold;
50
- margin-bottom: 5px;
51
- display: block;
52
- }
53
-
54
- .form-group input .form-group select {
55
- width: 100%;
56
- padding: 10px;
57
- border: 1px solid #ccc;
58
- border-radius: 4px;
59
- text-align: center;
60
- }
61
-
62
- .form-group select.select2-container--bootstrap4 .select2-selection--multiple {
63
- height: auto;
64
- /* Adjust height to fit content */
65
- }
66
-
67
- .btn-primary {
68
- margin-right: 10px;
69
- color: black;
70
- font-size: 16px;
71
- font-weight: bold;
72
- }
73
-
74
- h3 {
75
- text-align: center;
76
- margin-bottom: 10px;
77
- }
78
-
79
- .btn-container {
80
- text-align: center;
81
- margin-top: 10px;
82
- color: white;
83
- }
84
-
85
- footer {
86
- position: absolute;
87
- bottom: 0;
88
- width: 100%;
89
- color: black;
90
- text-align: right;
91
- padding-right: 245px;
92
- padding-top: 0px;
93
- background-color: #f8f9fa;
94
- border: none !important;
95
- }
96
-
97
- #llm_tools {
98
- text-align: center;
99
- font-weight: bold;
100
- }
101
- </style>
102
- </head>
103
-
104
- <body>
105
- {% include 'sidepane.html' %}
106
- <div class="container mt-4">
107
- <h3>Company Profile</h3>
108
- <form id="companyProfileForm" class="needs-validation" novalidate action="/submit_company_profile"
109
- method="post">
110
- <div class="form-group">
111
- <label for="company_name">Company Name <span class="text-danger">*</span></label>
112
- <input type="text" id="company_name" name="company_name" class="form-control" required>
113
- <div class="invalid-feedback">
114
- Please enter the company name.
115
- </div>
116
- </div>
117
- <div class="form-group">
118
- <label for="company_code">Company Code <span class="text-danger">*</span></label>
119
- <input type="text" id="company_code" name="company_code" class="form-control" required>
120
- <div class="invalid-feedback">
121
- Please enter the company code.
122
- </div>
123
- </div>
124
- <div class="form-group">
125
- <label for="domain">Domain/Business <span class="text-danger">*</span></label>
126
- <input type="text" id="domain" name="domain" class="form-control" required>
127
- <div class="invalid-feedback">
128
- Please enter the domain/business.
129
- </div>
130
- </div>
131
- <div class="form-group">
132
- <label for="llm_tools">LLM Tools <span class="text-danger">*</span></label>
133
- <select type='text' id="llm_tools" name="llm_tools" class="form-control" multiple required>
134
- <option value="Database">Database</option>
135
- <option value="Static Documents">Static Documents</option>
136
- <option value="API">API</option>
137
- </select>
138
- <div class="invalid-feedback">
139
- Please select at least one LLM tool.
140
- </div>
141
- </div>
142
- <div class="btn-container">
143
- <button type="submit" class="btn btn-primary">Save</button>
144
- <button type="reset" class="btn btn-primary">Clear</button>
145
- </div>
146
- </form>
147
- </div>
148
-
149
- <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
150
- <script>
151
- $(document).ready(function () {
152
- // Initialize Select2 for multi-select dropdown
153
- $('#llm_tools').select2({
154
- theme: 'bootstrap4',
155
- placeholder: 'Select',
156
- allowClear: true
157
- });
158
-
159
- $('#companyProfileForm').on('submit', function (event) {
160
- event.preventDefault(); // Prevent default form submission
161
-
162
- // Gather form data
163
- var formData = $(this).serialize();
164
-
165
- $.ajax({
166
- type: "POST",
167
- url: "/submit_company_profile",
168
- data: formData,
169
- success: function (response) {
170
- alert(response.message); // Show success message
171
- setTimeout(function () {
172
- window.location.href = '/company_profile'; // Redirect to the desired page after a delay
173
- }, 2000); // Delay for 2 seconds (2000 milliseconds)
174
- },
175
- error: function (xhr) {
176
- alert("An error occurred: " + xhr.responseJSON.detail); // Show error message
177
- }
178
- });
179
- });
180
- });
181
- </script>
182
-
183
- </body>
184
-
185
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/dashboard.html DELETED
@@ -1,156 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Dashboard</title>
6
- <!-- AdminLTE CSS -->
7
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/3.1.0/css/adminlte.min.css">
8
- </head>
9
-
10
- <body class="hold-transition sidebar-mini">
11
- <div class="wrapper">
12
- <!-- Main Sidebar -->
13
- <aside class="main-sidebar sidebar-dark-primary elevation-4">
14
- <!-- Sidebar -->
15
- <div class="sidebar">
16
- <!-- Sidebar Menu -->
17
- <nav class="mt-2">
18
- <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
19
- <!-- Navigation Links -->
20
- <li class="nav-item">
21
- <a href="#" class="nav-link">
22
- <i class="nav-icon fas fa-home"></i>
23
- <p>Dashboard</p>
24
- </a>
25
- </li>
26
- <li class="nav-item">
27
- <a href="{{ url_for('company_profile') }}" class="nav-link">
28
- <i class="nav-icon fas fa-cogs"></i>
29
- <p>Company Profile</p>
30
- </a>
31
- </li>
32
- <li class="nav-item">
33
- <a href="{{ url_for('knowledgebase') }}" class="nav-link">
34
- <i class="nav-icon fas fa-cogs"></i>
35
- <p>KnowledgeBase</p>
36
- </a>
37
- </li>
38
- <li class="nav-item">
39
- <a href="{{ url_for('data_connectors') }}" class="nav-link">
40
- <i class="nav-icon fas fa-home"></i>
41
- <p>Data Connectors</p>
42
- </a>
43
- </li>
44
- <li class="nav-item">
45
- <a href="{{ url_for('API_connectors') }}" class="nav-link">
46
- <i class="nav-icon fas fa-users"></i>
47
- <p>API Connectors</p>
48
- </a>
49
- </li>
50
- <li class="nav-item">
51
- <a href="{{url_for('prompt_template')}}" class="nav-link">
52
- <i class="nav-icon fas fa-cogs"></i>
53
- <p>Prompt Templates</p>
54
- </a>
55
- </li>
56
- <!-- <li class="nav-item">
57
- <a href="#" class="nav-link">
58
- <i class="nav-icon fas fa-cogs"></i>
59
- <p>LLM Settings</p>
60
- </a>
61
-
62
- </li>-->
63
- <li class="nav-item">
64
- <a href="{{ url_for('chatbot') }}" class="nav-link">
65
- <i class="nav-icon fas fa-cogs"></i>
66
- <p>Chat</p>
67
- </a>
68
- </li>
69
-
70
- <!-- Add more navigation links here -->
71
- </ul>
72
- </nav>
73
- <!-- /.sidebar-menu -->
74
- </div>
75
- <!-- /.sidebar -->
76
- </aside>
77
-
78
- <!-- Content Wrapper -->
79
- <div class="content-wrapper">
80
- <!-- Main content -->
81
- <section class="content">
82
- <!-- Project Information -->
83
- <div class="container-fluid">
84
- <h3 style="text-align: center; margin-bottom:40px;">RedMindGPT</h>
85
- </div>
86
- </section>
87
- <section class="content">
88
- <div class="container-fluid">
89
-
90
- <div class="row">
91
- <div class="col-lg-4 col-6">
92
-
93
- <div class="small-box bg-info">
94
- <div class="inner">
95
- <h3>4 </h3>
96
- <h4> KnowledgeBase</h4>
97
- </div>
98
- <div class="icon">
99
- <i class="ion ion-bag"></i>
100
- </div>
101
- </div>
102
- </div>
103
-
104
- <div class="col-lg-4 col-6">
105
-
106
- <div class="small-box bg-success">
107
- <div class="inner">
108
- <h3>1</h3>
109
- <h4>Data connectors</h4>
110
- </div>
111
- <div class="icon">
112
- <i class="ion ion-stats-bars"></i>
113
- </div>
114
-
115
- </div>
116
- </div>
117
-
118
- <div class="col-lg-4 col-6">
119
-
120
- <div class="small-box bg-warning">
121
- <div class="inner">
122
- <h3>4 </h3>
123
- <h4>API Connectors</h4>
124
- </div>
125
- <div class="icon">
126
- <i class="ion ion-person-add"></i>
127
- </div>
128
-
129
- </div>
130
- </div>
131
-
132
- <div class="col-lg-4 col-6">
133
-
134
- <div class="small-box bg-warning">
135
- <div class="inner">
136
- <h3>5 </h3>
137
- <h4>Prompt_Templates</h4>
138
- </div>
139
- <div class="icon">
140
- <i class="ion ion-person-add"></i>
141
- </div>
142
-
143
- </div>
144
- </div>
145
- <!-- /.content -->
146
- </div>
147
- <!-- /.content-wrapper -->
148
- </div>
149
- <!-- ./wrapper -->
150
-
151
- <!-- AdminLTE JS -->
152
- <script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/3.1.0/js/adminlte.min.js"></script>
153
-
154
- </body>
155
-
156
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/data_connectors.html DELETED
@@ -1,368 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Data Connectors</title>
8
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
9
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
10
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
-
13
- <style>
14
- html,
15
- body {
16
- height: 90%;
17
- margin: 0;
18
- display: flex;
19
- flex-direction: column;
20
- }
21
-
22
- body {
23
- display: flex;
24
- flex-direction: column;
25
- min-height: 90%;
26
- }
27
-
28
- .main-content {
29
- flex: 1;
30
- display: flex;
31
- flex-direction: column;
32
- align-items: center;
33
- justify-content: flex-start;
34
- padding: 20px;
35
- }
36
-
37
- .container {
38
- margin-top: 50px;
39
- margin-left: 420px;
40
- max-width: 600px;
41
- padding: 10px;
42
- border: 1px solid #ccc;
43
- border-radius: 5px;
44
- background-color: #fff;
45
- position: relative;
46
- z-index: 1;
47
- }
48
-
49
- .form-group {
50
- margin-bottom: 20px;
51
- }
52
-
53
- .form-group label {
54
- font-weight: bold;
55
- margin-top: 5px;
56
- margin-bottom: 5px;
57
- display: block;
58
- }
59
-
60
- .form-group input,
61
- .form-group select,
62
- .form-group textarea {
63
- width: 100%;
64
- height: auto;
65
- padding: 10px;
66
- border: 1px solid #ccc;
67
- border-radius: 4px;
68
- }
69
-
70
- .btn-primary {
71
- margin-right: 10px;
72
- color: black;
73
- font-size: 16px;
74
- font-weight: bold;
75
- }
76
-
77
- h2 {
78
- text-align: center;
79
- margin-bottom: 20px;
80
- }
81
-
82
- .btn-container {
83
- text-align: center;
84
- margin-top: 30px;
85
- margin-bottom: 0px;
86
- color: white;
87
- }
88
-
89
- #selectedTables,
90
- #labelselected {
91
- display: none;
92
- }
93
-
94
- #saveBtn1 {
95
- display: none;
96
- margin: 0 auto;
97
- }
98
-
99
- footer {
100
- position: relative;
101
- margin-top: auto;
102
- width: 100%;
103
- color: black;
104
- text-align: right;
105
- padding-right: 245px;
106
- padding-top: 20px;
107
- background-color: #f8f9fa;
108
- border: none !important;
109
- }
110
- </style>
111
- </head>
112
-
113
- <body>
114
- {% include 'sidepane.html' %}
115
- <div class="main-content">
116
- <div id="message-container"></div>
117
- <div class="container mt-2">
118
- <h2>Data Connectors</h2>
119
- <div class="form-group">
120
- <label for="company">Company Name <span class="text-danger">*</span></label>
121
- <select type="text" id="company" name="company" class="form-control" required>
122
- <option value="" selected>Select</option>
123
- </select>
124
- </div>
125
- <form id="databaseconnectorForm" class="needs-validation" novalidate action="/save_data_connectors"
126
- method="post" style="display:none;">
127
- <div class="form-group">
128
- <!-- <label for="company_id">company_id</label>--->
129
- <input type="hidden" id="company_id" name="company_id" class="form-control" required>
130
- </div>
131
- <div class="row">
132
- <div class="col-md-6">
133
- <div class="form-group">
134
- <label for="database">Database Type<span class="text-danger">*</span></label>
135
- <select type="text" id="database" name="database" class="form-control" required>
136
- <option value="" selected>Select</option>
137
- <option value="Postgress">Postgres</option>
138
- <option value="mysql">Mysql</option>
139
- </select>
140
- </div>
141
- </div>
142
- <div class="col-md-6">
143
- <div class="form-group">
144
- <label for="server">Server IP <span class="text-danger">*</span></label>
145
- <input type="text" id="server" name="server" class="form-control" required>
146
- </div>
147
- </div>
148
- </div>
149
- <div class="row">
150
- <div class="col-md-6">
151
- <div class="form-group">
152
- <label for="port">Port <span class="text-danger">*</span></label>
153
- <input type="text" id="port" name="port" class="form-control" required>
154
- </div>
155
- </div>
156
- <div class="col-md-6">
157
- <div class="form-group">
158
- <label for="databaseName">Database Name <span class="text-danger">*</span></label>
159
- <input type="text" id="databaseName" name="databaseName" class="form-control" required>
160
- </div>
161
- </div>
162
- </div>
163
- <div class="row">
164
- <div class="col-md-6">
165
- <div class="form-group">
166
- <label for="username">UserName <span class="text-danger">*</span></label>
167
- <input type="text" id="username" name="username" class="form-control" required>
168
- </div>
169
- </div>
170
- <div class="col-md-6">
171
- <div class="form-group">
172
- <label for="password">Password <span class="text-danger">*</span></label>
173
- <input type="password" id="password" name="password" class="form-control" required>
174
- </div>
175
- </div>
176
- </div>
177
- <div class="btn-container">
178
- <button type="button" id="connectBtn" class="btn btn-primary">Connect</button>
179
- <button type="reset" class="btn btn-primary">Clear</button>
180
- </div>
181
- <div id="schema-table-section" style="display: none;">
182
- <div class="form-group">
183
- <div class="row">
184
- <div class="col">
185
- <label for="schemas">Available Schemas <span class="text-danger">*</span></label>
186
- <select type="text" id="schemas" name="schemas" class="form-control" required>
187
- <option value="" selected>Select</option>
188
- <option value="schema1">Lookup</option>
189
- <option value="schema2">Public</option>
190
- <option value="schema3" selected>tenant_default</option>
191
- </select>
192
- </div>
193
- <div class="col">
194
- <label for="tables">Available Tables <span class="text-danger">*</span></label>
195
- <select type="text" id="tables" name="tables" class="form-control" multiple required>
196
- <option disabled>Select</option>
197
- <option value="customer_master">customer_master</option>
198
- <option value="efs_company_master">efs_company_master</option>
199
- <option value="efs_group_company_master">efs_group_company_master</option>
200
- <option value="efs_region_master">efs_region_master</option>
201
- <option value="party_address_detail">party_address_detail</option>
202
- <option value="wms_warehouse_master">wms_warehouse_master</option>
203
- </select>
204
- </div>
205
- </div>
206
- </div>
207
-
208
- <div class="btn-container">
209
- <button type="button" id="saveBtn" class="btn btn-primary">Save</button>
210
- </div>
211
- <div class="form-group">
212
- <label for="selectedTables" id="labelselected">Selected Tables:</label>
213
- <textarea type="text" id="selectedTables" name="selectedTables" class="form-control" rows="5"
214
- readonly style="display:none;"></textarea>
215
- </div>
216
- <div class="btn-container">
217
- <button type="submit" id="saveBtn1" class="btn btn-primary">Save Tables</button>
218
- </div>
219
- </div>
220
- </form>
221
- </div>
222
- </div>
223
- <footer>
224
- <p></p>
225
- </footer>
226
- <script>
227
-
228
- document.addEventListener('DOMContentLoaded', function () {
229
- fetchCompanies();
230
-
231
- const companySelect = document.getElementById('company');
232
- const databaseconnectorForm = document.getElementById('databaseconnectorForm');
233
-
234
- companySelect.addEventListener('change', async function () {
235
- const selectedCompanyName = companySelect.options[companySelect.selectedIndex].text;
236
- console.log(`Selected Company Name: ${selectedCompanyName}`);
237
-
238
- if (selectedCompanyName !== "Select") {
239
- try {
240
- const response = await fetch(`/api/company_id?company_name=${encodeURIComponent(selectedCompanyName)}`);
241
- if (!response.ok) {
242
- throw new Error('Network response was not ok');
243
- }
244
- const data = await response.json();
245
- console.log(`Company ID: ${data.company_id}`);
246
- const companyId = data.company_id;
247
- document.getElementById('company_id').value = companyId;
248
-
249
- if (companyId) {
250
- try {
251
- const connectorsResponse = await fetch(`/api/check_data_connectors?company_id=${companyId}&company_name=${selectedCompanyName}`);
252
- if (!connectorsResponse.ok) {
253
- throw new Error('data connector Network response was not ok');
254
- }
255
- const connectorsData = await connectorsResponse.json();
256
- //setMultiSelectValues(document.getElementById('database'), connectorsData.databasetype); // Ensure this is an array
257
- //setMultiSelectValues(document.getElementById('databaseName'), connectorsData.database_name); // Ensure this is an array
258
- document.getElementById('database').value = connectorsData.databasetype;
259
- document.getElementById('server').value = connectorsData.serverip;
260
- document.getElementById('port').value = connectorsData.port;
261
- document.getElementById('databaseName').value = connectorsData.database_name;
262
- document.getElementById('username').value = connectorsData.username;
263
- document.getElementById('password').value = connectorsData.password;
264
- document.getElementById('tables').value = connectorsData.dbtablename;
265
- databaseconnectorForm.style.display = 'block';
266
-
267
- } catch (error) {
268
- document.getElementById('database').value = " ";
269
- document.getElementById('server').value = " ";
270
- document.getElementById('port').value = " ";
271
- document.getElementById('databaseName').value = " ";
272
- document.getElementById('username').value = " ";
273
- document.getElementById('password').value = " ";
274
- document.getElementById('tables').value = " ";
275
- console.error('Error fetching data from data connectors:', error);
276
- ("Company name does not exist. Please fill in the details.");
277
-
278
- // Optionally, you can insert a message into the DOM
279
- const messageContainer = document.getElementById('message-container');
280
- if (messageContainer) {
281
- messageContainer.innerHTML = "<div class='alert alert-danger'>Database details does not exist for this Company name.. Please fill in the details.</div>";
282
- }
283
-
284
- databaseconnectorForm.style.display = 'block';
285
- }
286
- } else {
287
- console.log(`Company ID does not exist, you can create and save data: ${data.company_id}`);
288
- databaseconnectorForm.style.display = 'none';
289
- }
290
-
291
- } catch (error) {
292
-
293
- console.error('Error fetching company ID or data connectors:', error);
294
- databaseconnectorForm.style.display = 'none';
295
- }
296
- } else {
297
- databaseconnectorForm.style.display = 'none';
298
- }
299
- });
300
-
301
- document.getElementById("connectBtn").addEventListener("click", function (event) {
302
- var database = document.getElementById("database").value;
303
- var server = document.getElementById("server").value;
304
- var port = document.getElementById("port").value;
305
- var databaseName = document.getElementById("databaseName").value;
306
- var username = document.getElementById("username").value;
307
- var password = document.getElementById("password").value;
308
-
309
- if (!database || !server || !port || !databaseName || !username || !password) {
310
- alert("Please fill in all required fields.");
311
- return;
312
- }
313
-
314
- document.getElementById("schema-table-section").style.display = "block";
315
- });
316
-
317
- document.getElementById("saveBtn").addEventListener("click", function (event) {
318
- var tables = Array.from(document.getElementById("tables").selectedOptions).map(option => option.value);
319
- if (tables.length === 0) {
320
- alert("Please select at least one table.");
321
- return;
322
- }
323
-
324
- var selectedTables = document.getElementById("selectedTables");
325
- selectedTables.value = tables.join(", ");
326
- selectedTables.style.display = "block";
327
- document.getElementById("labelselected").style.display = "block";
328
- document.getElementById("saveBtn1").style.display = "block";
329
- });
330
- });
331
-
332
- async function fetchCompanies() {
333
- try {
334
- const response = await fetch('/api/companies');
335
- if (!response.ok) {
336
- throw new Error('Network response was not ok');
337
- }
338
- const data = await response.json();
339
- displayCompanies(data.companies);
340
- } catch (error) {
341
- console.error('Error fetching companies:', error);
342
- }
343
- }
344
-
345
- function displayCompanies(companies) {
346
- const companySelect = document.getElementById('company');
347
- companySelect.innerHTML = '<option value="" selected>Select</option>'; // Reset the dropdown
348
- companies.forEach(company => {
349
- const option = document.createElement('option');
350
- option.value = company.name;
351
- option.textContent = company.name;
352
- companySelect.appendChild(option);
353
- });
354
- }
355
-
356
- function setMultiSelectValues(selectElement, values) {
357
- // Ensure values is an array
358
- if (!Array.isArray(values)) {
359
- values = [values];
360
- }
361
- Array.from(selectElement.options).forEach(option => {
362
- option.selected = values.includes(option.value);
363
- });
364
- }
365
- </script>
366
- </body>
367
-
368
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/footer.html DELETED
@@ -1,26 +0,0 @@
1
- <!-- footer.html -->
2
-
3
- <!--
4
- This is the HTML code for the footer section of a web page.
5
- It displays the version number and copyright information.
6
-
7
- HTML Structure:
8
- - The footer element has a class of "main-footer".
9
- - Inside the footer, there is a div element with classes "float-right" and "d-none d-sm-block".
10
- - Inside the div, there is a bold tag (<b>) displaying the version number.
11
- - After the div, there is a strong tag (<strong>) displaying the copyright information.
12
- - The copyright information includes the year and a link to the company's website.
13
-
14
- Example Usage:
15
- <footer class="main-footer">
16
- <div class="float-right d-none d-sm-block">
17
- <b>Version</b> 3.0.5
18
- </div>
19
- <strong>&copy; 2023 <a href="https://yourcompany.com">Your Company</a>.</strong> All rights reserved.
20
- </footer>
21
- -->
22
- <footer class="main-footer" style="position: absolute; bottom: 0; width: 100%; color: black; text-align: right; padding-right:245px ;">
23
- <div class="container-fluid">
24
- <a href="https://redmindtechnologies.com" target="_blank" style="color: black; text-decoration: none;">Visit Redmind Technologies at https://redmindtechnologies.com</a>
25
- </div>
26
- </footer>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/index.html DELETED
@@ -1,103 +0,0 @@
1
- <!--
2
- This is the login page template for the RedMindGPT application.
3
- It contains a login form where users can enter their username and password to sign in.
4
- The form includes validation to ensure that both fields are filled out before submission.
5
- The page also includes styling using CSS and utilizes the AdminLTE and Font Awesome libraries for additional design elements.
6
- -->
7
-
8
- <!DOCTYPE html>
9
- <html lang="en">
10
- <head>
11
- <meta charset="UTF-8">
12
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
13
- <style>
14
- /* CSS styles for the login page */
15
- .login-box-msg {
16
- color: grey;
17
- font-size: larger;
18
- font-weight: bold;
19
- }
20
-
21
- .remember-me {
22
- text-align: center;
23
- }
24
- </style>
25
- <title>RedMindGPT</title>
26
- <!-- AdminLTE CSS -->
27
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
28
- <!-- Font Awesome -->
29
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
30
- </head>
31
- <body class="hold-transition login-page" style="background-image: url('static/img/AI.jpg'); background-size: cover;">
32
- <div class="login-box">
33
- <div class="card">
34
- <!-- Logo -->
35
- <div style="align-items: center;">
36
- <a href="#" style="color: blue;
37
- font-size: 30px;
38
- font-weight: bold;
39
- margin-left: 80px;
40
- margin-top: 20px;
41
- "><b>RedMindGPT</b></a>
42
- </div>
43
- <form action='/validate-user' name='loginForm' method="post" onsubmit="return validateForm()">
44
- <div class="card-body login-card-body">
45
- <p class="login-box-msg">Sign in</p>
46
- <div class="input-group mb-3">
47
- <input type="text" class="form-control" placeholder="Username" name="username" required>
48
- <div class="input-group-append">
49
- <div class="input-group-text">
50
- <span class="fas fa-user"></span>
51
- </div>
52
- </div>
53
- </div>
54
- <div class="input-group mb-3">
55
- <input type="password" class="form-control" placeholder="Password" name="password" required>
56
- <div class="input-group-append">
57
- <div class="input-group-text">
58
- <span class="fas fa-lock"></span>
59
- </div>
60
- </div>
61
- </div>
62
- <div class="row" style="align-content: center;">
63
- <div class="col-8">
64
- <div class="icheck-primary">
65
- <input type="checkbox" id="remember">
66
- <label for="remember">
67
- Remember Me
68
- </label>
69
- </div>
70
- </div>
71
- </div>
72
- <div class="row" style="align-content: center;">
73
- <div class="col-4">
74
- <button type="submit" class="btn btn-primary btn-block">Sign In</button>
75
- </div>
76
- <div class="col-4">
77
- <button type="reset" class="btn btn-secondary btn-block">Clear</button>
78
- </div>
79
- </div>
80
- </div>
81
- </form>
82
- </div>
83
- </div>
84
- <!-- jQuery -->
85
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
86
- <!-- Bootstrap 4 -->
87
- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script>
88
- <!-- AdminLTE App -->
89
- <script src="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/js/adminlte.min.js"></script>
90
- <script>
91
- // JavaScript function to validate the login form
92
- function validateForm() {
93
- //alert("Validating form");
94
- var username = document.forms["loginForm"]["username"].value;
95
- var password = document.forms["loginForm"]["password"].value;
96
- if (username == "" || password == "") {
97
- alert("Username and Password must be filled out");
98
- return false;
99
- }
100
- }
101
- </script>
102
- </body>
103
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/knowledgebase.html DELETED
@@ -1,360 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>Knowledge Base</title>
6
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
7
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
8
- <!-- Include AdminLTE CSS -->
9
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
10
- <!-- Include DataTables CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
- <!-- Include AdminLTE JS -->
13
- <script src="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/js/adminlte.min.js"></script>
14
- <!-- Include DataTables JS -->
15
- <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
16
- <script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script>
17
- <style>
18
- body {
19
- background-color: transparent !important;
20
- }
21
-
22
- .content-wrapper {
23
- background-color: transparent !important;
24
- text-align: center;
25
- }
26
-
27
- .wrapper {
28
- background-color: transparent !important;
29
- }
30
-
31
- .modal-content {
32
- background-color: #fff;
33
- }
34
-
35
- h1 {
36
- text-align: center;
37
- margin-bottom: 30px;
38
- }
39
-
40
- /* Adjust table width to full container width */
41
- .card-body {
42
- padding: 0;
43
- }
44
-
45
- .table {
46
- width: 100%;
47
- }
48
-
49
- .text-wrap {
50
- white-space: normal !important;
51
- word-break: break-word;
52
- }
53
-
54
- .center-align {
55
- padding-top: 20px;
56
- display: flex;
57
- justify-content: center;
58
- align-items: center;
59
- width: 100%;
60
- }
61
-
62
- .reduced-width {
63
- width: 50%;
64
- /* Adjust the percentage as needed */
65
- }
66
- </style>
67
- </head>
68
-
69
- <body>
70
- {% include 'sidepane.html' %}
71
-
72
-
73
- <div class="wrapper" style="position: relative; top: 0;">
74
- <div class="content-wrapper">
75
- <div class="content-header">
76
- <div class="container-fluid">
77
- <div class="container mt-2">
78
- <h1 class="m-0 text-center" style="flex-grow: 1;">Knowledge Base</h1>
79
- <div class="form-group center-align">
80
- <label for="company" class="mr-2">Company Name <span class="text-danger">*</span></label>
81
- <select type="text" id="company" name="company" class="form-control reduced-width" required>
82
- <option value="" selected>Select</option>
83
- </select>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- <section class="content" id="contentSection" style="display: none;">
89
- <div class="container-fluid">
90
- <div class="form-group">
91
- <!-- <label for="company_id">company_id</label>--->
92
- <input type="hidden" id="company_id" name="company_id" class="form-control" required>
93
- </div>
94
- <div class="row">
95
- <div class="col-12 d-flex justify-content-end mb-3">
96
- <button class="btn btn-primary" id="add">Add</button>
97
- </div>
98
- <div class="row mb-2">
99
- <div class="col-12">
100
- <div class="col-12">
101
- <div class="card">
102
- <div class="card-body">
103
- <div class="table-responsive">
104
- <div id="message-container">
105
- <table id="knowledgeTable" class="table table-bordered table-striped">
106
- <thead>
107
- <tr>
108
- <th>Sno</th>
109
- <th>Document Name</th>
110
- <th>Document Description</th>
111
- <th>Document Version</th>
112
- <th>VectorDB Flag</th>
113
- <th>View</th>
114
- </tr>
115
- </thead>
116
- <tbody>
117
- <tr>
118
- <td>1</td>
119
- <td>NewAge eWMS BusinessRequirementsDocument_V1.9 - Inbound
120
- </td>
121
- <td>GRN Inbound</td>
122
- <td>1.9</td>
123
- <td>Yes</td>
124
- <td>
125
- <button class="btn btn-primary viewButton">View</button>
126
- </td>
127
- </tr>
128
- <tr>
129
- <td>2</td>
130
- <td>NewAge eWMS BusinessRequirementsDocument_V2.3 - Inbound
131
- </td>
132
- <td>GRN Inbound</td>
133
- <td>2.3</td>
134
- <td>No</td>
135
- <td>
136
- <button class="btn btn-primary viewButton">View</button>
137
- </td>
138
- </tr>
139
- <tr>
140
- <td>3</td>
141
- <td>NewAge eWMS BusinessRequirementsDocument_V1.9 - Outbound
142
- </td>
143
- <td>GRN Outbound</td>
144
- <td>1.9</td>
145
- <td>Yes</td>
146
- <td>
147
- <button class="btn btn-primary viewButton">View</button>
148
- </td>
149
- </tr>
150
- <tr>
151
- <td>4</td>
152
- <td class="text-wrap">NewAge eWMS
153
- BusinessRequirementsDocument_V2.2 - Outbound</td>
154
- <td>ASN Outbound</td>
155
- <td>2.2</td>
156
- <td>No</td>
157
- <td>
158
- <button class="btn btn-primary viewButton">View</button>
159
- </td>
160
- </tr>
161
- </tbody>
162
- </table>
163
- </div>
164
- </div>
165
- </div>
166
- </div>
167
- </div>
168
- </div>
169
- </div>
170
- </section>
171
- </div>
172
-
173
- <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel"
174
- aria-hidden="true">
175
- <div class="modal-dialog" role="document">
176
- <div class="modal-content">
177
- <div class="modal-header">
178
- <h5 class="modal-title" id="addModalLabel">Add Document</h5>
179
- <button type="button" class="close" data-dismiss="modal" aria-label="Close">
180
- <span aria-hidden="true">&times;</span>
181
- </button>
182
- </div>
183
- <div class="modal-body">
184
- <div class="form-group">
185
- <!-- <label for="company_id">company_id</label>--->
186
- <input type="hidden" id="company_id" name="company_id" class="form-control" required>
187
- </div>
188
- <form id="documentForm">
189
- <div class="form-group">
190
- <label for="uploadFile">Upload File<span class="text-danger">*</span></label>
191
- <input type="file" class="form-control-file" id="uploadFile" name="uploadFile" required accept=".pdf,.doc,.docx">
192
- <small class="form-text text-muted">Accepted formats: .pdf, .doc, .docx</small>
193
- </div>
194
- <div class="form-group">
195
- <label for="documentName">Document Name<span class="text-danger">*</span></label>
196
- <input type="text" class="form-control" id="documentName" name="documentName" required>
197
- </div>
198
- <div class="form-group">
199
- <label for="documentDescription">Document Description<span class="text-danger">*</span></label>
200
- <textarea class="form-control" id="documentDescription" name="documentDescription"
201
- rows="3" required></textarea>
202
- </div>
203
- <div class="form-group">
204
- <label for="department">Department<span class="text-danger">*</span></label>
205
- <input type="text" class="form-control" id="department" name="department" required>
206
- </div>
207
- <div class="form-group">
208
- <label for="version">Version<span class="text-danger">*</span></label>
209
- <input type="text" class="form-control" id="version" name="version" required>
210
- </div>
211
- <div class="form-group">
212
- <label for="lastUpdated">Last Updated<span class="text-danger">*</span></label>
213
- <input type="text" class="form-control" id="lastUpdated" name="lastUpdated" required>
214
- </div>
215
- </form>
216
- </div>
217
- <div class="modal-footer">
218
- <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
219
- <button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button>
220
- </div>
221
- </div>
222
- </div>
223
- </div>
224
- </div>
225
- <!-- JavaScript to handle modal display -->
226
- <script>
227
- document.addEventListener("DOMContentLoaded", function () {
228
- now = new Date().toISOString().substr(0, 10);
229
- document.getElementById('lastUpdated').value = now
230
- // clearFormFields();
231
- });
232
- document.addEventListener('DOMContentLoaded', function () {
233
-
234
- fetchCompanies();
235
-
236
- const companySelect = document.getElementById('company');
237
- const documentForm = document.getElementById('documentForm');
238
-
239
- companySelect.addEventListener('change', async function () {
240
- const selectedCompanyName = companySelect.options[companySelect.selectedIndex].text;
241
- console.log(`Selected Company Name: ${selectedCompanyName}`);
242
-
243
- if (selectedCompanyName !== "Select") {
244
-
245
- try {
246
- const response = await fetch(`/api/company_id?company_name=${encodeURIComponent(selectedCompanyName)}`);
247
- if (!response.ok) {
248
- contentSection.style.display='none';
249
- const messageContainer = document.getElementById('message-container');
250
- if (messageContainer) {
251
- messageContainer.innerHTML = "<div class='alert alert-danger'>Document details do not exist for this company. Please fill in the details.</div>";
252
- }
253
- throw new Error('Network response was not ok');
254
- }
255
- const data = await response.json();
256
- console.log(`Company ID: ${data.company_id}`);
257
- const companyId = data.company_id;
258
- document.getElementById('company_id').value = companyId;
259
-
260
- if (companyId) {
261
- contentSection.style.display = 'block';
262
- }
263
-
264
-
265
- } catch (error) {
266
- console.error('Error fetching company ID or data documents:', error);
267
- documentForm.style.display = 'none';
268
- }
269
- } else {
270
- //clearFormFields();
271
- documentForm.style.display = 'block';
272
- }
273
- });
274
- });
275
- function clearFormFields() {
276
- document.getElementById('uploadFile').value = "";
277
- document.getElementById('documentName').value = "";
278
- document.getElementById('documentDescription').value = "";
279
- document.getElementById('department').value = "";
280
- document.getElementById('version').value = "";
281
- //document.getElementById('lastUpdated').value = "";
282
- }
283
-
284
-
285
- $(document).ready(function () {
286
- // Show modal function
287
- $('#add').on('click', function () {
288
- clearFormFields();
289
- $('#addModal').modal('show');
290
- });
291
- $('.modal-footer .btn-secondary').on('click', function () {
292
- $('#addModal').modal('hide');
293
- });
294
- // Your save file function here
295
- // async function save_file() {
296
- // alert('Save button clicked');
297
- // // Your save file logic goes here
298
- // }
299
- });
300
- function save_file() {
301
- const uploadFile = document.getElementById("uploadFile").files[0];
302
- const documentName = document.getElementById("documentName").value;
303
- const documentDescription = document.getElementById("documentDescription").value;
304
- const department = document.getElementById("department").value;
305
- const version = document.getElementById("version").value;
306
- const lastUpdated = document.getElementById("lastUpdated").value;
307
- const company_id = document.getElementById("company_id").value;
308
-
309
- const formData = new FormData();
310
- formData.append("uploadFile", uploadFile);
311
- formData.append("documentName", documentName);
312
- formData.append("documentDescription", documentDescription);
313
- formData.append("department", department);
314
- formData.append("version", version);
315
- formData.append("lastUpdated", lastUpdated);
316
- formData.append("company_id", company_id);
317
-
318
- fetch('/upload_document', {
319
- method: 'POST',
320
- body: formData
321
- })
322
- .then(response => {
323
- if (!response.ok) {
324
- throw new Error('Network response was not ok');
325
- }
326
- return response.text();
327
- })
328
- .then(data => {
329
- alert('Document saved successfully');
330
- // $('#addModal').modal('hide');
331
- })
332
- .catch(error => console.error('Error:', error));
333
- }
334
- async function fetchCompanies() {
335
- try {
336
- const response = await fetch('/api/companies');
337
- if (!response.ok) {
338
- throw new Error('Network response was not ok');
339
- }
340
- const data = await response.json();
341
- displayCompanies(data.companies);
342
- } catch (error) {
343
- console.error('Error fetching companies:', error);
344
- }
345
- }
346
-
347
- function displayCompanies(companies) {
348
- const companySelect = document.getElementById('company');
349
- companySelect.innerHTML = '<option value="" selected>Select</option>'; // Reset the dropdown
350
- companies.forEach(company => {
351
- const option = document.createElement('option');
352
- option.value = company.name;
353
- option.textContent = company.name;
354
- companySelect.appendChild(option);
355
- });
356
- }
357
- </script>
358
- </body>
359
-
360
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/prompt_template.html DELETED
@@ -1,224 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>Prompt Template</title>
6
- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
7
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
8
- <!-- Include AdminLTE CSS -->
9
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.min.css">
10
- <!-- Include DataTables CSS -->
11
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/dataTables.bootstrap4.min.css">
12
- <style>
13
- .header-row {
14
- display: flex;
15
- justify-content: space-between;
16
- align-items: center;
17
- }
18
-
19
- h2 {
20
- text-align: center;
21
- }
22
-
23
- .table-container {
24
- width: 100%;
25
- overflow-x: auto;
26
- }
27
-
28
- .wrapper {
29
- display: flex;
30
- flex-direction: column;
31
- height: 100vh;
32
- }
33
-
34
- .content-wrapper {
35
- flex: 1;
36
- overflow-y: auto;
37
- }
38
-
39
- .content-header {
40
- padding: 1rem;
41
- }
42
-
43
- .footer {
44
- text-align: right;
45
- padding: 10px;
46
- }
47
-
48
- th,
49
- td {
50
- white-space: nowrap;
51
- }
52
-
53
- th:nth-child(1),
54
- td:nth-child(1) {
55
- /* Sno column */
56
- width: 3%;
57
- }
58
-
59
- th:nth-child(2),
60
- td:nth-child(2) {
61
- /* API Name column */
62
- width: 20%;
63
- }
64
-
65
- th:nth-child(3),
66
- td:nth-child(3) {
67
- /* API Endpoint column */
68
- width: 40%;
69
- }
70
-
71
- th:nth-child(4),
72
- td:nth-child(4) {
73
- /* Auth/Bearer token column */
74
- width: 20%;
75
- }
76
-
77
- th:nth-child(5),
78
- td:nth-child(5) {
79
- /* View column */
80
- width: 15%;
81
- }
82
- </style>
83
- </head>
84
-
85
- <body>
86
- {% include 'sidepane.html' %}
87
-
88
- <div class="wrapper">
89
- <div class="content-wrapper">
90
- <!-- Content Header (Page header) -->
91
- <div class="content-header">
92
- <div class="container-fluid">
93
- <div class="row mb-2">
94
- <div class="col-12">
95
- <div class="header-row">
96
- <h2 class="m-0 text-center" style="flex-grow: 1;">Prompt Template</h2>
97
- <button class="btn btn-primary" id="add">Add</button>
98
- </div>
99
- </div>
100
- </div>
101
- </div>
102
- </div>
103
- <!-- Main content -->
104
- <section class="content">
105
- <div class="container-fluid">
106
- <div class="row">
107
- <div class="col-12">
108
- <div class="card">
109
- <div class="card-body table-container">
110
- <table id="knowledgeTable" class="table table-bordered table-striped">
111
- <thead>
112
- <tr>
113
- <th>Sno</th>
114
- <th>Scenario</th>
115
- <th>Sample Prompt</th>
116
- <th>Comments</th>
117
- <th>View</th>
118
- </tr>
119
- </thead>
120
- <tbody>
121
- <tr>
122
- <td>1</td>
123
- <td>Creating new database in mysql</td>
124
- <td>Need DB step for mysql with DB name = wwp, table name = customer_master with column name = name as datatype = string. (sample prompt).</td>
125
- <td>It didn't create database instead its showed how to make connection to database and create table.</td>
126
- <td><button class="btn btn-primary viewButton">View</button></td>
127
- </tr>
128
- <tr>
129
- <td>2</td>
130
- <td>Creating data table with columns</td>
131
- <td>Since you are an EXPERT in PHP, i want a code for an entity/configuration of table name called customer_Master. this table should be created inside database wwp which is in file database_connection.php. now, in that table customer_master i want to add columns. the column names and datatypes are given below:</td>
132
- <td>Expected response but adminlte theme was missing.</td>
133
- <td><button class="btn btn-primary viewButton">View</button></td>
134
- </tr>
135
- <tr>
136
- <td>3</td>
137
- <td>Creating home page with adminlte theme.</td>
138
- <td>I have created a new file named admintle_theme.php. I want this file filled with "ADMINLTE" theme. it should have a login/signup functionality and home button along with dashboard.
139
-
140
- example: https://adminlte.io/themes/v3/index3.html
141
-
142
- use this example for theme/html page. recreate it exactly like that
143
- .image.png
144
- </td>
145
- <td>It created a html page but lacked side bar, nav bar present in url.
146
- </td>
147
- <td><button class="btn btn-primary viewButton">View</button></td>
148
- </tr>
149
- <tr>
150
- <td>4</td>
151
- <td>Including side bar menu in customer master</td>
152
- <td>I want the side bar menu from admintle_theme to be present in customer_configuration.php</td>
153
- <td>It gave expected results.
154
- </td>
155
- <td><button class="btn btn-primary viewButton">View</button></td>
156
- </tr>
157
- </tbody>
158
- </table>
159
- </div>
160
- </div>
161
- </div>
162
- </div>
163
- </div>
164
- </section>
165
- </div>
166
-
167
- </div>
168
-
169
- <!-- Modal -->
170
- <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel"
171
- aria-hidden="true">
172
- <div class="modal-dialog" role="document">
173
- <div class="modal-content">
174
- <div class="modal-header">
175
- <h5 class="modal-title" id="addModalLabel">Add Prompt</h5>
176
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
177
- </div>
178
- <div class="modal-body">
179
- <form id="addPromptForm">
180
- <div class="form-group">
181
- <label for="APIName">Scenario <span class="text-danger">*</span></label>
182
- <input type="text" class="form-control" id="APIName" name="APIName" required>
183
- </div>
184
- <div class="form-group">
185
- <label for="APIEndpoint">Sample Prompt <span class="text-danger">*</span></label>
186
- <input type="text" class="form-control" id="APIEndpoint" name="APIEndpoint" required>
187
- </div>
188
- <div class="form-group">
189
- <label for="Auth_Bearer">Comments <span class="text-danger">*</span></label>
190
- <input type="text" class="form-control" id="Auth_Bearer" name="Auth_Bearer" required>
191
- </div>
192
- </form>
193
- </div>
194
- <div class="modal-footer">
195
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
196
- <button type="button" id="save" onclick="save_file()" class="btn btn-primary">Save</button>
197
- </div>
198
- </div>
199
- </div>
200
- </div>
201
-
202
- <!-- Include DataTables JS and your custom script -->
203
- <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
204
- <script src="https://cdn.datatables.net/1.10.25/js/dataTables.bootstrap4.min.js"></script>
205
- <script>
206
- $(document).ready(function () {
207
- // Initialize DataTable
208
- $('#knowledgeTable').DataTable();
209
-
210
- // Show modal function
211
- $('#add').on('click', function () {
212
- $('#addModal').modal('show');
213
- });
214
-
215
- // Your save file function here
216
- function save_file() {
217
- alert('Save button clicked');
218
- // Your save file logic goes here
219
- }
220
- });
221
- </script>
222
- </body>
223
-
224
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/templates/redmindlogo2.jpg DELETED
Binary file (82.6 kB)
 
templates/templates/redmindlogo3.jpg DELETED
Binary file (82.6 kB)
 
templates/templates/sidepane.html DELETED
@@ -1,95 +0,0 @@
1
- <!-- sidepane.html -->
2
-
3
- <!-- This file represents the sidepane component of a web application. It contains the navigation menu and sidebar. -->
4
-
5
- <nav class="main-header navbar navbar-expand navbar-white navbar-light" style="text-align: center;">
6
- <div class="container-fluid d-flex justify-content-center align-items-center">
7
- <img src="..\static\img\redmindlogo3.jpg" alt="Logo" style="width: 80px; height: auto; margin-right: 10px;">
8
-
9
- <h2 style="text-align: center; margin-bottom: 0;">Redmind GPT</h2>
10
- </div>
11
- <!-- Left navbar links -->
12
- <ul class="navbar-nav">
13
- <li class="nav-item">
14
- <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
15
- </li>
16
- </ul>
17
- </nav>
18
-
19
- <!-- Main Sidebar Container -->
20
- <aside class="main-sidebar sidebar-dark-primary elevation-4" style="width: 200px;">
21
- <!-- Sidebar -->
22
- <div class="sidebar">
23
- <!-- Sidebar Menu -->
24
- <nav class="mt-2">
25
- <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
26
- <!-- Navigation Links -->
27
- <li class="nav-item">
28
- <a href="#" class="nav-link">
29
- <i class="nav-icon fas fa-home"></i>
30
- <p>Dashboard</p>
31
- </a>
32
- </li>
33
- <li class="nav-item">
34
- <a href="{{ url_for('company_profile') }}" class="nav-link">
35
- <i class="nav-icon fas fa-users"></i>
36
- <p>Company Profile</p>
37
- </a>
38
- </li>
39
- <li class="nav-item">
40
- <a href="{{ url_for('knowledgebase') }}" class="nav-link">
41
- <i class="nav-icon fas fa-cogs"></i>
42
- <p>KnowledgeBase</p>
43
- </a>
44
- </li>
45
- <li class="nav-item">
46
- <a href="{{ url_for('data_connectors') }}" class="nav-link">
47
- <i class="nav-icon fas fa-home"></i>
48
- <p>Data Connectors</p>
49
- </a>
50
- </li>
51
- <li class="nav-item">
52
- <a href="{{ url_for('API_connectors') }}" class="nav-link">
53
- <i class="nav-icon fas fa-users"></i>
54
- <p>API Connectors</p>
55
- </a>
56
- </li>
57
- <li class="nav-item">
58
- <a href="{{url_for('prompt_template')}}" class="nav-link">
59
- <i class="nav-icon fas fa-cogs"></i>
60
- <p>Prompt Templates</p>
61
- </a>
62
- </li>
63
- <!--<li class="nav-item">
64
- <a href="#" class="nav-link">
65
- <i class="nav-icon fas fa-cogs"></i>
66
- <p>LLM Settings</p>
67
- </a>
68
- <ul class="nav nav-treeview">
69
- <li class="nav-item">
70
- <a href="#" class="nav-link">
71
- <i class="far fa-circle nav-icon"></i>
72
- <p>Sublink 1</p>
73
- </a>
74
- </li>
75
- <li class="nav-item">
76
- <a href="#" class="nav-link">
77
- <i class="far fa-circle nav-icon"></i>
78
- <p>Sublink 2</p>
79
- </a>
80
- </li>
81
- <!-- Add more sublinks here -->
82
- </ul>
83
- </li> -->
84
-
85
- <!-- Add more navigation links here -->
86
- </ul>
87
- </nav>
88
- <!-- /.sidebar-menu -->
89
- </div>
90
- <!-- /.sidebar -->
91
- </aside>
92
-
93
-
94
- <!-- AdminLTE JS -->
95
- <script src="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/3.1.0/js/adminlte.min.js"></script>