Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
284a5da
[fix] 优化动画效果逻辑
VecHK Dec 25, 2023
8bde401
[add] 支持手机访问
VecHK Dec 25, 2023
08a203d
[adjust] 优化提交按钮的UI
VecHK Dec 25, 2023
a80ab77
[adjust] '感谢你的参与'改为'大感谢'
VecHK Dec 26, 2023
806e9f8
[improve] WaitingInputFrame 采用钩子写法
VecHK Dec 26, 2023
360e518
[improve] loading-wrapper 包装为组件
VecHK Dec 26, 2023
8f1beb2
[fix] CI Warning
VecHK Dec 26, 2023
24195e4
[add] “听说你在下周参加投票”,这个“下周”不要硬编码,要依据相册的时间来说
VecHK Dec 26, 2023
a9b72ff
[add] 无人参赛的时候,对话要有点不同
VecHK Dec 26, 2023
a47cdcb
[fix] equalYearMonthDay 没有考虑到时区的问题
VecHK Dec 27, 2023
35a453d
[fix] 关屏效果异常的问题
VecHK Dec 27, 2023
0a05846
[improve] 优化写法 & 删除 SubmissionContextValue 的定义
VecHK Dec 27, 2023
6d4ec09
[fix] shuffleArray 排序偏差
VecHK Dec 27, 2023
ed15556
[add] 相片列表页要能显示投稿数
VecHK Dec 28, 2023
ac9df95
[improve] FailureLayout 也要考虑出现加载失败的情况,这时候就不要考虑什么字体美观度了,能显示出错误信息才重要
VecHK Dec 29, 2023
e348313
[improve] use nullish operator
VecHK Dec 29, 2023
a76f878
[improve] update eslint/typescript-eslint
VecHK Dec 29, 2023
4af500a
[fix] dart-sass warning
VecHK Dec 29, 2023
d132d56
update lockfile
VecHK Dec 29, 2023
a1dec72
upgrade react-scripts
VecHK Dec 29, 2023
d12d92c
[fix] 投票后投票按钮仍然显示的问题
VecHK Dec 31, 2023
8d4704a
[improve] sortByIDList move to utils/common
VecHK Dec 31, 2023
9b9d447
[improve] utils
VecHK Jan 1, 2024
d0f3a21
[add] 投稿文字说明
VecHK Jan 1, 2024
e52dfe1
[improve] useMeasure move to src/hooks/
VecHK Jan 1, 2024
de8c2a3
[improve] 更精确一些的模块导入
VecHK Jan 1, 2024
2ef795c
[fix] 不显示ConfirmVote的问题
VecHK Jan 1, 2024
2d48c72
[adjust] 提交投票按钮改为拟物风格
VecHK Jan 1, 2024
6b6c2bb
[fix] showClassName & hideClassName 写混的问题
VecHK Jan 1, 2024
70bdd20
[adjust] ConfirmQQ 的切换逻辑
VecHK Jan 1, 2024
934e513
[fix] useMeasure 要考虑异步操作的情况
VecHK Jan 1, 2024
543c059
[fix] 图片说明文字框里全是数字时无法断开的问题
VecHK Jan 1, 2024
a64d08b
[fix] usePhotoBox 中使用钩子导致出错的问题
VecHK Jan 1, 2024
b7f878b
[fix] PhototBox 的编排没有考虑到margin-bottom的问题
VecHK Jan 1, 2024
0696419
[adjust] 回滚回以前的布局算法,现在的死循环
VecHK Jan 2, 2024
6fd58ae
[adjust] 回滚回以前的布局算法,现在的死循环
VecHK Jan 2, 2024
174af26
[adjust] 重写瀑布流布局逻辑
VecHK Jan 2, 2024
434312c
[fix] 消除瀑布流闪烁的问题
VecHK Jan 2, 2024
0e2285f
[improve] 优化自适应布局
VecHK Jan 2, 2024
68f74c4
[improve] 重写计算布局的逻辑
VecHK Jan 2, 2024
f4a15fc
[improve] src/components/PhotoStream -> src/components/Waterfall
VecHK Jan 2, 2024
bc7fa6b
[improve] 优化写法
VecHK Jan 2, 2024
8dba782
[fix] Waterfail 空列表时的占位组件的高度
VecHK Jan 4, 2024
1237399
[fix] 【成员投票情况页】在筛选后点击设置重投所选定的成员不正确的问题
VecHK Jan 4, 2024
3c03f05
[adjust] 成员投票情况页 总人数、已投、未投 的按钮改成文字按钮
VecHK Jan 4, 2024
9575f3f
[fix] typo
VecHK Jan 4, 2024
d4137f9
[fix] smartisan TNT CSS Color Module Level 4 bug report by @DieMoe233
VecHK Jan 4, 2024
41c950e
[adjust] 大于2100屏幕宽度的布局调整
VecHK Jan 5, 2024
769732d
[add] vote button 'cannot vote' effect
VecHK Jan 5, 2024
9c932f0
[improve] DRY
VecHK Jan 5, 2024
f83c6fa
hideVoteButton -> show_vote_button
VecHK Jan 5, 2024
1c78906
[imrpove] DRY
VecHK Jan 5, 2024
f77acd2
[fix] photo loading priority
VecHK Jan 5, 2024
2acaca8
[improve] variable renaming
VecHK Jan 5, 2024
95f83e9
show_vote_button 的动画效果导致瀑布流重排的问题无法解决,禁用之
VecHK Jan 5, 2024
93a9b4b
[improve] update eslintrc
VecHK Jan 6, 2024
bb79fa0
[add] avif/webp support & upload image can specify a custom dimension
VecHK Jan 6, 2024
0007c3f
[improve] add 'default_supported_formats' config
VecHK Jan 6, 2024
428e811
[fix] CI failure
VecHK Jan 6, 2024
0d0ffd9
[fix] CI failure
VecHK Jan 6, 2024
f7e65ff
[fix] CI failure
VecHK Jan 6, 2024
56c4a12
[add] custom avatar image thumb size
VecHK Jan 6, 2024
9c48a4b
[adjust] width rename to thumb_size
VecHK Jan 6, 2024
b82d2d2
[add] auto create thumb/src directory when app's env is 'unitest'
VecHK Jan 6, 2024
74dcb76
[add] better refresh thumb api
VecHK Jan 7, 2024
31460a6
[add] 删除相片时除了删除数据库条目,也要清除硬盘中的图像
VecHK Jan 7, 2024
7a64639
[add] 更新了相片后删去旧相片的原图(同样,进行更新操作时也是要这么处理)
VecHK Jan 7, 2024
1c60363
[fix] CI failure
VecHK Jan 7, 2024
568c3b8
[fix] 图片加载顺序不对的问题
VecHK Jan 7, 2024
8462e2c
[add] Dashboard Home statistic
VecHK Jan 8, 2024
75a8ab0
[fix] ESLint warning
VecHK Jan 8, 2024
0599582
[add] error handle
VecHK Jan 8, 2024
d439721
[add] auto clean unused image
VecHK Jan 9, 2024
554e18e
[add] cancel auto clean unused image and set to API
VecHK Jan 9, 2024
26d9321
[adjust] statistic.src_storage & statistic.thumb_storage
VecHK Jan 9, 2024
90632f4
[upgrade] upgrade react react-dom react-transition-group
VecHK Jan 9, 2024
efa05f1
Bump follow-redirects from 1.15.3 to 1.15.4 in /front
dependabot[bot] Jan 9, 2024
2b25a97
[add] use ReactDOM.createRoot instead ReactDOM.render
VecHK Jan 10, 2024
4d94c9d
[improve] usePhotoLoadingPriority 使用 requestAnimationFrame 一直维护加载优先级
VecHK Jan 12, 2024
c4bbb18
[improve] 优化瀑布流布局算法
VecHK Jan 13, 2024
65e7368
[adjust] 重新实现extendColumns
VecHK Jan 14, 2024
d238803
[adjust] 调整 extendColumns()
VecHK Jan 16, 2024
ff64333
[fix] extendColumns
VecHK Jan 16, 2024
a70cbfa
[fix] 大幅消除抖动
VecHK Jan 18, 2024
c14d2ab
Merge pull request #93 from TorzoClub/dependabot/npm_and_yarn/front/f…
VecHK Jan 21, 2024
7f90ddc
Bump follow-redirects from 1.15.3 to 1.15.5 in /dashboard
dependabot[bot] Jan 21, 2024
6be772d
Merge pull request #94 from TorzoClub/dependabot/npm_and_yarn/dashboa…
VecHK Jan 21, 2024
88f5031
[add] 活动开始前的提醒
VecHK Dec 27, 2024
91f09a6
Merge pull request #112 from TorzoClub/dev-new
VecHK Dec 27, 2024
2f2837b
[add] ci build info send to Telegram
VecHK Dec 27, 2024
d48427f
[fix] 投票期间显示不出相片的问题
VecHK Feb 9, 2025
1c0e67a
[fix] 投票时无法取消选择的问题
VecHK Feb 9, 2025
d9f0f0d
[upgrade] upgrade vait to 4.2.1
VecHK Feb 10, 2025
c5f0cd3
[fix] 要能合并相同图片的下载项
VecHK Feb 10, 2025
f637a6c
use DEngine instead globalQueueLoad
VecHK Feb 12, 2025
b586b6b
[add] 图片读取错误时的重试按钮
VecHK Feb 12, 2025
004d1e0
[add] 图片加载顺序的调整要加上 isLoading() 的判断
VecHK Feb 12, 2025
75ee4d7
[adjust] 图片加载重试的按钮样式
VecHK Feb 12, 2025
d30f63a
[fix] 投稿期间无法显示他人相片的问题
VecHK Feb 12, 2025
7ca449a
[add] 图片缩略图将使用avif/webp加载
VecHK Feb 12, 2025
864895c
[fix] 统一以小写文件名保存图片以防止程序崩溃并意外破坏了原图数据
VecHK Nov 3, 2025
d1020c9
[improve] 优化缩略图刷新的处理逻辑,支持失败项的重试操作
VecHK Nov 3, 2025
b88bade
[fix] nodejs.unhandledRejectionError
VecHK Nov 3, 2025
f6229fe
[fix] auto detect year in unitest
VecHK Nov 3, 2025
ac8c7ce
skip ci
VecHK Nov 4, 2025
1f8d7f8
update test
VecHK Nov 4, 2025
7f3f24d
update mysql test database root password
VecHK Nov 4, 2025
f31ae3f
upload node-version
VecHK Nov 4, 2025
6f6e145
upgrade mysql2
VecHK Nov 4, 2025
b522afe
[fix] 图片加载顺序
VecHK Dec 2, 2025
c638c2b
[fix] 图片加载顺序
VecHK Dec 2, 2025
6fe37b2
[fix] 根据滚动方向决定加载策略
VecHK Dec 2, 2025
269cfeb
[add] mobile-web-app-capable
VecHK Dec 2, 2025
3028f91
[fix] 在正确的时机调用 resort
VecHK Dec 2, 2025
2212053
[improve] naming & use for loop
VecHK Dec 2, 2025
f7dd364
[add] ES2016~ES2020
VecHK Dec 2, 2025
7282c49
[add] 对于超大图片的防御性编程
VecHK Dec 24, 2025
e32cf26
[improve] naming
VecHK Dec 24, 2025
27a0576
[fix] 预览图不显示的问题
VecHK Dec 25, 2025
2688865
[add] acceptType=['jpg', 'png', 'gif', 'webp', 'avif']
VecHK Dec 25, 2025
30eb47d
[add] 活动期间能够查看过往相册
VecHK Dec 26, 2025
c469d11
[add] loading mask in <PhotoDetail />
VecHK Dec 26, 2025
e8e060f
create empty temp directory in test
VecHK Dec 26, 2025
d66d7d3
[add] cache worker
VecHK Dec 26, 2025
4b9691d
remove old vait
VecHK Dec 27, 2025
2454179
AppCriticalError rename to signal_critical_error.trigger
VecHK Dec 27, 2025
4270040
[fix] use SWR instead bad practice of setData in useEffect
VecHK Dec 27, 2025
6534b48
[add] src/signals.ts
VecHK Dec 27, 2025
a805053
[improve] Refactor download function to use fetch API
VecHK Dec 27, 2025
9dea107
[add] support heic image format
VecHK Dec 27, 2025
e310bef
[adjust] remove styled-jsx/babel
VecHK Dec 27, 2025
a6a543c
[adjust] use pnpm instead yarn
VecHK Dec 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/pullrequest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
collation server: 'utf8_general_ci' # Optional, default value is 'utf8mb4_general_ci'. The '--collation-server' option for mysqld
mysql version: '5' # Optional, default value is "latest". The version of the MySQL
mysql database: 'torzo_photo_test' # Optional, default value is "test". The specified database which will be create
mysql root password: 'vechk123' # Required if "mysql user" is empty, default is empty. The root superuser password
mysql root password: '7355608' # Required if "mysql user" is empty, default is empty. The root superuser password
mysql user: 'developer' # Required if "mysql root password" is empty, default is empty. The superuser for the specified database. Can use secrets, too
mysql password: 123 # Required if "mysql user" exists. The password for the "mysql user"

Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '16'
node-version: '18'

