-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Release 2.0.2 * Task/fix bug delete stage (#1027) * Fix bug at backstage can not delete stage * Fix Bug Studio UI load file i18n form dashboard get 403 code * Task/fix statis duplicate delete (#1040) * Move button Clone, Delete from Stage to Stage Management * Update Code Sort by Created Date and Id DESC * FIx bug statistics worng * sort by created date decs * fix bug statistics wrong * debug fix statistics on dev-app env * debug fix statistics wrong * debug * debug * debug * Fix bug Created_on have the same date after clone * change "manage stage" to "manage" * Check upload file limit on studio * implement player upload limit enhancement * Update format size * Fix does not return to start at end of playing (once mode) * Add Create_On and last access in backstage * add create date and last access on backstage * delete notify * update "without time zone" Co-authored-by: TU_COMPUTER\justr <nhtu160220@gmail.com> * make clear chat to clear player and public chat on stage- clear all chat in clear chat button in stage management (#1042) * Merge branch 'main' into BlueMoon-2.0.2 * make save chat option on stage (#1048) * Make separate chat log and make timestamp for file name (#1045) * Rebase * Update mail_utils.py Need a more forgiving encoding scheme. * Make owner display name in player and edit access column (#1051) Co-authored-by: fuyloon2018 <62701756+fuyloon2018@users.noreply.github.com> Co-authored-by: TU_COMPUTER\justr <nhtu160220@gmail.com> Co-authored-by: tunguyentk <117065175+tunguyentk@users.noreply.github.com> Co-authored-by: Jamse Liew <liew2018@gmail.com>
- Loading branch information
1 parent
ddbfa32
commit fc477e4
Showing
18 changed files
with
662 additions
and
144 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Edit this file to introduce tasks to be run by cron. | ||
# | ||
# Each task to run has to be defined through a single line | ||
# indicating with different fields when the task will be run | ||
# and what command to run for the task | ||
# | ||
# To define the time you can provide concrete values for | ||
# minute (m), hour (h), day of month (dom), month (mon), | ||
# and day of week (dow) or use '*' in these fields (for 'any'). | ||
# | ||
# Notice that tasks will be started based on the cron's system | ||
# daemon's notion of time and timezones. | ||
# | ||
# Output of the crontab jobs (including errors) is sent through | ||
# email to the user the crontab file belongs to (unless redirected). | ||
# | ||
# For example, you can run a backup of all your user accounts | ||
# at 5 a.m every week with: | ||
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ | ||
# | ||
# For more information see the manual pages of crontab(5) and cron(8) | ||
# | ||
# m h dom mon dow command | ||
30 2 * * 1 certbot renew --post-hook "cp /etc/letsencrypt/live/svc1.upstage.org.nz/* /etc/mosquitto/ca_certificates && chown -R mosquitto:mosquitto /etc/mosquitto/ca_certificates && systemctl reload mosquitto.service" >> /var/log/le-renew.log 2>&1 | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
182 changes: 182 additions & 0 deletions
182
ui/dashboard/src/components/MultiTransferAccessColumn.vue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
<template> | ||
<div class="columns"> | ||
<template v-for="(column, i) in columns" :key="column"> | ||
<div class="column"> | ||
<article class="panel is-light"> | ||
<p class="panel-heading"> | ||
{{ column }} | ||
<span class="tag is-primary"> | ||
{{i==(columns.length-1)? count(i)+1: count(i) }} | ||
</span> | ||
</p> | ||
<div class="panel-heading pt-0"> | ||
<p class="control has-icons-left"> | ||
<input | ||
class="input is-primary" | ||
type="text" | ||
placeholder="Search" | ||
v-model="searchs[i]" | ||
/> | ||
<span class="icon is-left"> | ||
<i class="fas fa-search" aria-hidden="true"></i> | ||
</span> | ||
</p> | ||
</div> | ||
<div class="panel-body"> | ||
<a | ||
v-if="i==(columns.length-1)" | ||
class="panel-block owner" | ||
> | ||
{{ renderLabel(owner) }} | ||
<p class="panel-tag">owner</p> | ||
</a> | ||
<template v-for="(item, j) in data" :key="renderValue(item)"> | ||
<a | ||
v-if="shouldVisible(j, i)" | ||
class="panel-block" | ||
@click="moveRight(j)" | ||
@contextmenu.prevent="moveLeft(j)" | ||
> | ||
{{ renderLabel(item) }} | ||
</a> | ||
</template> | ||
</div> | ||
</article> | ||
</div> | ||
<div class="column is-narrow px-0" v-if="i < columns.length - 1"> | ||
<button class="button is-primary is-small" @click="moveAll(i, i + 1)"> | ||
<i class="fas fa-angle-double-right"></i> | ||
</button> | ||
<br /> | ||
<br /> | ||
<button class="button is-primary is-small" @click="moveAll(i + 1, i)"> | ||
<i class="fas fa-angle-double-left"></i> | ||
</button> | ||
</div> | ||
</template> | ||
</div> | ||
</template> | ||
|
||
<script> | ||
import { reactive } from "@vue/reactivity"; | ||
import { watch } from "@vue/runtime-core"; | ||
import { includesIgnoreCase } from "@/utils/common"; | ||
export default { | ||
props: { | ||
columns: Number, | ||
modelValue: Array, | ||
data: { type: Array, default: () => [] }, | ||
owner: Object, | ||
renderLabel: { | ||
type: Function, | ||
default: (item) => item, | ||
}, | ||
renderValue: { | ||
type: Function, | ||
default: (item) => item, | ||
}, | ||
renderKeywords: Function, | ||
}, | ||
emits: ["update:modelValue"], | ||
setup: (props, { emit }) => { | ||
const positions = reactive([]); | ||
const searchs = reactive([]); | ||
const matchSearch = (item, column) => { | ||
if (!searchs[column]) { | ||
return true; | ||
} | ||
const transform = props.renderKeywords ?? props.renderLabel; | ||
return includesIgnoreCase(transform(props.data[item]), searchs[column]); | ||
}; | ||
const shouldVisible = (item, column) => { | ||
return (positions[item] ?? 0) === column && matchSearch(item, column); | ||
}; | ||
const moveRight = (item) => { | ||
let currentPosition = positions[item] ?? 0; | ||
if (currentPosition < props.columns.length - 1) { | ||
positions[item] = currentPosition + 1; | ||
} | ||
}; | ||
const moveLeft = (item) => { | ||
positions[item] = (positions[item] ?? 1) - 1; | ||
}; | ||
watch(positions, () => { | ||
let res = []; | ||
for (let i = 1; i < props.columns.length; i++) { | ||
if (!res[i - 1]) { | ||
res[i - 1] = []; | ||
} | ||
for (let j = 0; j < props.data.length; j++) { | ||
if (positions[j] === i) { | ||
res[i - 1].push(props.renderValue(props.data[j])); | ||
} | ||
} | ||
} | ||
emit("update:modelValue", res); | ||
}); | ||
watch( | ||
[() => props.modelValue, () => props.data], | ||
([val]) => { | ||
if (props.data) { | ||
for (let i = 0; i < val.length; i++) { | ||
for (let j = 0; j < (val[i] ?? []).length; j++) { | ||
positions[ | ||
props.data.findIndex( | ||
(item) => props.renderValue(item) === val[i][j] | ||
) | ||
] = i + 1; | ||
} | ||
} | ||
} | ||
}, | ||
{ immediate: true } | ||
); | ||
const count = (i) => | ||
props.data | ||
? props.data.filter((item, p) => (positions[p] ?? 0) === i).length | ||
: 0; | ||
const moveAll = (from, to) => { | ||
for (let i = 0; i < props.data.length; i++) { | ||
if ((positions[i] ?? 0) === from && shouldVisible(i, from)) { | ||
positions[i] = to; | ||
} | ||
} | ||
}; | ||
return { shouldVisible, moveRight, moveLeft, count, searchs, moveAll }; | ||
}, | ||
}; | ||
</script> | ||
<style scoped> | ||
article.panel { | ||
width: 100%; | ||
} | ||
.panel-heading { | ||
font-size: unset; | ||
} | ||
.panel-body { | ||
max-height: 50vh; | ||
overflow-y: auto !important; | ||
} | ||
.panel-block.owner{ | ||
position: relative; | ||
background-color: #00000015; | ||
} | ||
.panel-tag{ | ||
position: absolute; | ||
background-color: #007011; | ||
font-size: 0.8rem; | ||
color: #fff; | ||
padding:0 5px; | ||
right: 10px; | ||
} | ||
</style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<template> | ||
<button | ||
class="button is-primary" | ||
:class="{ 'is-loading': loading }" | ||
v-bind="$attrs" | ||
> | ||
<slot> | ||
<span class="icon is-small"> | ||
<i class="fas fa-download"></i> | ||
</span> | ||
<span>{{ $t("download") }}</span> | ||
</slot> | ||
</button> | ||
</template> | ||
|
||
<script> | ||
export default { | ||
props: ["loading"], | ||
}; | ||
</script> | ||
|
||
<style scoped> | ||
.button { | ||
margin-left: auto; | ||
display: block; | ||
} | ||
</style> |
Oops, something went wrong.