7
|
1
|
|
2 $(document).ready(function () {
|
|
3
|
|
4 alert('asdfsafdasffsd');
|
|
5
|
|
6
|
|
7 function getURLParams()
|
|
8 {
|
|
9 var urlParams = {},
|
|
10 match,
|
|
11 pl = /\+/g, // Regex for replacing addition symbol with a space
|
|
12 search = /([^&=]+)=?([^&]*)/g,
|
|
13 decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
|
|
14 query = window.location.search.substring(1);
|
|
15 while (match = search.exec(query))
|
|
16 {
|
|
17 urlParams[decode(match[1])] = decode(match[2]);
|
|
18 }
|
|
19
|
|
20 return urlParams;
|
|
21 }
|
|
22
|
|
23
|
|
24 $('#page-jump').on('keypress', function(ev)
|
|
25 {
|
|
26 if (ev.which == '13')
|
|
27 {
|
|
28 var dv = $('#diva-wrapper').data('diva');
|
|
29 var value = $(this).val();
|
|
30 var success = dv.gotoPageByNumber(value);
|
|
31
|
|
32 if (!success)
|
|
33 {
|
|
34 if (!$('#page-jump-group').hasClass('error'))
|
|
35 {
|
|
36 $('#page-jump-group').addClass('error');
|
|
37 $('#page-jump-controls').append('<span id="jump-error-help" class="help-inline">The page you specified is not valid.</span>');
|
|
38 }
|
|
39 }
|
|
40 else
|
|
41 {
|
|
42 if ($('#page-jump-group').hasClass('error'))
|
|
43 {
|
|
44 $('#page-jump-group').removeClass('error');
|
|
45 $('#jump-error-help').remove();
|
|
46 }
|
|
47 }
|
|
48
|
|
49 }
|
|
50 });
|
|
51
|
|
52 $('.go-to-witness-link').on('click', function(ev) {
|
|
53 var dv = $('#diva-wrapper').data('diva');
|
|
54 var start_page = $(this).data('start');
|
|
55 dv.gotoPageByNumber(start_page);
|
|
56
|
|
57 ev.preventDefault();
|
|
58 });
|
|
59
|
|
60 $("#witness-edit").on('click', '.set-start-image-btn', function(ev)
|
|
61 {
|
|
62 var dv = $('#diva-wrapper').data('diva');
|
|
63 var witness = $(this).data('witness');
|
|
64 var page = dv.getCurrentPageNumber();
|
|
65
|
|
66 var startSetCallback = function(data, caller)
|
|
67 {
|
|
68 var parent = caller.parent();
|
|
69 var el = $("<span>" + data.start_page + "(<a href='#' class='remove-start-image' data-witness='" + data.ismi_id + "'>X</a>)</span>");
|
|
70 caller.remove();
|
|
71 parent.append(el);
|
|
72 }
|
|
73
|
|
74 modifyWitness(witness, 'start_page', page, startSetCallback, $(this));
|
|
75 });
|
|
76
|
|
77 $("#witness-edit").on('click', '.set-end-image-btn', function(ev)
|
|
78 {
|
|
79 var dv = $('#diva-wrapper').data('diva');
|
|
80 var witness = $(this).data('witness');
|
|
81 var page = dv.getCurrentPageNumber();
|
|
82
|
|
83 var endSetCallback = function(data, caller)
|
|
84 {
|
|
85 var parent = caller.parent();
|
|
86 var el = $("<span>" + data.end_page + "(<a href='#' class='remove-end-image' data-witness='" + data.ismi_id + "'>X</a>)</span>");
|
|
87 caller.remove();
|
|
88 parent.append(el);
|
|
89 }
|
|
90
|
|
91 modifyWitness(witness, 'end_page', page, endSetCallback, $(this));
|
|
92 });
|
|
93
|
|
94 $("#witness-edit").on('click', '.remove-start-image', function(ev)
|
|
95 {
|
|
96 var witness = $(this).data('witness');
|
|
97 var startRemoveCallback = function(data, caller)
|
|
98 {
|
|
99 var parentTd = caller.parent().parent();
|
|
100 var parent = caller.parent();
|
|
101 var el = $("<button class='btn set-start-image-btn' data-witness='" + data.ismi_id + "'>Set Start Image</button>");
|
|
102 parent.remove();
|
|
103 parentTd.append(el);
|
|
104 }
|
|
105
|
|
106 modifyWitness(witness, 'start_page', null, startRemoveCallback, $(this));
|
|
107 });
|
|
108
|
|
109 $("#witness-edit").on('click', '.remove-end-image', function(ev)
|
|
110 {
|
|
111 var witness = $(this).data('witness');
|
|
112
|
|
113 var endRemoveCallback = function(data, caller)
|
|
114 {
|
|
115 var parentTd = caller.parent().parent();
|
|
116 var parent = caller.parent();
|
|
117 var el = $("<button class='btn set-end-image-btn' data-witness='" + data.ismi_id + "'>Set End Image</button>");
|
|
118 parent.remove();
|
|
119 parentTd.append(el);
|
|
120 }
|
|
121
|
|
122 modifyWitness(witness, 'end_page', null, endRemoveCallback, $(this));
|
|
123 });
|
|
124
|
|
125 $("#test-highlight").on('click', function(ev)
|
|
126 {
|
|
127 var dv = $("#diva-wrapper").data('diva');
|
|
128 dv.highlightOnPage('foo', 'bar', 'baz');
|
|
129 });
|
|
130
|
|
131 function modifyWitness(witness_id, key, value, successCallback, caller) {
|
|
132 var csrf = $("[name=csrfmiddlewaretoken]").val();
|
|
133 var witnessURL = "/witness/" + witness_id;
|
|
134 var data = {};
|
|
135 data[key] = value;
|
|
136
|
|
137 $.ajax(witnessURL, {
|
|
138 type: 'PATCH',
|
|
139 headers: {
|
|
140 'X-CSRFToken': csrf
|
|
141 },
|
|
142 data: JSON.stringify(data),
|
|
143 contentType: "application/json",
|
|
144 success: function(data, status, xhr)
|
|
145 {
|
|
146 // we'll need to operate on the button, so pass it back...
|
|
147 successCallback(data, caller);
|
|
148 }
|
|
149 });
|
|
150 }
|
|
151
|
|
152 function handlePageSwitch(idx, fn, divid)
|
|
153 {
|
|
154 // page number is what we're after, which is always
|
|
155 // page index + 1.
|
|
156 $('#current-page-idx').text(idx + 1);
|
|
157 $('#current-page-fn').text(fn);
|
|
158 }
|
|
159
|
|
160 function handleDocumentLoaded(idx, fn)
|
|
161 {
|
|
162 var witnesses = {};
|
|
163
|
|
164 // we could do this with an ajax request, but we have
|
|
165 // the variables already here, we just need to get them
|
|
166 // from Django and not JS.
|
|
167 /*
|
|
168 {% for witness in content.witnesses %}
|
|
169 {% if witness.start_page %}
|
|
170 witnesses[{{ witness.ismi_id }}] = {{ witness.start_page }};
|
|
171 {% endif %}
|
|
172 {% endfor %}*/
|
|
173
|
|
174 var urlParams = getURLParams();
|
|
175 if (urlParams.hasOwnProperty('witness'))
|
|
176 {
|
|
177 urlWitness = parseInt(urlParams['witness'], 10);
|
|
178
|
|
179 // this won't be populated if the witness doesn't have a
|
|
180 // start page set.
|
|
181 if (witnesses.hasOwnProperty(urlWitness))
|
|
182 {
|
|
183 this.gotoPageByNumber(witnesses[urlWitness]);
|
|
184 }
|
|
185 }
|
|
186 }
|
|
187
|
|
188 $("#diva-wrapper").diva(
|
|
189 {
|
|
190 enableAutoHeight: true,
|
|
191 enableAutoTitle: false,
|
|
192 enableGotoPage: false,
|
|
193 fixedHeightGrid: false,
|
|
194 contained: true,
|
|
195 iipServerURL: "https://images.rasi.mcgill.ca/fcgi-bin/iipsrv.fcgi",
|
|
196 imageDir: "/data7/srv/images/Majlis_shura_21",
|
|
197
|
|
198 onSetCurrentPage: handlePageSwitch,
|
|
199 onDocumentLoaded: handleDocumentLoaded
|
|
200 });
|
|
201 }); |