|
1 | 1 | import { Component, h, Element, State, Prop, Host } from '@stencil/core'; |
2 | 2 | import { EditorState } from '@codemirror/basic-setup'; |
3 | | -import { Compartment } from '@codemirror/state'; |
| 3 | + |
4 | 4 | import { EditorView, keymap } from '@codemirror/view'; |
5 | 5 | import { java } from '@codemirror/lang-java'; |
6 | 6 | import { json } from '@codemirror/lang-json'; |
7 | 7 | import Swal from 'sweetalert2'; |
8 | 8 | import state from '../store'; |
9 | 9 | import { customSetup } from '../../customSetup'; |
| 10 | +import axios from 'axios'; |
10 | 11 |
|
11 | | -let myTheme = EditorView.theme( |
12 | | - { |
13 | | - '&': { |
14 | | - color: 'white', |
15 | | - backgroundColor: '#034', |
16 | | - }, |
17 | | - '.cm-content': { |
18 | | - caretColor: '#0e9', |
19 | | - }, |
20 | | - '&.cm-focused .cm-cursor': { |
21 | | - borderLeftColor: '#0e9', |
22 | | - }, |
23 | | - '&.cm-focused .cm-selectionBackground, ::selection': { |
24 | | - backgroundColor: '#074', |
25 | | - }, |
26 | | - '.cm-gutters': { |
27 | | - backgroundColor: '#045', |
28 | | - color: '#ddd', |
29 | | - border: 'none', |
30 | | - }, |
31 | | - }, |
32 | | - { dark: true }, |
33 | | -); |
34 | | - |
35 | | -const themeConfig = new Compartment(); |
36 | 12 | const TAB_LIST = [ |
37 | 13 | { name: 'Query', className: 'editor' }, |
38 | 14 | { name: 'Parameter', className: 'parameter' }, |
@@ -68,10 +44,6 @@ export class CodeEditor { |
68 | 44 | }), |
69 | 45 | ]; |
70 | 46 | const parameterExtensions = [customSetup, json(), this.onCtrlShiftEnter()]; |
71 | | - if (localStorage.getItem('themesArray') === 'dark') { |
72 | | - editorExtensions.push(themeConfig.of([myTheme])); |
73 | | - parameterExtensions.push(themeConfig.of([myTheme])); |
74 | | - } |
75 | 47 | state.stateQuery = EditorState.create({ |
76 | 48 | doc: state.query, |
77 | 49 | extensions: editorExtensions, |
@@ -114,105 +86,40 @@ export class CodeEditor { |
114 | 86 | }, |
115 | 87 | ]); |
116 | 88 | } |
117 | | - saveQueryHandler() { |
118 | | - const dbName: string = 'neptuneQueryDB'; |
119 | | - const dbVersion: number = 1; |
120 | | - |
121 | | - const request: IDBOpenDBRequest = indexedDB.open(dbName, dbVersion); |
122 | | - |
123 | | - request.onerror = function (event: Event): void { |
124 | | - console.log('Database error: ' + (event.target as any).errorCode); |
125 | | - }; |
126 | | - |
127 | | - request.onupgradeneeded = function (event: IDBVersionChangeEvent): void { |
128 | | - const db: IDBDatabase = (event.target as any).result; |
129 | | - const objectStore: IDBObjectStore = db.createObjectStore('savedQueries', { keyPath: 'id', autoIncrement: true }); |
130 | | - objectStore.createIndex('id', 'id', { unique: false }); |
131 | | - }; |
132 | | - |
133 | | - request.onsuccess = function (event: Event): void { |
134 | | - const db: IDBDatabase = (event.target as any).result; |
135 | 89 |
|
136 | | - // Add data to the database |
137 | | - const transaction: IDBTransaction = db.transaction(['savedQueries'], 'readwrite'); |
138 | | - const objectStore: IDBObjectStore = transaction.objectStore('savedQueries'); |
139 | | - |
140 | | - const data: any = { title: state.saveTitle, query: state.query, parameter: state.queryParameter }; |
141 | | - state.saveTitle = ''; |
142 | | - const addRequest: IDBRequest = objectStore.add(data); |
143 | | - addRequest.onerror = function (event: Event): void { |
144 | | - console.log('Error adding data: ' + (event.target as any).errorCode); |
145 | | - }; |
146 | | - |
147 | | - addRequest.onsuccess = function (): void { |
148 | | - console.log('Data added successfully'); |
149 | | - }; |
150 | | - }; |
151 | | - this.isSaveModalOpen = false; |
| 90 | + async queryDataFetcher() { |
| 91 | + try { |
| 92 | + const res = await axios.get("/api/editor/saved-queries"); |
| 93 | + state.queryHistory = res.data; |
| 94 | + } catch (error) { |
| 95 | + console.log(error); |
| 96 | + } |
152 | 97 | } |
153 | | - retriveQueryData() { |
154 | | - const dbName: string = 'neptuneQueryDB'; |
155 | | - const dbVersion: number = 1; |
156 | | - |
157 | | - const request: IDBOpenDBRequest = indexedDB.open(dbName, dbVersion); |
158 | 98 |
|
159 | | - request.onerror = function (event: Event): void { |
160 | | - console.log('Database error: ' + (event.target as any).errorCode); |
161 | | - }; |
162 | | - |
163 | | - request.onupgradeneeded = function (event: IDBVersionChangeEvent): void { |
164 | | - const db: IDBDatabase = (event.target as any).result; |
165 | | - const objectStore: IDBObjectStore = db.createObjectStore('savedQueries', { keyPath: 'id', autoIncrement: true }); |
166 | | - objectStore.createIndex('id', 'id', { unique: false }); |
167 | | - }; |
168 | | - |
169 | | - request.onsuccess = function (event: Event): void { |
170 | | - const db: IDBDatabase = (event.target as any).result; |
171 | | - // Retrieve data from the database |
172 | | - const transaction2: IDBTransaction = db.transaction(['savedQueries'], 'readonly'); |
173 | | - const objectStore2: IDBObjectStore = transaction2.objectStore('savedQueries'); |
174 | | - const index: IDBIndex = objectStore2.index('id'); |
175 | | - const getRequest: IDBRequest = index.getAll(); |
176 | | - getRequest.onerror = function (event: Event): void { |
177 | | - console.log('Error retrieving data: ' + (event.target as any).errorCode); |
178 | | - }; |
| 99 | + async saveQueryHandler() { |
| 100 | + try { |
| 101 | + let transactionQuery = state.viewQuery.state.update(); |
| 102 | + const query = transactionQuery.state.doc.toString().trim(); |
| 103 | + let transactionParameter = state.viewParameter.state.update(); |
| 104 | + const parameters = transactionParameter.state.doc.toString().trim(); |
| 105 | + const data: any = { queryTitle: state.saveTitle, queryText: query, queryParameter: parameters }; |
| 106 | + state.saveTitle = ''; |
| 107 | + await axios.post(`/api/editor/saved-queries`, data); |
| 108 | + this.queryDataFetcher(); |
| 109 | + } catch (error) { |
| 110 | + console.log(error); |
179 | 111 |
|
180 | | - getRequest.onsuccess = function (event: Event): void { |
181 | | - state.queryHistory = (event.target as any).result; |
182 | | - }; |
183 | | - }; |
| 112 | + } |
184 | 113 | } |
185 | | - deleteQueryData(deleteId: number) { |
186 | | - const dbName: string = 'neptuneQueryDB'; |
187 | | - const dbVersion: number = 1; |
188 | | - |
189 | | - const request: IDBOpenDBRequest = indexedDB.open(dbName, dbVersion); |
190 | | - |
191 | | - request.onerror = function (event: Event): void { |
192 | | - console.log('Database error: ' + (event.target as any).errorCode); |
193 | | - }; |
194 | 114 |
|
195 | | - request.onupgradeneeded = function (event: IDBVersionChangeEvent): void { |
196 | | - const db: IDBDatabase = (event.target as any).result; |
197 | | - const objectStore: IDBObjectStore = db.createObjectStore('savedQueries', { keyPath: 'id', autoIncrement: true }); |
198 | | - objectStore.createIndex('id', 'id', { unique: false }); |
199 | | - }; |
200 | | - |
201 | | - request.onsuccess = function (event: Event): void { |
202 | | - const db: IDBDatabase = (event.target as any).result; |
203 | | - // Delete data from the database |
204 | | - const transaction2: IDBTransaction = db.transaction(['savedQueries'], 'readwrite'); |
205 | | - const objectStore2: IDBObjectStore = transaction2.objectStore('savedQueries'); |
206 | | - |
207 | | - const deleteRequest: IDBRequest = objectStore2.delete(deleteId); |
208 | | - deleteRequest.onerror = function (event: Event): void { |
209 | | - console.log('Error deleting data: ' + (event.target as any).errorCode); |
210 | | - }; |
| 115 | + async deleteQueryData(deleteId: number) { |
| 116 | + try { |
| 117 | + const res = await axios.delete(`/api/editor/saved-queries/${deleteId}`); |
| 118 | + return res |
| 119 | + } catch (error) { |
| 120 | + console.log(error); |
211 | 121 |
|
212 | | - deleteRequest.onsuccess = function (): void { |
213 | | - console.log('Data deleted successfully'); |
214 | | - }; |
215 | | - }; |
| 122 | + } |
216 | 123 | } |
217 | 124 | saveSubmitHandler() { |
218 | 125 | try { |
@@ -246,8 +153,10 @@ export class CodeEditor { |
246 | 153 | <div class="px-3 w-full flex content-between" style={{ justifyContent: 'space-between' }}> |
247 | 154 | <tabs-component activeIndex={this.activeIndex} tabslist={TAB_LIST} tabClickHandler={this.tabClickHandler}></tabs-component> |
248 | 155 | <div class="flex w-40 justify-between"> |
249 | | - <save-query-modal class="pt-3" deleteQueryData={deleteId => this.deleteQueryData(deleteId)} queryDataFetcher={() => this.retriveQueryData()} /> |
250 | | - |
| 156 | + <save-query-modal class="pt-3" |
| 157 | + deleteQueryData={(deleteId: number) => this.deleteQueryData(deleteId)} |
| 158 | + queryDataFetcher={() => this.queryDataFetcher()} |
| 159 | + /> |
251 | 160 | <insert-node-modal fetchNavigators={() => this.fetchNavigators()} class="pt-3"></insert-node-modal> |
252 | 161 |
|
253 | 162 | <icon-button-basic |
|
0 commit comments