feat: add trigger sort
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
let open = false
|
let open = false
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="w-full flex flex-col pt-2 mt-2 border-t border-t-selected first:pt-0 first:mt-0 first:border-0" data-risu-idx={idx}>
|
<div class="w-full flex flex-col pt-2 mt-2 border-t border-t-selected first:pt-0 first:mt-0 first:border-0" data-risu-idx2={idx}>
|
||||||
<div class="flex items-center transition-colors w-full ">
|
<div class="flex items-center transition-colors w-full ">
|
||||||
<button class="endflex valuer border-borderc" on:click={() => {
|
<button class="endflex valuer border-borderc" on:click={() => {
|
||||||
open = !open
|
open = !open
|
||||||
|
|||||||
@@ -3,8 +3,60 @@
|
|||||||
import TriggerData from "./TriggerData.svelte";
|
import TriggerData from "./TriggerData.svelte";
|
||||||
export let value:triggerscript[] = []
|
export let value:triggerscript[] = []
|
||||||
export let lowLevelAble = false
|
export let lowLevelAble = false
|
||||||
|
import Sortable from "sortablejs";
|
||||||
|
import { sleep, sortableOptions } from "src/ts/util";
|
||||||
|
import { onDestroy, onMount } from "svelte";
|
||||||
|
let stb: Sortable = null
|
||||||
let ele: HTMLDivElement
|
let ele: HTMLDivElement
|
||||||
let sorted = 0
|
let sorted = 0
|
||||||
|
let opened = 0
|
||||||
|
const createStb = () => {
|
||||||
|
stb = Sortable.create(ele, {
|
||||||
|
onEnd: async () => {
|
||||||
|
let idx:number[] = []
|
||||||
|
ele.querySelectorAll('[data-risu-idx2]').forEach((e, i) => {
|
||||||
|
idx.push(parseInt(e.getAttribute('data-risu-idx2')))
|
||||||
|
})
|
||||||
|
let newValue:triggerscript[] = []
|
||||||
|
idx.forEach((i) => {
|
||||||
|
newValue.push(value[i])
|
||||||
|
})
|
||||||
|
value = newValue
|
||||||
|
try {
|
||||||
|
stb.destroy()
|
||||||
|
} catch (error) {}
|
||||||
|
sorted += 1
|
||||||
|
await sleep(1)
|
||||||
|
createStb()
|
||||||
|
},
|
||||||
|
...sortableOptions
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const onOpen = () => {
|
||||||
|
opened += 1
|
||||||
|
if(stb){
|
||||||
|
try {
|
||||||
|
stb.destroy()
|
||||||
|
} catch (error) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const onClose = () => {
|
||||||
|
opened -= 1
|
||||||
|
if(opened === 0){
|
||||||
|
createStb()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(createStb)
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
if(stb){
|
||||||
|
try {
|
||||||
|
stb.destroy()
|
||||||
|
} catch (error) {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -14,7 +66,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{#key sorted}
|
{#key sorted}
|
||||||
{#each value as triggerscript, i}
|
{#each value as triggerscript, i}
|
||||||
<TriggerData idx={i} bind:value={value[i]} lowLevelAble={lowLevelAble} onRemove={() => {
|
<TriggerData idx={i} bind:value={value[i]} lowLevelAble={lowLevelAble} onOpen={onOpen} onClose={onClose} onRemove={() => {
|
||||||
let triggerscript = value
|
let triggerscript = value
|
||||||
triggerscript.splice(i, 1)
|
triggerscript.splice(i, 1)
|
||||||
value = triggerscript
|
value = triggerscript
|
||||||
|
|||||||
Reference in New Issue
Block a user