Compare commits
1
Commits
main
..
b24a5e8a92
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b24a5e8a92 |
@@ -0,0 +1,59 @@
|
|||||||
|
name: ProxmoxAAS-Dashboard Code Style Check
|
||||||
|
run-name: Code style check on ${{gitea.repository}} ${{gitea.ref_name}} ${{gitea.sha}}
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Initialize ${{runner.os}} ${{runner.arch}}
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
|
||||||
|
- name: Install linters
|
||||||
|
run: |
|
||||||
|
npm install --no-save \
|
||||||
|
@eslint/eslintrc \
|
||||||
|
@eslint/js \
|
||||||
|
eslint \
|
||||||
|
globals \
|
||||||
|
html-validate \
|
||||||
|
stylelint \
|
||||||
|
stylelint-config-standard
|
||||||
|
|
||||||
|
- name: Verify linters
|
||||||
|
run: |
|
||||||
|
eslint --version
|
||||||
|
stylelint --version
|
||||||
|
html-validate --version
|
||||||
|
|
||||||
|
- name: Check out ${{gitea.repository}} ${{gitea.ref}} ${{gitea.sha}}
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run HTML Validate
|
||||||
|
id: html_lint
|
||||||
|
run: html-validate --config dev_config/.htmlvalidate.json "web/html/**/*"
|
||||||
|
|
||||||
|
- name: Run Stylelint
|
||||||
|
id: style_lint
|
||||||
|
if: always()
|
||||||
|
run: stylelint --config dev_config/.stylelintrc.json --formatter verbose --fix "web/css/**/*.css"
|
||||||
|
|
||||||
|
- name: Run ESLint
|
||||||
|
id: js_lint
|
||||||
|
if: always()
|
||||||
|
env:
|
||||||
|
DEBUG: eslint:cli-engine
|
||||||
|
run: eslint --config dev_config/eslint.config.mjs --fix web/scripts/
|
||||||
|
|
||||||
|
- name: Verify All Linters Passed
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
if [ "${{ steps.html_lint.outcome }}" != "success" ] || \
|
||||||
|
[ "${{ steps.style_lint.outcome }}" != "success" ] || \
|
||||||
|
[ "${{ steps.js_lint.outcome }}" != "success" ]; then
|
||||||
|
echo "At least one linter failed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
**/config.json
|
**/config.json
|
||||||
|
**/package-lock.json
|
||||||
|
**/node_modules
|
||||||
dist/*
|
dist/*
|
||||||
go.sum
|
go.sum
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
.PHONY: build build-web build-wfa-js clean clean-wfa-js ensure-dist workflow-init
|
.PHONY: build test clean wfa-js
|
||||||
|
|
||||||
build: clean ensure-dist build-web build-wfa-js
|
build: clean build-wfa-js
|
||||||
@echo "======================== Building Binary ======================="
|
@echo "======================== Building Binary ======================="
|
||||||
|
mkdir -p dist
|
||||||
# resolve symbolic links in web by copying it into dist/web/
|
# resolve symbolic links in web by copying it into dist/web/
|
||||||
|
cp -rL web/ dist/web/
|
||||||
CGO_ENABLED=0 go build -tags release -ldflags="-s -w" -v -o dist/ .
|
CGO_ENABLED=0 go build -tags release -ldflags="-s -w" -v -o dist/ .
|
||||||
|
|
||||||
build-web: ensure-dist
|
build-wfa-js:
|
||||||
cp -rL web/ dist/web/
|
|
||||||
|
|
||||||
build-wfa-js: ensure-dist
|
|
||||||
$(MAKE) -C WFA-JS
|
$(MAKE) -C WFA-JS
|
||||||
cp -f WFA-JS/dist/* web/modules
|
cp -f WFA-JS/dist/* web/modules
|
||||||
|
|
||||||
@@ -19,9 +18,3 @@ clean: clean-wfa-js
|
|||||||
|
|
||||||
clean-wfa-js:
|
clean-wfa-js:
|
||||||
$(MAKE) clean -C WFA-JS
|
$(MAKE) clean -C WFA-JS
|
||||||
|
|
||||||
ensure-dist:
|
|
||||||
mkdir -p dist
|
|
||||||
|
|
||||||
workflow-init: ensure-dist build-web
|
|
||||||
cp -r dev_config/. .
|
|
||||||
@@ -13,7 +13,7 @@ ProxmoxAAS Dashboard provides users of a proxmox based compute on demand service
|
|||||||
|
|
||||||
## ProxmoxAAS System Installation Overview
|
## ProxmoxAAS System Installation Overview
|
||||||
|
|
||||||
The ProxmoxAAS project is large and is split into multiple components. There are four required components, the Dashboard, API, Fabric, and access-manager-api. The installation order should start with the Dashboard and then proceed to the other backend components. This will require some foresight into the setup process.
|
The ProxmoxAAS project is large and is split into multiple components. There are four required components, the Dashboard, API, Fabric, and access-manager-api. The instalation order should start with the Dashboard and then proceed to the other backend components. This will require some foresight into the setup process.
|
||||||
|
|
||||||
The supported setup is to use a reverse proxy to serve both the original Proxmox web interface and ProxmoxAAS components. It is possible other setups can work. Rather than provide specific steps to duplicate a certain setup, the steps included are intended as a guideline of steps required for proper function in most setups. Consequently, the examples provided are only to highlight key settings and do not represent complete working configurations. The instructions also assume you have your own domain name which will substitute `domain.net` in some of the configs.
|
The supported setup is to use a reverse proxy to serve both the original Proxmox web interface and ProxmoxAAS components. It is possible other setups can work. Rather than provide specific steps to duplicate a certain setup, the steps included are intended as a guideline of steps required for proper function in most setups. Consequently, the examples provided are only to highlight key settings and do not represent complete working configurations. The instructions also assume you have your own domain name which will substitute `domain.net` in some of the configs.
|
||||||
|
|
||||||
|
|||||||
+1
-1
Submodule WFA-JS updated: f53f344fb3...f8f8636cc3
+2
-4
@@ -6,7 +6,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"proxmoxaas-dashboard/app/common"
|
"proxmoxaas-dashboard/app/common"
|
||||||
"proxmoxaas-dashboard/app/routes"
|
"proxmoxaas-dashboard/app/routes"
|
||||||
"web" // go will complain here until the first build
|
"proxmoxaas-dashboard/dist/web" // go will complain here until the first build
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/tdewolff/minify/v2"
|
"github.com/tdewolff/minify/v2"
|
||||||
@@ -18,11 +18,9 @@ func Run() {
|
|||||||
|
|
||||||
common.Global = common.GetConfig(*configPath)
|
common.Global = common.GetConfig(*configPath)
|
||||||
|
|
||||||
// setup gin
|
// setup static resources
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
|
|
||||||
// setup static resources
|
|
||||||
m := common.InitMinify()
|
m := common.InitMinify()
|
||||||
ServeStatic(router, m)
|
ServeStatic(router, m)
|
||||||
html := common.MinifyStatic(m, web.Templates)
|
html := common.MinifyStatic(m, web.Templates)
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
web/modules/*
|
|
||||||
WFA-JS/*
|
|
||||||
dist/*
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
web/modules/*
|
|
||||||
WFA-JS/*
|
|
||||||
dist/*
|
|
||||||
@@ -1,33 +1,29 @@
|
|||||||
import { defineConfig, globalIgnores } from "eslint/config";
|
import { defineConfig } from "eslint/config";
|
||||||
import globals from "globals";
|
import globals from "globals";
|
||||||
import js from "@eslint/js";
|
import js from "@eslint/js";
|
||||||
|
|
||||||
export default defineConfig([
|
export default defineConfig([js.configs.recommended,{
|
||||||
js.configs.recommended,
|
languageOptions: {
|
||||||
globalIgnores(["dist/", "web/modules", "WFA-JS"]),
|
globals: {
|
||||||
{
|
...globals.browser,
|
||||||
languageOptions: {
|
|
||||||
globals: {
|
|
||||||
...globals.browser,
|
|
||||||
},
|
|
||||||
ecmaVersion: "latest",
|
|
||||||
sourceType: "module",
|
|
||||||
},
|
},
|
||||||
rules: {
|
ecmaVersion: "latest",
|
||||||
"no-tabs": ["error", {
|
sourceType: "module",
|
||||||
allowIndentationTabs: true,
|
},
|
||||||
}],
|
rules: {
|
||||||
indent: ["error", "tab"],
|
"no-tabs": ["error", {
|
||||||
"linebreak-style": ["error", "unix"],
|
allowIndentationTabs: true,
|
||||||
quotes: ["error", "double"],
|
}],
|
||||||
semi: ["error", "always"],
|
indent: ["error", "tab"],
|
||||||
"brace-style": ["error", "stroustrup", { allowSingleLine: false }],
|
"linebreak-style": ["error", "unix"],
|
||||||
"no-unused-vars": ["warn", {
|
quotes: ["error", "double"],
|
||||||
"argsIgnorePattern": "^_",
|
semi: ["error", "always"],
|
||||||
"varsIgnorePattern": "^_",
|
"brace-style": ["error", "stroustrup", { allowSingleLine: false }],
|
||||||
"caughtErrorsIgnorePattern": "^_"
|
"no-unused-vars": ["warn", {
|
||||||
}],
|
"argsIgnorePattern": "^_",
|
||||||
"prefer-const": ["error"]
|
"varsIgnorePattern": "^_",
|
||||||
},
|
"caughtErrorsIgnorePattern": "^_"
|
||||||
}
|
}],
|
||||||
]);
|
"prefer-const": ["error"]
|
||||||
|
},
|
||||||
|
}]);
|
||||||
@@ -1,26 +1,23 @@
|
|||||||
module proxmoxaas-dashboard
|
module proxmoxaas-dashboard
|
||||||
|
|
||||||
go 1.27.0
|
go 1.26.5
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/gerow/go-color v0.0.0-20140219113758-125d37f527f1
|
github.com/gerow/go-color v0.0.0-20140219113758-125d37f527f1
|
||||||
github.com/gin-gonic/gin v1.12.0
|
github.com/gin-gonic/gin v1.12.0
|
||||||
github.com/go-viper/mapstructure/v2 v2.5.0
|
github.com/go-viper/mapstructure/v2 v2.5.0
|
||||||
github.com/tdewolff/minify/v2 v2.24.17
|
github.com/tdewolff/minify/v2 v2.24.13
|
||||||
proxmoxaas-common-lib v0.0.0
|
proxmoxaas-common-lib v0.0.0
|
||||||
web v0.0.0
|
|
||||||
)
|
)
|
||||||
|
|
||||||
replace proxmoxaas-common-lib => ./proxmoxaas-common-lib
|
replace proxmoxaas-common-lib => ./proxmoxaas-common-lib
|
||||||
|
|
||||||
replace web => ./dist/web
|
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/bytedance/gopkg v0.1.4 // indirect
|
github.com/bytedance/gopkg v0.1.4 // indirect
|
||||||
github.com/bytedance/sonic v1.15.2 // indirect
|
github.com/bytedance/sonic v1.15.2 // indirect
|
||||||
github.com/bytedance/sonic/loader v0.5.2 // indirect
|
github.com/bytedance/sonic/loader v0.5.1 // indirect
|
||||||
github.com/cloudwego/base64x v0.1.7 // indirect
|
github.com/cloudwego/base64x v0.1.7 // indirect
|
||||||
github.com/gabriel-vasile/mimetype v1.4.15 // indirect
|
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
|
||||||
github.com/gin-contrib/sse v1.1.1 // indirect
|
github.com/gin-contrib/sse v1.1.1 // indirect
|
||||||
github.com/go-playground/locales v0.14.1 // indirect
|
github.com/go-playground/locales v0.14.1 // indirect
|
||||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||||
@@ -29,21 +26,21 @@ require (
|
|||||||
github.com/goccy/go-yaml v1.19.2 // indirect
|
github.com/goccy/go-yaml v1.19.2 // indirect
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.4.0 // indirect
|
github.com/klauspost/cpuid/v2 v2.4.0 // indirect
|
||||||
github.com/leodido/go-urn v1.5.0 // indirect
|
github.com/leodido/go-urn v1.4.0 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.24 // indirect
|
github.com/mattn/go-isatty v0.0.23 // indirect
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.4.3 // indirect
|
github.com/pelletier/go-toml/v2 v2.4.3 // indirect
|
||||||
github.com/quic-go/qpack v0.6.0 // indirect
|
github.com/quic-go/qpack v0.6.0 // indirect
|
||||||
github.com/quic-go/quic-go v0.61.0 // indirect
|
github.com/quic-go/quic-go v0.60.0 // indirect
|
||||||
github.com/tdewolff/parse/v2 v2.8.16 // indirect
|
github.com/tdewolff/parse/v2 v2.8.13 // indirect
|
||||||
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
|
||||||
github.com/ugorji/go/codec v1.3.2 // indirect
|
github.com/ugorji/go/codec v1.3.1 // indirect
|
||||||
go.mongodb.org/mongo-driver/v2 v2.8.1 // indirect
|
go.mongodb.org/mongo-driver/v2 v2.8.0 // indirect
|
||||||
golang.org/x/arch v0.30.0 // indirect
|
golang.org/x/arch v0.29.0 // indirect
|
||||||
golang.org/x/crypto v0.55.0 // indirect
|
golang.org/x/crypto v0.54.0 // indirect
|
||||||
golang.org/x/net v0.58.0 // indirect
|
golang.org/x/net v0.57.0 // indirect
|
||||||
golang.org/x/sys v0.47.0 // indirect
|
golang.org/x/sys v0.47.0 // indirect
|
||||||
golang.org/x/text v0.41.0 // indirect
|
golang.org/x/text v0.40.0 // indirect
|
||||||
google.golang.org/protobuf v1.36.12 // indirect
|
google.golang.org/protobuf v1.36.11 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "proxmoxaas-dashboard",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Front-end for ProxmoxAAS",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"lint": "html-validate --config dev_config/.htmlvalidate.json web/html/*; stylelint --config dev_config/.stylelintrc.json --formatter verbose --fix web/css/*.css; DEBUG=eslint:cli-engine eslint --config dev_config/eslint.config.mjs --fix web/scripts/"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@eslint/eslintrc": "^3.3.5",
|
||||||
|
"@eslint/js": "^10.0.1",
|
||||||
|
"eslint": "^10.2.1",
|
||||||
|
"globals": "^17.5.0",
|
||||||
|
"html-validate": "^9.4.0",
|
||||||
|
"stylelint": "^15.9.0",
|
||||||
|
"stylelint-config-standard": "^33.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
Submodule proxmoxaas-common-lib updated: 8284ffbc43...f4deeb1ab6
+3
-3
@@ -191,18 +191,18 @@ hr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* add hide large class similar to w3-hide-medium and w3-hide-small */
|
/* add hide large class similar to w3-hide-medium and w3-hide-small */
|
||||||
@media screen and (width >= 993px) {
|
@media screen and (width >=993px) {
|
||||||
.hide-large {display: none !important;}
|
.hide-large {display: none !important;}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fixes edge case in w3-hide-medium where width between 992 and 993 */
|
/* fixes edge case in w3-hide-medium where width between 992 and 993 */
|
||||||
@media screen and (width <= 993px) and (width >= 601px){
|
@media screen and (width <=993px) and (width >=601px){
|
||||||
.hide-large {display: none !important;}
|
.hide-large {display: none !important;}
|
||||||
.hide-medium {display:none !important}
|
.hide-medium {display:none !important}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fixes edge case in w3-hide-small when width between 600 and 601 */
|
/* fixes edge case in w3-hide-small when width between 600 and 601 */
|
||||||
@media screen and (width <= 601px) and (width >= 440px) {
|
@media screen and (width <=601px) {
|
||||||
.hide-large {display: none !important;}
|
.hide-large {display: none !important;}
|
||||||
.hide-medium {display:none !important}
|
.hide-medium {display:none !important}
|
||||||
.hide-small {display:none !important}
|
.hide-small {display:none !important}
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
module web
|
|
||||||
|
|
||||||
go 1.26.0
|
|
||||||
@@ -58,14 +58,14 @@
|
|||||||
<div id="body">
|
<div id="body">
|
||||||
<form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form">
|
<form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form">
|
||||||
<label for="new-password">New Password</label>
|
<label for="new-password">New Password</label>
|
||||||
<input class="w3-input w3-border" id="new-password" name="new-password" type="password" autocomplete="new-password" required>
|
<input class="w3-input w3-border" id="new-password" name="new-password" type="password" required>
|
||||||
<label for="confirm-password">Confirm Password</label>
|
<label for="confirm-password">Confirm Password</label>
|
||||||
<input class="w3-input w3-border" id="confirm-password" name="confirm-password" type="password" autocomplete="new-password" required>
|
<input class="w3-input w3-border" id="confirm-password" name="confirm-password" type="password" required>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="controls" class="w3-center w3-container">
|
<div id="controls" class="w3-center w3-container">
|
||||||
<button id="cancel" type="submit" value="cancel" form="form" class="w3-button w3-margin" formnovalidate>CANCEL</button>
|
<button id="cancel" type="submit" value="cancel" form="form" class="w3-button w3-margin" formnovalidate>CANCEL</button>
|
||||||
<button id="confirm" type="submit" value="confirm" form="form" class="w3-button w3-margin">CONFIRM</button>
|
<button id="confirm" type="submit" value="confirm" form="form" class="w3-button w3-margin" >CONFIRM</button>
|
||||||
</div>
|
</div>
|
||||||
</dialog>
|
</dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
+2
-2
@@ -114,9 +114,9 @@
|
|||||||
<label class="container-specific none" for="rootfs-size">ROOTFS Size (GiB)</label>
|
<label class="container-specific none" for="rootfs-size">ROOTFS Size (GiB)</label>
|
||||||
<input class="w3-input w3-border container-specific none" name="rootfs-size" id="rootfs-size" type="number" min="0" max="131072" required disabled>
|
<input class="w3-input w3-border container-specific none" name="rootfs-size" id="rootfs-size" type="number" min="0" max="131072" required disabled>
|
||||||
<label class="container-specific none" for="password">Password</label>
|
<label class="container-specific none" for="password">Password</label>
|
||||||
<input class="w3-input w3-border container-specific none" name="password" id="password" type="password" autocomplete="new-password" required disabled>
|
<input class="w3-input w3-border container-specific none" name="password" id="password" type="password" required disabled>
|
||||||
<label class="container-specific none" for="confirm-password">Confirm Password</label>
|
<label class="container-specific none" for="confirm-password">Confirm Password</label>
|
||||||
<input class="w3-input w3-border container-specific none" name="confirm-password" id="confirm-password" type="password" autocomplete="new-password" required disabled>
|
<input class="w3-input w3-border container-specific none" name="confirm-password" id="confirm-password" type="password" required disabled>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="controls" class="w3-center w3-container">
|
<div id="controls" class="w3-center w3-container">
|
||||||
|
|||||||
+1
-1
@@ -560,7 +560,7 @@ export default function init (path) {
|
|||||||
const wasm = obj.instance;
|
const wasm = obj.instance;
|
||||||
global.wfa = wasm
|
global.wfa = wasm
|
||||||
go.run(wasm);
|
go.run(wasm);
|
||||||
res(wasm)
|
res()
|
||||||
}
|
}
|
||||||
if ('instantiateStreaming' in WebAssembly) {
|
if ('instantiateStreaming' in WebAssembly) {
|
||||||
WebAssembly.instantiateStreaming(fetch(path), go.importObject).then(function (obj) {
|
WebAssembly.instantiateStreaming(fetch(path), go.importObject).then(function (obj) {
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class ErrorDialog extends HTMLElement {
|
|||||||
}
|
}
|
||||||
navigator.clipboard.writeText(errors);
|
navigator.clipboard.writeText(errors);
|
||||||
}
|
}
|
||||||
this.dialog.close();
|
this.parentElement.removeChild(this);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,10 @@ import wfaInit from "../modules/wfa.js";
|
|||||||
|
|
||||||
window.addEventListener("DOMContentLoaded", init);
|
window.addEventListener("DOMContentLoaded", init);
|
||||||
|
|
||||||
var wfa;
|
|
||||||
|
|
||||||
async function init () {
|
async function init () {
|
||||||
setAppearance();
|
setAppearance();
|
||||||
|
|
||||||
wfa = await wfaInit("modules/wfa.wasm");
|
wfaInit("modules/wfa.wasm");
|
||||||
initInstances();
|
initInstances();
|
||||||
|
|
||||||
document.querySelector("#instance-add").addEventListener("click", handleInstanceAddButton);
|
document.querySelector("#instance-add").addEventListener("click", handleInstanceAddButton);
|
||||||
@@ -274,8 +272,8 @@ function sortInstances () {
|
|||||||
};
|
};
|
||||||
criteria = (item, query) => {
|
criteria = (item, query) => {
|
||||||
// lower is better
|
// lower is better
|
||||||
const { score, CIGAR } = wfa.wfAlign(query, item, penalties, true);
|
const { score, CIGAR } = global.wfa.wfAlign(query, item, penalties, true);
|
||||||
const alignment = wfa.DecodeCIGAR(CIGAR);
|
const alignment = global.wfa.DecodeCIGAR(CIGAR);
|
||||||
return { score: score / item.length, alignment };
|
return { score: score / item.length, alignment };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ window.addEventListener("DOMContentLoaded", init);
|
|||||||
async function init () {
|
async function init () {
|
||||||
await deleteAllCookies();
|
await deleteAllCookies();
|
||||||
setAppearance();
|
setAppearance();
|
||||||
|
|
||||||
const formSubmitButton = document.querySelector("#submit");
|
const formSubmitButton = document.querySelector("#submit");
|
||||||
formSubmitButton.addEventListener("click", async (e) => {
|
formSubmitButton.addEventListener("click", async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{/* <head> common across all pages */}}
|
{{/* <head> common across all pages*/}}
|
||||||
{{define "head"}}
|
{{define "head"}}
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
<link rel="stylesheet" href="css/form.css">
|
<link rel="stylesheet" href="css/form.css">
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{/* <header> common across all pages */}}
|
{{/* <header> common across all pages*/}}
|
||||||
{{define "header"}}
|
{{define "header"}}
|
||||||
<header>
|
<header>
|
||||||
<h1>{{.global.Organization}}</h1>
|
<h1>{{.global.Organization}}</h1>
|
||||||
|
|||||||
Reference in New Issue
Block a user