Files
Hydro/ui/components/vote/vote.page.js
T
masnn f9468536de upgrade dep:
css-loader 0.28->3.5
del 4.1->5.1
eslint 5.18->6.8
eslint-config-airbnb 17.1->18.1
eslint-loader 2.1->4.0
file-loader 2.0->6.0
fs.extra 8.0->9.0
gulp 2.0->3.0
gulp-nunjucks 4.0->5.0
json-loader 0.5->Removed
style-loader 0.23->1.1
uglifyjs-webpack-plugin 1.3->2.2
yargs 13.2->15.3
katex 0.10->0.11
react-monaco-editor 0.35->0.36
timeage-react 1.2->3.0
timeago.js 3.0->4.0
uuid 3.3->7.0
2020-04-15 12:47:55 +08:00

39 lines
1.1 KiB
JavaScript

import Rotator from 'vj/components/rotator';
import { AutoloadPage } from 'vj/misc/PageLoader';
import request from 'vj/utils/request';
function setVoteState($container, value, status) {
const $num = $container.find('.vote-number');
Rotator.get($num).setValue(value);
$container.find('.vote-button').removeClass('active');
if (status === 1) {
$container.find('.upvote').addClass('active');
} else if (status === -1) {
$container.find('.downvote').addClass('active');
}
}
function applyRotator(element) {
Rotator.getOrConstruct($(element));
}
const votePage = new AutoloadPage('votePage', () => {
$('.vote-number.rotator--enabled').get().forEach((element) => applyRotator(element));
$(document).on('click', '.vote-button', (ev) => {
const $button = $(ev.currentTarget);
const $container = $button.closest('.vote');
const $form = $button.closest('form');
request
.post($form.attr('action'), $form)
.then((data) => {
setVoteState($container, data.vote, data.user_vote);
})
.catch(() => {
// TODO(iceboy): notify failure
});
return false;
});
});
export default votePage;