]> git.immae.eu Git - github/wallabag/wallabag.git/blob - app/Resources/static/themes/material/js/init.js
3ff8de0a19d80007133447d4207370931ca207ee
[github/wallabag/wallabag.git] / app / Resources / static / themes / material / js / init.js
1 import $ from 'jquery';
2 import annotator from 'annotator';
3 import { savePercent, retrievePercent, initFilters, initExport } from '../../_global/js/tools';
4 import './shortcuts/main.js';
5 import './shortcuts/entry.js';
6
7 require('materialize'); // eslint-disable-line
8
9 global.jQuery = $;
10
11 $(document).ready(() => {
12 // sideNav
13 $('.button-collapse').sideNav();
14 $('select').material_select();
15 $('.collapsible').collapsible({
16 accordion: false,
17 });
18 $('.datepicker').pickadate({
19 selectMonths: true,
20 selectYears: 15,
21 formatSubmit: 'dd/mm/yyyy',
22 hiddenName: true,
23 format: 'dd/mm/yyyy',
24 });
25 initFilters();
26 initExport();
27
28 $('#nav-btn-add-tag').on('click', () => {
29 $('.nav-panel-add-tag').toggle(100);
30 $('.nav-panel-menu').addClass('hidden');
31 $('#tag_label').focus();
32 return false;
33 });
34 $('#nav-btn-add').on('click', () => {
35 $('.nav-panel-buttom').hide(100);
36 $('.nav-panel-add').show(100);
37 $('.nav-panels .action').hide(100);
38 $('.nav-panel-menu').addClass('hidden');
39 $('.nav-panels').css('background', 'white');
40 $('#entry_url').focus();
41 return false;
42 });
43 $('#nav-btn-search').on('click', () => {
44 $('.nav-panel-buttom').hide(100);
45 $('.nav-panel-search').show(100);
46 $('.nav-panels .action').hide(100);
47 $('.nav-panel-menu').addClass('hidden');
48 $('.nav-panels').css('background', 'white');
49 $('#searchfield').focus();
50 return false;
51 });
52 $('.close').on('click', () => {
53 $('.nav-panel-add').hide(100);
54 $('.nav-panel-search').hide(100);
55 $('.nav-panel-buttom').show(100);
56 $('.nav-panels .action').show(100);
57 $('.nav-panel-menu').removeClass('hidden');
58 $('.nav-panels').css('background', 'transparent');
59 return false;
60 });
61 $(window).scroll(() => {
62 const s = $(window).scrollTop();
63 const d = $(document).height();
64 const c = $(window).height();
65 const scrollPercent = (s / (d - c)) * 100;
66 $('.progress .determinate').css('width', `${scrollPercent}%`);
67 });
68
69 /* ==========================================================================
70 Annotations & Remember position
71 ========================================================================== */
72
73 if ($('article').length) {
74 const app = new annotator.App();
75 const x = JSON.parse($('#annotationroutes').html());
76
77 app.include(annotator.ui.main, {
78 element: document.querySelector('article'),
79 });
80
81 app.include(annotator.storage.http, x);
82
83 app.start().then(() => {
84 app.annotations.load({ entry: x.entryId });
85 });
86
87 $(window).scroll(() => {
88 const scrollTop = $(window).scrollTop();
89 const docHeight = $(document).height();
90 const scrollPercent = (scrollTop) / (docHeight);
91 const scrollPercentRounded = Math.round(scrollPercent * 100) / 100;
92 savePercent(x.entryId, scrollPercentRounded);
93 });
94
95 retrievePercent(x.entryId);
96
97 $(window).resize(() => {
98 retrievePercent(x.entryId);
99 });
100 }
101 });