SetPositionPage.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template>
  2. <Window ref="window" height="140px" max-width="600px" :top-shift="-50" @close="close">
  3. <template slot="header">
  4. Установить позицию
  5. </template>
  6. <div class="slider">
  7. <el-slider v-model="sliderValue" :max="sliderMax" :format-tooltip="formatTooltip"></el-slider>
  8. </div>
  9. </Window>
  10. </template>
  11. <script>
  12. //-----------------------------------------------------------------------------
  13. import Vue from 'vue';
  14. import Component from 'vue-class-component';
  15. import Window from '../../share/Window.vue';
  16. export default @Component({
  17. components: {
  18. Window,
  19. },
  20. watch: {
  21. sliderValue: function(newValue) {
  22. if (this.initialized)
  23. this.$emit('book-pos-changed', {bookPos: newValue});
  24. },
  25. },
  26. })
  27. class SetPositionPage extends Vue {
  28. sliderValue = null;
  29. sliderMax = null;
  30. created() {
  31. this.commit = this.$store.commit;
  32. this.reader = this.$store.state.reader;
  33. this.initialized = false;
  34. }
  35. init(sliderValue, sliderMax) {
  36. this.$refs.window.init();
  37. this.sliderMax = sliderMax;
  38. this.sliderValue = sliderValue;
  39. this.initialized = true;
  40. }
  41. formatTooltip(val) {
  42. if (this.sliderMax)
  43. return (val/this.sliderMax*100).toFixed(2) + '%';
  44. else
  45. return 0;
  46. }
  47. close() {
  48. this.$emit('set-position-toggle');
  49. }
  50. keyHook(event) {
  51. if (event.type == 'keydown' && (event.code == 'Escape' || event.code == 'KeyP')) {
  52. this.close();
  53. }
  54. return true;
  55. }
  56. }
  57. //-----------------------------------------------------------------------------
  58. </script>
  59. <style scoped>
  60. .slider {
  61. margin: 20px;
  62. background-color: #efefef;
  63. border-radius: 15px;
  64. }
  65. .el-slider {
  66. margin-right: 20px;
  67. margin-left: 20px;
  68. }
  69. </style>