- name: ESLint
run: |
Expand All @@ -96,7 +96,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '16'
node-version: '18'

- name: yarn tsc --noEmit
run: |
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/release-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '16'
node-version: '18'

- name: yarn build:development
env:
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: 'a'

- name: Upload Builds
run: |
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
scp -r releases/* ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.DEV_REMOTE_UPLOAD_PATH }}
# - name: Upload Builds
# run: |
# ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
# scp -r releases/* ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.DEV_REMOTE_UPLOAD_PATH }}
60 changes: 42 additions & 18 deletions .github/workflows/server-refresh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,45 @@ jobs:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: 'a'

- name: construct script
env:
NODE_ENV: development
run: |
printf "#!/bin/bash\n" > ./server_exec.sh
printf "SERVER_PATH=${{secrets.SERVER_PATH}}\n" >> ./server_exec.sh
cat ./scripts/server-refresh.sh >> ./server_exec.sh
chmod +x ./server_exec.sh

- name: Exec Script
env:
SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
SSH_HOST: ${{ secrets.SSH_HOST }}
PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
cat ./server_exec.sh
ssh ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }} < ./server_exec.sh
# - name: construct script
# env:
# NODE_ENV: development
# run: |
# printf "#!/bin/bash\n" > ./server_exec.sh
# printf "SERVER_PATH=${{secrets.SERVER_PATH}}\n" >> ./server_exec.sh
# cat ./scripts/server-refresh.sh >> ./server_exec.sh
# chmod +x ./server_exec.sh

# - name: Exec Script
# env:
# SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
# SSH_HOST: ${{ secrets.SSH_HOST }}
# PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
# run: |
# ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
# cat ./server_exec.sh
# ssh ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }} < ./server_exec.sh

# - name: Telegram send success message
# if: ${{ success() }}
# env:
# TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
# TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
# COMMITS: ${{ toJSON(github.event.commits) }}
# RUN_NUMBER: ${{ github.run_number }}
# BUILD_DESCRIPTION: ✅ 呵呵,相册测试服前端已经部署。
# run: |
# node ./scripts/tg-message.js

# - name: Telegram send failure message
# if: ${{ failure() }}
# env:
# TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
# TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
# COMMITS: ${{ toJSON(github.event.commits) }}
# RUN_NUMBER: ${{ github.run_number }}
# BUILD_DESCRIPTION: |
# ❌ 呵呵,相册测试服前端部署失败。早该管管了。
# 版本: ${{ steps.package-version.outputs.current-version }}
# run: |
# node ./scripts/tg-message.js
2 changes: 1 addition & 1 deletion dashboard/.env.production
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
ENV = 'production'

# base api
VUE_APP_BASE_API = 'https://pache.blog/torzo-gallery-server/api/'
VUE_APP_BASE_API = 'https://pache.blog/torzo-gallery-server/'
2 changes: 1 addition & 1 deletion dashboard/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ module.exports = {
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-extra-parens': [0],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
Expand Down
35 changes: 25 additions & 10 deletions dashboard/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion dashboard/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@
},
"dependencies": {
"axios": "0.21.1",
"element-ui": "^2.15.4",
"element-ui": "^2.15.14",
"js-cookie": "2.2.0",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"pad-left": "^2.1.0",
"path-to-regexp": "2.4.0",
"uuid": "^9.0.1",
"vue": "2.6.10",
"vue-router": "3.0.6",
"vuex": "3.1.0"
Expand Down
20 changes: 18 additions & 2 deletions dashboard/src/api/image.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
import request from '@/utils/request'

export const refreshThumbs = () =>
export const __AVATAR_THUMB_SIZE__ = 128

export const refreshThumb = async({ src, thumb_size }) =>
request({
url: `admin/image/refresh-thumb`,
method: 'POST',
timeout: 0,
data: { src, thumb_size },
})

export const getAllAvailablePhoto = () =>
request({
url: 'admin/image/refresh-thumb',
url: `admin/image/available-photo`,
method: 'GET',
timeout: 0,
})

export const requestCleanUnusedImage = () =>
request({
url: `admin/image/clean-unused`,
method: 'POST',
})
7 changes: 7 additions & 0 deletions dashboard/src/api/statistic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import request from '@/utils/request'

export const getStatistic = () =>
request({
url: `admin/statistic`,
method: 'GET',
})
19 changes: 15 additions & 4 deletions dashboard/src/components/UploadImageBox.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
drag
:name="uploadName"
:headers="headers"
:action="uploadUrl"
:action="upload_url"
:show-file-list="false"
:on-error="uploadError"
:on-progress="uploadProgress"
Expand Down Expand Up @@ -137,9 +137,9 @@
default: ''
},

uploadUrl: {
type: String,
default: `${process.env.VUE_APP_BASE_API}admin/image/upload`
thumbSize: {
type: Number,
default: 0
},

previewUrl: {
Expand All @@ -161,6 +161,17 @@
percent: 0
}),

computed: {
upload_url() {
const base_url = `${process.env.VUE_APP_BASE_API}admin/image/upload`
if (this.thumbSize !== 0) {
return `${base_url}?thumb_size=${this.thumbSize}`
} else {
return base_url
}
}
},

methods: {
resetUploading() {
this.uploading = false
Expand Down
7 changes: 4 additions & 3 deletions dashboard/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/en' // lang i18n
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // global css

Expand All @@ -29,9 +29,10 @@ if (process.env.NODE_ENV === 'production') {
}

// set ElementUI lang to EN
Vue.use(ElementUI, { locale })
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui,按如下方式声明
// Vue.use(ElementUI)
Vue.use(ElementUI)
console.log('ElementUI', ElementUI)

Vue.config.productionTip = false

Expand Down
14 changes: 14 additions & 0 deletions dashboard/src/mixins/operate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export default {
methods: {
async $operate(property, fn) {
if (this[property] !== true) {
this[property] = true
try {
await fn()
} finally {
this[property] = false
}
}
}
}
}
Loading
Loading