put app back on app.dexorder.com and corp site on dexorder.com with www redirecting to apex
This commit is contained in:
@@ -1,2 +1,2 @@
|
|||||||
VITE_WS_URL=wss://ws.dexorder.com
|
VITE_WS_URL=wss://ws.dexorder.com
|
||||||
VITE_SHARE_URL=https://dexorder.com
|
VITE_SHARE_URL=https://app.dexorder.com
|
||||||
|
|||||||
142
src/components/FloatingDiv.vue
Normal file
142
src/components/FloatingDiv.vue
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
ref="floatingDiv"
|
||||||
|
:style="divStyle"
|
||||||
|
@mousedown="startDrag"
|
||||||
|
>
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted, onBeforeUnmount } from 'vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
id: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const floatingDiv = ref(null);
|
||||||
|
const position = reactive({ x: 0, y: 0 });
|
||||||
|
const isDragging = ref(false);
|
||||||
|
const isFloating = ref(false);
|
||||||
|
const dragStartOffset = reactive({ x: 0, y: 0 });
|
||||||
|
|
||||||
|
const divStyle = reactive({
|
||||||
|
position: "",
|
||||||
|
top: "",
|
||||||
|
left: "",
|
||||||
|
zIndex: "",
|
||||||
|
cursor: "default",
|
||||||
|
});
|
||||||
|
|
||||||
|
let activeComponent = null;
|
||||||
|
|
||||||
|
function positionKey() {
|
||||||
|
return props.id ? `floating-div-pos:${props.id}` : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function savePosition() {
|
||||||
|
if (props.id) {
|
||||||
|
localStorage.setItem(
|
||||||
|
positionKey(),
|
||||||
|
JSON.stringify({ x: position.x, y: position.y })
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadPosition() {
|
||||||
|
if (props.id) {
|
||||||
|
const data = localStorage.getItem(positionKey());
|
||||||
|
if (data) {
|
||||||
|
try {
|
||||||
|
const { x, y } = JSON.parse(data);
|
||||||
|
position.x = x;
|
||||||
|
position.y = y;
|
||||||
|
divStyle.position = "fixed";
|
||||||
|
divStyle.top = `${position.y}px`;
|
||||||
|
divStyle.left = `${position.x}px`;
|
||||||
|
divStyle.zIndex = 9999;
|
||||||
|
isFloating.value = true;
|
||||||
|
} catch {
|
||||||
|
// Ignore corrupted data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const startDrag = (event) => {
|
||||||
|
if (event.shiftKey || event.ctrlKey) {
|
||||||
|
if (!isFloating.value) {
|
||||||
|
const rect = floatingDiv.value.getBoundingClientRect();
|
||||||
|
position.x = rect.left;
|
||||||
|
position.y = rect.top;
|
||||||
|
divStyle.position = "fixed";
|
||||||
|
divStyle.top = `${position.y}px`;
|
||||||
|
divStyle.left = `${position.x}px`;
|
||||||
|
divStyle.zIndex = 9999;
|
||||||
|
isFloating.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
isDragging.value = true;
|
||||||
|
dragStartOffset.x = event.clientX - position.x;
|
||||||
|
dragStartOffset.y = event.clientY - position.y;
|
||||||
|
divStyle.cursor = "move";
|
||||||
|
document.body.style.userSelect = "none";
|
||||||
|
|
||||||
|
activeComponent = floatingDiv;
|
||||||
|
|
||||||
|
window.addEventListener("mousemove", handleDrag);
|
||||||
|
window.addEventListener("mouseup", stopDrag);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDrag = (event) => {
|
||||||
|
if (isDragging.value && activeComponent === floatingDiv) {
|
||||||
|
position.x = event.clientX - dragStartOffset.x;
|
||||||
|
position.y = event.clientY - dragStartOffset.y;
|
||||||
|
divStyle.top = `${position.y}px`;
|
||||||
|
divStyle.left = `${position.x}px`;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const stopDrag = () => {
|
||||||
|
if (isDragging.value && activeComponent === floatingDiv) {
|
||||||
|
isDragging.value = false;
|
||||||
|
divStyle.cursor = "default";
|
||||||
|
document.body.style.userSelect = "auto";
|
||||||
|
activeComponent = null;
|
||||||
|
|
||||||
|
savePosition();
|
||||||
|
|
||||||
|
window.removeEventListener("mousemove", handleDrag);
|
||||||
|
window.removeEventListener("mouseup", stopDrag);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleOutsideDrag = (event) => {
|
||||||
|
if (event.key === "Shift" || event.key === "Control") {
|
||||||
|
stopDrag();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
document.addEventListener("keyup", handleOutsideDrag);
|
||||||
|
loadPosition();
|
||||||
|
});
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
document.removeEventListener("keyup", handleOutsideDrag);
|
||||||
|
window.removeEventListener("mousemove", handleDrag);
|
||||||
|
window.removeEventListener("mouseup", stopDrag);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div[ref="floatingDiv"] {
|
||||||
|
background: rgba(255, 255, 255, 0.8);
|
||||||
|
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<v-card-text class="text-center">Last Updated November 18, 2024</v-card-text>
|
<v-card-text class="text-center">Last Updated November 18, 2024</v-card-text>
|
||||||
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
Please read these Terms of Service (the “<b>Terms</b>”) and our <a href="https://www.dexorder.com/privacy-policy" target="dexorder">Privacy Policy</a> carefully because they govern your
|
Please read these Terms of Service (the “<b>Terms</b>”) and our <a href="https://dexorder.com/privacy-policy" target="dexorder">Privacy Policy</a> carefully because they govern your
|
||||||
use of the
|
use of the
|
||||||
website (and all subdomains and subpages thereon) located at dexorder.com, including without limitation the
|
website (and all subdomains and subpages thereon) located at dexorder.com, including without limitation the
|
||||||
subdomains app.dexorder.com and www.dexorder.com (collectively, the “<b>Site</b>”), and the Dexorder web
|
subdomains app.dexorder.com and www.dexorder.com (collectively, the “<b>Site</b>”), and the Dexorder web
|
||||||
@@ -205,7 +205,7 @@
|
|||||||
(i) Subject to your compliance with these Terms, Dexorder will use its commercially
|
(i) Subject to your compliance with these Terms, Dexorder will use its commercially
|
||||||
reasonable efforts to provide you with access to the Dexorder Service and to cause your Interactions to be
|
reasonable efforts to provide you with access to the Dexorder Service and to cause your Interactions to be
|
||||||
executed on the applicable DEX in accordance with Dexorder’s Execution Policy located at
|
executed on the applicable DEX in accordance with Dexorder’s Execution Policy located at
|
||||||
<a href="https://www.dexorder.com/execution-policy">https://www.dexorder.com/execution-policy</a>
|
<a href="https://dexorder.com/execution-policy">https://dexorder.com/execution-policy</a>
|
||||||
(“<b>Execution Policy</b>”), however from time to time the Site and the Dexorder Service may be inaccessible or
|
(“<b>Execution Policy</b>”), however from time to time the Site and the Dexorder Service may be inaccessible or
|
||||||
inoperable for any
|
inoperable for any
|
||||||
reason, including, without limitation: (a) if an Interaction repeatedly fails to be executed (such as due to an
|
reason, including, without limitation: (a) if an Interaction repeatedly fails to be executed (such as due to an
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ function tryIt() {
|
|||||||
|
|
||||||
function learnMore() {
|
function learnMore() {
|
||||||
track('learn-more')
|
track('learn-more')
|
||||||
window.open('https://www.dexorder.com/introduction.html', 'dexorderwww')
|
window.open('https://dexorder.com/introduction.html', 'dexorderwww')
|
||||||
modelValue.value = false
|
modelValue.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<toolbar-button tooltip="Assets" icon="mdi-currency-btc" route="Assets"/>
|
<toolbar-button tooltip="Assets" icon="mdi-currency-btc" route="Assets"/>
|
||||||
<!-- mdi-format-list-checks mdi-format-list-bulleted-square -->
|
<!-- mdi-format-list-checks mdi-format-list-bulleted-square -->
|
||||||
<toolbar-button tooltip="Status" icon="mdi-format-list-checks" route="Status"/>
|
<toolbar-button tooltip="Status" icon="mdi-format-list-checks" route="Status"/>
|
||||||
<toolbar-button tooltip="About" icon="mdi-information-outline" href="https://www.dexorder.com/" target="dexorderwww"/>
|
<toolbar-button tooltip="About" icon="mdi-information-outline" href="https://dexorder.com/" target="dexorderwww"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
function openApp() {
|
function openApp() {
|
||||||
window.open('https://dexorder.com/', 'dexorderapp')
|
window.open('https://app.dexorder.com/', 'dexorderapp')
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import {router} from "@/router/router.js";
|
|||||||
const theme = useTheme().current
|
const theme = useTheme().current
|
||||||
|
|
||||||
function openApp() {
|
function openApp() {
|
||||||
window.open('https://dexorder.com/', 'dexorderapp')
|
window.open('https://app.dexorder.com/', 'dexorderapp')
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user