├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ ├── codeql-analysis.yml
│ └── codeql.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.md
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── SECURITY.md
├── app.js
├── bin
└── www
├── config.js
├── package-lock.json
├── package.json
├── public
├── images
│ ├── favicon.ico
│ └── login-with-facebook.png
├── lib
│ ├── boostrap
│ │ ├── css
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-grid.css.map
│ │ │ ├── bootstrap-grid.min.css
│ │ │ ├── bootstrap-grid.min.css.map
│ │ │ ├── bootstrap-reboot.css
│ │ │ ├── bootstrap-reboot.css.map
│ │ │ ├── bootstrap-reboot.min.css
│ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ └── bootstrap.min.css.map
│ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ └── glyphicons-halflings-regular.woff
│ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ ├── jquery
│ │ ├── jquery-3.3.1.js
│ │ └── jquery-3.3.1.min.js
│ └── js
│ │ ├── handsontable.full.min.js
│ │ ├── jquery.blockUI.js
│ │ ├── reqHandler.js
│ │ ├── services.js
│ │ ├── spin.min.js
│ │ └── underscore-min.js
└── stylesheets
│ ├── handsontable.full.min.css
│ └── style.css
├── routes
└── api.js
├── screenshots
├── 1.PNG
├── 2.PNG
└── 3.PNG
└── views
├── error.ejs
├── home.ejs
├── index.ejs
├── layout.ejs
├── templates
├── footer.ejs
├── head.ejs
├── header.ejs
└── includes.ejs
└── users.ejs
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: syamdanda
4 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | #
12 | name: "CodeQL"
13 |
14 | on:
15 | push:
16 | branches: [ master ]
17 | pull_request:
18 | # The branches below must be a subset of the branches above
19 | branches: [ master ]
20 | schedule:
21 | - cron: '20 8 * * 6'
22 |
23 | jobs:
24 | analyze:
25 | name: Analyze
26 | runs-on: ubuntu-latest
27 | permissions:
28 | actions: read
29 | contents: read
30 | security-events: write
31 |
32 | strategy:
33 | fail-fast: false
34 | matrix:
35 | language: [ 'javascript' ]
36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37 | # Learn more about CodeQL language support at https://git.io/codeql-language-support
38 |
39 | steps:
40 | - name: Checkout repository
41 | uses: actions/checkout@v3
42 |
43 | # Initializes the CodeQL tools for scanning.
44 | - name: Initialize CodeQL
45 | uses: github/codeql-action/init@v2
46 | with:
47 | languages: ${{ matrix.language }}
48 | # If you wish to specify custom queries, you can do so here or in a config file.
49 | # By default, queries listed here will override any specified in a config file.
50 | # Prefix the list here with "+" to use these queries and those in the config file.
51 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
52 |
53 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54 | # If this step fails, then you should remove it and run the build manually (see below)
55 | - name: Autobuild
56 | uses: github/codeql-action/autobuild@v2
57 |
58 | # ℹ️ Command-line programs to run using the OS shell.
59 | # 📚 https://git.io/JvXDl
60 |
61 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62 | # and modify them (or add more) to build your code if your project
63 | # uses a compiled language
64 |
65 | #- run: |
66 | # make bootstrap
67 | # make release
68 |
69 | - name: Perform CodeQL Analysis
70 | uses: github/codeql-action/analyze@v2
71 |
--------------------------------------------------------------------------------
/.github/workflows/codeql.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | #
12 | name: "CodeQL"
13 |
14 | on:
15 | push:
16 | branches: [ master ]
17 | pull_request:
18 | # The branches below must be a subset of the branches above
19 | branches: [ master ]
20 | schedule:
21 | - cron: '24 21 * * 0'
22 |
23 | jobs:
24 | analyze:
25 | name: Analyze
26 | runs-on: ubuntu-latest
27 | permissions:
28 | actions: read
29 | contents: read
30 | security-events: write
31 |
32 | strategy:
33 | fail-fast: false
34 | matrix:
35 | language: [ 'javascript' ]
36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37 | # Learn more about CodeQL language support at https://git.io/codeql-language-support
38 |
39 | steps:
40 | - name: Checkout repository
41 | uses: actions/checkout@v3
42 |
43 | # Initializes the CodeQL tools for scanning.
44 | - name: Initialize CodeQL
45 | uses: github/codeql-action/init@v2
46 | with:
47 | languages: ${{ matrix.language }}
48 | # If you wish to specify custom queries, you can do so here or in a config file.
49 | # By default, queries listed here will override any specified in a config file.
50 | # Prefix the list here with "+" to use these queries and those in the config file.
51 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
52 |
53 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54 | # If this step fails, then you should remove it and run the build manually (see below)
55 | - name: Autobuild
56 | uses: github/codeql-action/autobuild@v2
57 |
58 | # ℹ️ Command-line programs to run using the OS shell.
59 | # 📚 https://git.io/JvXDl
60 |
61 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62 | # and modify them (or add more) to build your code if your project
63 | # uses a compiled language
64 |
65 | #- run: |
66 | # make bootstrap
67 | # make release
68 |
69 | - name: Perform CodeQL Analysis
70 | uses: github/codeql-action/analyze@v2
71 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | package-lock.json
2 | # Logs
3 | logs
4 | *.log
5 | npm-debug.log*
6 | yarn-debug.log*
7 | yarn-error.log*
8 |
9 | # Runtime data
10 | pids
11 | *.pid
12 | *.seed
13 | *.pid.lock
14 |
15 | # Directory for instrumented libs generated by jscoverage/JSCover
16 | lib-cov
17 |
18 | # Coverage directory used by tools like istanbul
19 | coverage
20 |
21 | # nyc test coverage
22 | .nyc_output
23 |
24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
25 | .grunt
26 |
27 | # Bower dependency directory (https://bower.io/)
28 | bower_components
29 |
30 | # node-waf configuration
31 | .lock-wscript
32 |
33 | # Compiled binary addons (https://nodejs.org/api/addons.html)
34 | build/Release
35 |
36 | # Dependency directories
37 | node_modules/
38 | jspm_packages/
39 |
40 | # TypeScript v1 declaration files
41 | typings/
42 |
43 | # Optional npm cache directory
44 | .npm
45 |
46 | # Optional eslint cache
47 | .eslintcache
48 |
49 | # Optional REPL history
50 | .node_repl_history
51 |
52 | # Output of 'npm pack'
53 | *.tgz
54 |
55 | # Yarn Integrity file
56 | .yarn-integrity
57 |
58 | # dotenv environment variables file
59 | .env
60 |
61 | # next.js build output
62 | .next
63 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at syamdanda. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to Contribute
2 |
3 | We'd love to accept your patches and contributions to this project. There are
4 | just a few small guidelines you need to follow.
5 |
6 | ## Contributor License Agreement
7 |
8 | Contributions to this project must be accompanied by a Contributor License
9 | Agreement. You (or your employer) retain the copyright to your contribution,
10 | this simply gives us permission to use and redistribute your contributions as
11 | part of the project.
12 |
13 | You generally only need to submit a CLA once, so if you've already submitted one
14 | (even if it was for a different project), you probably don't need to do it
15 | again.
16 |
17 | ## Code reviews
18 |
19 | All submissions, including submissions by project members, require review. We
20 | use GitHub pull requests for this purpose.
21 |
22 | ## Community Guidelines
23 |
24 | This project follows [Google's Open Source Community
25 | Guidelines](https://opensource.google.com/conduct/).
26 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
203 | -------------------------------------------------------------------------------
204 |
205 | Bootstrap 4.0
206 |
207 | The MIT License (MIT)
208 |
209 | Copyright (c) 2011-2018 Twitter, Inc.
210 | Copyright (c) 2011-2018 The Bootstrap Authors
211 |
212 | Permission is hereby granted, free of charge, to any person obtaining a copy
213 | of this software and associated documentation files (the "Software"), to deal
214 | in the Software without restriction, including without limitation the rights
215 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
216 | copies of the Software, and to permit persons to whom the Software is
217 | furnished to do so, subject to the following conditions:
218 |
219 | The above copyright notice and this permission notice shall be included in
220 | all copies or substantial portions of the Software.
221 |
222 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
223 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
224 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
225 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
226 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
227 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
228 | THE SOFTWARE.
229 |
230 | -------------------------------------------------------------------------------
231 |
232 | JQuery 3.3.1
233 |
234 | Copyright JS Foundation and other contributors, https://js.foundation/
235 |
236 | This software consists of voluntary contributions made by many
237 | individuals. For exact contribution history, see the revision history
238 | available at https://github.com/jquery/jquery
239 |
240 | Permission is hereby granted, free of charge, to any person obtaining
241 | a copy of this software and associated documentation files (the
242 | "Software"), to deal in the Software without restriction, including
243 | without limitation the rights to use, copy, modify, merge, publish,
244 | distribute, sublicense, and/or sell copies of the Software, and to
245 | permit persons to whom the Software is furnished to do so, subject to
246 | the following conditions:
247 |
248 | The above copyright notice and this permission notice shall be
249 | included in all copies or substantial portions of the Software.
250 |
251 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
252 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
253 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
254 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
255 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
256 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
257 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
258 |
--------------------------------------------------------------------------------
/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## Purpose
2 | _Describe the problem or feature in addition to a link to the issues._
3 |
4 | ## Approach
5 | _How does this change address the problem?_
6 |
7 | #### Open Questions and Pre-Merge TODOs
8 | - [ ] Use github checklists. When solved, check the box and explain the answer.
9 |
10 | ## Learning
11 | _Describe the research stage_
12 |
13 | _Links to blog posts, patterns, libraries or addons used to solve this problem_
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | What is MySequel Web
2 | =================
3 |
4 | MySequel Web is an open source web based GUI tool to access your MySql/Postgresql database.
5 | It is similar to PHP My Admin of WAMP. Here you can access any MySql/Postgresql database with proper connection strings.
6 | We do not save or store any of your connection strings or data. Every thing related to your connection strings are volatile. You can host this as a simple nodeJs application on any server or you can simply run this in your local.
7 |
8 | Demo
9 | =================
10 | You can access https://mysqlweb.herokuapp.com/ for live demo.
11 | To run the application in your machine, Run the app.js file from your cmd prompt
12 |
13 | mySequelWeb>node app.js
14 | Then navigate to http://localhost:1234 url by opening your favorite browser.
15 |
16 |
17 | Except autoconnection field all are mandatory. Please provide your conection string details and click on Access Database
18 | You will get connected with the MySql database and you can see the list tables available in that database.
19 |
20 | Write queries in the query editor and click on execute button, your query results will appear in the results grid.
21 |
22 |
23 | Current Version
24 | =================
25 | Current version is beta
26 | This version has basic features like
27 |
28 |
Connecting with MySql/Postgresql Database
29 |
Displaying list of tables
30 |
Displaying table information on table name click
31 |
executing all Select, update, Insert and Delete queries including joins
` elements.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n font-size: $font-size-base;\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: left; // 3\n background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n box-sizing: content-box; // 1\n height: 0; // 1\n overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `
`-`
` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: $headings-margin-bottom;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `
`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n border-bottom: 0; // 1\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // Undo browser default\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic; // Add the correct font style in Android 4.3-\n}\n\n// stylelint-disable font-weight-notation\nb,\nstrong {\n font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n// stylelint-enable font-weight-notation\n\nsmall {\n font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n background-color: transparent; // Remove the gray background on active links in IE 10.\n -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n @include hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n\n @include hover-focus {\n color: inherit;\n text-decoration: none;\n }\n\n &:focus {\n outline: 0;\n }\n}\n\n\n//\n// Code\n//\n\n// stylelint-disable font-family-no-duplicate-names\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.\n font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n// stylelint-enable font-family-no-duplicate-names\n\npre {\n // Remove browser default top margin\n margin-top: 0;\n // Reset browser default of `1em` to use `rem`s\n margin-bottom: 1rem;\n // Don't allow content to break outside\n overflow: auto;\n // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so\n // we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n // Apply a consistent margin strategy (matches our type styles).\n margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n vertical-align: middle;\n border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n overflow: hidden; // Hide the overflow in IE\n}\n\n\n//\n// Tables\n//\n\ntable {\n border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n padding-top: $table-cell-padding;\n padding-bottom: $table-cell-padding;\n color: $text-muted;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n // Matches default `
` alignment by inheriting from the ``, or the\n // closest parent with a set `text-align`.\n text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n // Allow labels to use `margin` for spacing.\n display: inline-block;\n margin-bottom: .5rem;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // Remove the margin in Firefox and Safari\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n // bug where setting a custom line-height prevents text from being vertically\n // centered within the input.\n // See https://bugs.webkit.org/show_bug.cgi?id=139848\n // and https://github.com/twbs/bootstrap/issues/11266\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto; // Remove the default vertical scrollbar in IE.\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n resize: vertical;\n}\n\nfieldset {\n // Browsers set a default `min-width: min-content;` on fieldsets,\n // unlike e.g. `
`s, which have `min-width: 0;` by default.\n // So we reset that to ensure fieldsets behave more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n min-width: 0;\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n display: block;\n width: 100%;\n max-width: 100%; // 1\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit; // 2\n white-space: normal; // 1\n}\n\nprogress {\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n outline-offset: -2px; // 2. Correct the outline style in Safari.\n -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n font: inherit; // 2\n -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item; // Add the correct display in all browsers\n cursor: pointer;\n}\n\ntemplate {\n display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n display: none !important;\n}\n","/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n/*# sourceMappingURL=bootstrap-reboot.css.map */","/*!\n * Bootstrap Reboot v4.0.0 (https://getbootstrap.com)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\narticle, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {\n display: block;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: #212529;\n text-align: left;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n -ms-overflow-style: scrollbar;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */","// stylelint-disable indentation\n\n// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Origally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS—an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular psuedo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n &:hover { @content; }\n}\n\n@mixin hover-focus {\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin plain-hover-focus {\n &,\n &:hover,\n &:focus {\n @content;\n }\n}\n\n@mixin hover-focus-active {\n &:hover,\n &:focus,\n &:active {\n @content;\n }\n}\n"]}
--------------------------------------------------------------------------------
/public/lib/boostrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/syamdanda/mySequelWeb/3d1fc5c1da05bfea688dbe1633b371a1b862b9de/public/lib/boostrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/public/lib/boostrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/syamdanda/mySequelWeb/3d1fc5c1da05bfea688dbe1633b371a1b862b9de/public/lib/boostrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/public/lib/boostrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/syamdanda/mySequelWeb/3d1fc5c1da05bfea688dbe1633b371a1b862b9de/public/lib/boostrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/public/lib/js/jquery.blockUI.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * jQuery blockUI plugin
3 | * Version 2.70.0-2014.11.23
4 | * Requires jQuery v1.7 or later
5 | *
6 | * Examples at: http://malsup.com/jquery/block/
7 | * Copyright (c) 2007-2013 M. Alsup
8 | * Dual licensed under the MIT and GPL licenses:
9 | * http://www.opensource.org/licenses/mit-license.php
10 | * http://www.gnu.org/licenses/gpl.html
11 | *
12 | * Thanks to Amir-Hossein Sobhi for some excellent contributions!
13 | */
14 |
15 | ;(function() {
16 | /*jshint eqeqeq:false curly:false latedef:false */
17 | "use strict";
18 |
19 | function setup($) {
20 | $.fn._fadeIn = $.fn.fadeIn;
21 |
22 | var noOp = $.noop || function() {};
23 |
24 | // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
25 | // confusing userAgent strings on Vista)
26 | var msie = /MSIE/.test(navigator.userAgent);
27 | var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
28 | var mode = document.documentMode || 0;
29 | var setExpr = $.isFunction( document.createElement('div').style.setExpression );
30 |
31 | // global $ methods for blocking/unblocking the entire page
32 | $.blockUI = function(opts) { install(window, opts); };
33 | $.unblockUI = function(opts) { remove(window, opts); };
34 |
35 | // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
36 | $.growlUI = function(title, message, timeout, onClose) {
37 | var $m = $('');
38 | if (title) $m.append('
'+title+'
');
39 | if (message) $m.append('
'+message+'
');
40 | if (timeout === undefined) timeout = 3000;
41 |
42 | // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
43 | var callBlock = function(opts) {
44 | opts = opts || {};
45 |
46 | $.blockUI({
47 | message: $m,
48 | fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
49 | fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
50 | timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
51 | centerY: false,
52 | showOverlay: false,
53 | onUnblock: onClose,
54 | css: $.blockUI.defaults.growlCSS
55 | });
56 | };
57 |
58 | callBlock();
59 | var nonmousedOpacity = $m.css('opacity');
60 | $m.mouseover(function() {
61 | callBlock({
62 | fadeIn: 0,
63 | timeout: 30000
64 | });
65 |
66 | var displayBlock = $('.blockMsg');
67 | displayBlock.stop(); // cancel fadeout if it has started
68 | displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
69 | }).mouseout(function() {
70 | $('.blockMsg').fadeOut(1000);
71 | });
72 | // End konapun additions
73 | };
74 |
75 | // plugin method for blocking element content
76 | $.fn.block = function(opts) {
77 | if ( this[0] === window ) {
78 | $.blockUI( opts );
79 | return this;
80 | }
81 | var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
82 | this.each(function() {
83 | var $el = $(this);
84 | if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
85 | return;
86 | $el.unblock({ fadeOut: 0 });
87 | });
88 |
89 | return this.each(function() {
90 | if ($.css(this,'position') == 'static') {
91 | this.style.position = 'relative';
92 | $(this).data('blockUI.static', true);
93 | }
94 | this.style.zoom = 1; // force 'hasLayout' in ie
95 | install(this, opts);
96 | });
97 | };
98 |
99 | // plugin method for unblocking element content
100 | $.fn.unblock = function(opts) {
101 | if ( this[0] === window ) {
102 | $.unblockUI( opts );
103 | return this;
104 | }
105 | return this.each(function() {
106 | remove(this, opts);
107 | });
108 | };
109 |
110 | $.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
111 |
112 | // override these in your code to change the default behavior and style
113 | $.blockUI.defaults = {
114 | // message displayed when blocking (use null for no message)
115 | message: '
Please wait...
',
116 |
117 | title: null, // title string; only used when theme == true
118 | draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
119 |
120 | theme: false, // set to true to use with jQuery UI themes
121 |
122 | // styles for the message when blocking; if you wish to disable
123 | // these and use an external stylesheet then do this in your code:
124 | // $.blockUI.defaults.css = {};
125 | css: {
126 | padding: 0,
127 | margin: 0,
128 | width: '30%',
129 | top: '40%',
130 | left: '35%',
131 | textAlign: 'center',
132 | color: '#000',
133 | border: '3px solid #aaa',
134 | backgroundColor:'#fff',
135 | cursor: 'wait'
136 | },
137 |
138 | // minimal style set used when themes are used
139 | themedCSS: {
140 | width: '30%',
141 | top: '40%',
142 | left: '35%'
143 | },
144 |
145 | // styles for the overlay
146 | overlayCSS: {
147 | backgroundColor: '#000',
148 | opacity: 0.6,
149 | cursor: 'wait'
150 | },
151 |
152 | // style to replace wait cursor before unblocking to correct issue
153 | // of lingering wait cursor
154 | cursorReset: 'default',
155 |
156 | // styles applied when using $.growlUI
157 | growlCSS: {
158 | width: '350px',
159 | top: '10px',
160 | left: '',
161 | right: '10px',
162 | border: 'none',
163 | padding: '5px',
164 | opacity: 0.6,
165 | cursor: 'default',
166 | color: '#fff',
167 | backgroundColor: '#000',
168 | '-webkit-border-radius':'10px',
169 | '-moz-border-radius': '10px',
170 | 'border-radius': '10px'
171 | },
172 |
173 | // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
174 | // (hat tip to Jorge H. N. de Vasconcelos)
175 | /*jshint scripturl:true */
176 | iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
177 |
178 | // force usage of iframe in non-IE browsers (handy for blocking applets)
179 | forceIframe: false,
180 |
181 | // z-index for the blocking overlay
182 | baseZ: 1000,
183 |
184 | // set these to true to have the message automatically centered
185 | centerX: true, // <-- only effects element blocking (page block controlled via css above)
186 | centerY: true,
187 |
188 | // allow body element to be stetched in ie6; this makes blocking look better
189 | // on "short" pages. disable if you wish to prevent changes to the body height
190 | allowBodyStretch: true,
191 |
192 | // enable if you want key and mouse events to be disabled for content that is blocked
193 | bindEvents: true,
194 |
195 | // be default blockUI will supress tab navigation from leaving blocking content
196 | // (if bindEvents is true)
197 | constrainTabKey: true,
198 |
199 | // fadeIn time in millis; set to 0 to disable fadeIn on block
200 | fadeIn: 200,
201 |
202 | // fadeOut time in millis; set to 0 to disable fadeOut on unblock
203 | fadeOut: 400,
204 |
205 | // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
206 | timeout: 0,
207 |
208 | // disable if you don't want to show the overlay
209 | showOverlay: true,
210 |
211 | // if true, focus will be placed in the first available input field when
212 | // page blocking
213 | focusInput: true,
214 |
215 | // elements that can receive focus
216 | focusableElements: ':input:enabled:visible',
217 |
218 | // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
219 | // no longer needed in 2012
220 | // applyPlatformOpacityRules: true,
221 |
222 | // callback method invoked when fadeIn has completed and blocking message is visible
223 | onBlock: null,
224 |
225 | // callback method invoked when unblocking has completed; the callback is
226 | // passed the element that has been unblocked (which is the window object for page
227 | // blocks) and the options that were passed to the unblock call:
228 | // onUnblock(element, options)
229 | onUnblock: null,
230 |
231 | // callback method invoked when the overlay area is clicked.
232 | // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
233 | onOverlayClick: null,
234 |
235 | // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
236 | quirksmodeOffsetHack: 4,
237 |
238 | // class name of the message block
239 | blockMsgClass: 'blockMsg',
240 |
241 | // if it is already blocked, then ignore it (don't unblock and reblock)
242 | ignoreIfBlocked: false
243 | };
244 |
245 | // private data and functions follow...
246 |
247 | var pageBlock = null;
248 | var pageBlockEls = [];
249 |
250 | function install(el, opts) {
251 | var css, themedCSS;
252 | var full = (el == window);
253 | var msg = (opts && opts.message !== undefined ? opts.message : undefined);
254 | opts = $.extend({}, $.blockUI.defaults, opts || {});
255 |
256 | if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
257 | return;
258 |
259 | opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
260 | css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
261 | if (opts.onOverlayClick)
262 | opts.overlayCSS.cursor = 'pointer';
263 |
264 | themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
265 | msg = msg === undefined ? opts.message : msg;
266 |
267 | // remove the current block (if there is one)
268 | if (full && pageBlock)
269 | remove(window, {fadeOut:0});
270 |
271 | // if an existing element is being used as the blocking content then we capture
272 | // its current place in the DOM (and current display style) so we can restore
273 | // it when we unblock
274 | if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
275 | var node = msg.jquery ? msg[0] : msg;
276 | var data = {};
277 | $(el).data('blockUI.history', data);
278 | data.el = node;
279 | data.parent = node.parentNode;
280 | data.display = node.style.display;
281 | data.position = node.style.position;
282 | if (data.parent)
283 | data.parent.removeChild(node);
284 | }
285 |
286 | $(el).data('blockUI.onUnblock', opts.onUnblock);
287 | var z = opts.baseZ;
288 |
289 | // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
290 | // layer1 is the iframe layer which is used to supress bleed through of underlying content
291 | // layer2 is the overlay layer which has opacity and a wait cursor (by default)
292 | // layer3 is the message content that is displayed while blocking
293 | var lyr1, lyr2, lyr3, s;
294 | if (msie || opts.forceIframe)
295 | lyr1 = $('');
296 | else
297 | lyr1 = $('');
298 |
299 | if (opts.theme)
300 | lyr2 = $('');
301 | else
302 | lyr2 = $('');
303 |
304 | if (opts.theme && full) {
305 | s = '
';
306 | if ( opts.title ) {
307 | s += '
'+(opts.title || ' ')+'
';
308 | }
309 | s += '';
310 | s += '
';
311 | }
312 | else if (opts.theme) {
313 | s = '
';
314 | if ( opts.title ) {
315 | s += '
'+(opts.title || ' ')+'
';
316 | }
317 | s += '';
318 | s += '
';
319 | }
320 | else if (full) {
321 | s = '';
322 | }
323 | else {
324 | s = '';
325 | }
326 | lyr3 = $(s);
327 |
328 | // if we have a message, style it
329 | if (msg) {
330 | if (opts.theme) {
331 | lyr3.css(themedCSS);
332 | lyr3.addClass('ui-widget-content');
333 | }
334 | else
335 | lyr3.css(css);
336 | }
337 |
338 | // style the overlay
339 | if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
340 | lyr2.css(opts.overlayCSS);
341 | lyr2.css('position', full ? 'fixed' : 'absolute');
342 |
343 | // make iframe layer transparent in IE
344 | if (msie || opts.forceIframe)
345 | lyr1.css('opacity',0.0);
346 |
347 | //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
348 | var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
349 | $.each(layers, function() {
350 | this.appendTo($par);
351 | });
352 |
353 | if (opts.theme && opts.draggable && $.fn.draggable) {
354 | lyr3.draggable({
355 | handle: '.ui-dialog-titlebar',
356 | cancel: 'li'
357 | });
358 | }
359 |
360 | // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
361 | var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
362 | if (ie6 || expr) {
363 | // give body 100% height
364 | if (full && opts.allowBodyStretch && $.support.boxModel)
365 | $('html,body').css('height','100%');
366 |
367 | // fix ie6 issue when blocked element has a border width
368 | if ((ie6 || !$.support.boxModel) && !full) {
369 | var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
370 | var fixT = t ? '(0 - '+t+')' : 0;
371 | var fixL = l ? '(0 - '+l+')' : 0;
372 | }
373 |
374 | // simulate fixed position
375 | $.each(layers, function(i,o) {
376 | var s = o[0].style;
377 | s.position = 'absolute';
378 | if (i < 2) {
379 | if (full)
380 | s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
381 | else
382 | s.setExpression('height','this.parentNode.offsetHeight + "px"');
383 | if (full)
384 | s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
385 | else
386 | s.setExpression('width','this.parentNode.offsetWidth + "px"');
387 | if (fixL) s.setExpression('left', fixL);
388 | if (fixT) s.setExpression('top', fixT);
389 | }
390 | else if (opts.centerY) {
391 | if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
392 | s.marginTop = 0;
393 | }
394 | else if (!opts.centerY && full) {
395 | var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
396 | var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
397 | s.setExpression('top',expression);
398 | }
399 | });
400 | }
401 |
402 | // show the message
403 | if (msg) {
404 | if (opts.theme)
405 | lyr3.find('.ui-widget-content').append(msg);
406 | else
407 | lyr3.append(msg);
408 | if (msg.jquery || msg.nodeType)
409 | $(msg).show();
410 | }
411 |
412 | if ((msie || opts.forceIframe) && opts.showOverlay)
413 | lyr1.show(); // opacity is zero
414 | if (opts.fadeIn) {
415 | var cb = opts.onBlock ? opts.onBlock : noOp;
416 | var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
417 | var cb2 = msg ? cb : noOp;
418 | if (opts.showOverlay)
419 | lyr2._fadeIn(opts.fadeIn, cb1);
420 | if (msg)
421 | lyr3._fadeIn(opts.fadeIn, cb2);
422 | }
423 | else {
424 | if (opts.showOverlay)
425 | lyr2.show();
426 | if (msg)
427 | lyr3.show();
428 | if (opts.onBlock)
429 | opts.onBlock.bind(lyr3)();
430 | }
431 |
432 | // bind key and mouse events
433 | bind(1, el, opts);
434 |
435 | if (full) {
436 | pageBlock = lyr3[0];
437 | pageBlockEls = $(opts.focusableElements,pageBlock);
438 | if (opts.focusInput)
439 | setTimeout(focus, 20);
440 | }
441 | else
442 | center(lyr3[0], opts.centerX, opts.centerY);
443 |
444 | if (opts.timeout) {
445 | // auto-unblock
446 | var to = setTimeout(function() {
447 | if (full)
448 | $.unblockUI(opts);
449 | else
450 | $(el).unblock(opts);
451 | }, opts.timeout);
452 | $(el).data('blockUI.timeout', to);
453 | }
454 | }
455 |
456 | // remove the block
457 | function remove(el, opts) {
458 | var count;
459 | var full = (el == window);
460 | var $el = $(el);
461 | var data = $el.data('blockUI.history');
462 | var to = $el.data('blockUI.timeout');
463 | if (to) {
464 | clearTimeout(to);
465 | $el.removeData('blockUI.timeout');
466 | }
467 | opts = $.extend({}, $.blockUI.defaults, opts || {});
468 | bind(0, el, opts); // unbind events
469 |
470 | if (opts.onUnblock === null) {
471 | opts.onUnblock = $el.data('blockUI.onUnblock');
472 | $el.removeData('blockUI.onUnblock');
473 | }
474 |
475 | var els;
476 | if (full) // crazy selector to handle odd field errors in ie6/7
477 | els = $('body').children().filter('.blockUI').add('body > .blockUI');
478 | else
479 | els = $el.find('>.blockUI');
480 |
481 | // fix cursor issue
482 | if ( opts.cursorReset ) {
483 | if ( els.length > 1 )
484 | els[1].style.cursor = opts.cursorReset;
485 | if ( els.length > 2 )
486 | els[2].style.cursor = opts.cursorReset;
487 | }
488 |
489 | if (full)
490 | pageBlock = pageBlockEls = null;
491 |
492 | if (opts.fadeOut) {
493 | count = els.length;
494 | els.stop().fadeOut(opts.fadeOut, function() {
495 | if ( --count === 0)
496 | reset(els,data,opts,el);
497 | });
498 | }
499 | else
500 | reset(els, data, opts, el);
501 | }
502 |
503 | // move blocking element back into the DOM where it started
504 | function reset(els,data,opts,el) {
505 | var $el = $(el);
506 | if ( $el.data('blockUI.isBlocked') )
507 | return;
508 |
509 | els.each(function(i,o) {
510 | // remove via DOM calls so we don't lose event handlers
511 | if (this.parentNode)
512 | this.parentNode.removeChild(this);
513 | });
514 |
515 | if (data && data.el) {
516 | data.el.style.display = data.display;
517 | data.el.style.position = data.position;
518 | data.el.style.cursor = 'default'; // #59
519 | if (data.parent)
520 | data.parent.appendChild(data.el);
521 | $el.removeData('blockUI.history');
522 | }
523 |
524 | if ($el.data('blockUI.static')) {
525 | $el.css('position', 'static'); // #22
526 | }
527 |
528 | if (typeof opts.onUnblock == 'function')
529 | opts.onUnblock(el,opts);
530 |
531 | // fix issue in Safari 6 where block artifacts remain until reflow
532 | var body = $(document.body), w = body.width(), cssW = body[0].style.width;
533 | body.width(w-1).width(w);
534 | body[0].style.width = cssW;
535 | }
536 |
537 | // bind/unbind the handler
538 | function bind(b, el, opts) {
539 | var full = el == window, $el = $(el);
540 |
541 | // don't bother unbinding if there is nothing to unbind
542 | if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
543 | return;
544 |
545 | $el.data('blockUI.isBlocked', b);
546 |
547 | // don't bind events when overlay is not in use or if bindEvents is false
548 | if (!full || !opts.bindEvents || (b && !opts.showOverlay))
549 | return;
550 |
551 | // bind anchors and inputs for mouse and key events
552 | var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
553 | if (b)
554 | $(document).bind(events, opts, handler);
555 | else
556 | $(document).unbind(events, handler);
557 |
558 | // former impl...
559 | // var $e = $('a,:input');
560 | // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
561 | }
562 |
563 | // event handler to suppress keyboard/mouse events when blocking
564 | function handler(e) {
565 | // allow tab navigation (conditionally)
566 | if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
567 | if (pageBlock && e.data.constrainTabKey) {
568 | var els = pageBlockEls;
569 | var fwd = !e.shiftKey && e.target === els[els.length-1];
570 | var back = e.shiftKey && e.target === els[0];
571 | if (fwd || back) {
572 | setTimeout(function(){focus(back);},10);
573 | return false;
574 | }
575 | }
576 | }
577 | var opts = e.data;
578 | var target = $(e.target);
579 | if (target.hasClass('blockOverlay') && opts.onOverlayClick)
580 | opts.onOverlayClick(e);
581 |
582 | // allow events within the message content
583 | if (target.parents('div.' + opts.blockMsgClass).length > 0)
584 | return true;
585 |
586 | // allow events for content that is not being blocked
587 | return target.parents().children().filter('div.blockUI').length === 0;
588 | }
589 |
590 | function focus(back) {
591 | if (!pageBlockEls)
592 | return;
593 | var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
594 | if (e)
595 | e.focus();
596 | }
597 |
598 | function center(el, x, y) {
599 | var p = el.parentNode, s = el.style;
600 | var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
601 | var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
602 | if (x) s.left = l > 0 ? (l+'px') : '0';
603 | if (y) s.top = t > 0 ? (t+'px') : '0';
604 | }
605 |
606 | function sz(el, p) {
607 | return parseInt($.css(el,p),10)||0;
608 | }
609 |
610 | }
611 |
612 |
613 | /*global define:true */
614 | if (typeof define === 'function' && define.amd && define.amd.jQuery) {
615 | define(['jquery'], setup);
616 | } else {
617 | setup(jQuery);
618 | }
619 |
620 | })();
621 |
--------------------------------------------------------------------------------
/public/lib/js/reqHandler.js:
--------------------------------------------------------------------------------
1 | var opts = {
2 | lines: 13 // The number of lines to draw
3 | , length: 13 // The length of each line
4 | , width: 3 // The line thickness
5 | , radius: 11 // The radius of the inner circle
6 | , scale: 1 // Scales overall size of the spinner
7 | , corners: 1 // Corner roundness (0..1)
8 | , color: '#000' // #rgb or #rrggbb or array of colors
9 | , opacity: 0.25 // Opacity of the lines
10 | , rotate: 0 // The rotation offset
11 | , direction: 1 // 1: clockwise, -1: counterclockwise
12 | , speed: 1 // Rounds per second
13 | , trail: 60 // Afterglow percentage
14 | , fps: 20 // Frames per second when using setTimeout() as a fallback for CSS
15 | , zIndex: 2e9 // The z-index (defaults to 2000000000)
16 | , className: 'spinner' // The CSS class to assign to the spinner
17 | , top: '45%' // Top position relative to parent
18 | , left: '50%' // Left position relative to parent
19 | , shadow: false // Whether to render a shadow
20 | , hwaccel: false // Whether to use hardware acceleration
21 | , position: 'absolute' // Element positioning
22 | };
23 |
24 | var ReqHandler = function() {
25 | function ajaxRequest(requestObj, callback) {
26 | var target = document.getElementById('content');
27 | var spinner = new Spinner(opts).spin(target);
28 | var token = '';
29 | /*if($.session.get('token')){token = $.session.get('token');}
30 | $.blockUI({
31 | message: null,
32 | css: { backgroundColor: '#fff', color: '#fff'}
33 | });*/
34 | $.blockUI({
35 | message: null,
36 | css: { backgroundColor: '#fff', color: '#fff'}
37 | });
38 | $.ajax({
39 | type: requestObj.type,
40 | beforeSend: function (request) {
41 | if(!_.some(['/api/user/login', '/api/user/forgotPassword'], function(url) { return url == requestObj.url; })){
42 | request.setRequestHeader('Authorization', token);
43 | }
44 | },
45 | url: requestObj.url,
46 | data: requestObj.data,
47 | success: function(data) {
48 | spinner.stop();
49 | $.unblockUI();
50 | callback(data);
51 | },
52 | error: function(data) {
53 | spinner.stop();
54 | $.unblockUI();
55 | callback(data);
56 | }
57 | });
58 | };
59 |
60 | this.post = function(requestObj, callback) {
61 | requestObj.type = 'POST';
62 | ajaxRequest(requestObj, callback);
63 | };
64 |
65 | this.get = function(requestObj, callback) {
66 | requestObj.type = 'GET';
67 | ajaxRequest(requestObj, callback);
68 | };
69 |
70 | this.put = function(requestObj, callback) {
71 | requestObj.type = 'PUT';
72 | ajaxRequest(requestObj, callback);
73 | };
74 |
75 | this.delete = function(requestObj, callback) {
76 | requestObj.type = 'DELETE';
77 | ajaxRequest(requestObj, callback);
78 | };
79 | return this;
80 | };
--------------------------------------------------------------------------------
/public/lib/js/services.js:
--------------------------------------------------------------------------------
1 | var selectedTable;
2 | var query;
3 | const reqHandler = new ReqHandler();
4 | var hotGrid;
5 |
6 | function selectTable(tableName) {
7 | $('.tablesList li').removeClass('active');
8 | $('#'+tableName).addClass('active');
9 | selectedTable = tableName;
10 | getTableInfo();
11 | }
12 |
13 | function getTableInfo() {
14 | reqHandler.get({url: '/tableInfo/' + selectedTable}, function(response) {
15 | console.log(JSON.stringify(response, null, 2));
16 | if (response && response.result && response.result.length) {
17 | var dataObject = [];
18 | var columnsObject = [];
19 | var colHeaders = [];
20 | var colWidths = [];
21 | var hotElement = document.querySelector('#resultsGrid');
22 | var lastIndex = response.result.length;
23 | for (i=0;i', '').replaceAll('