source: extensions/AMetaData/admin/amd_metadata_database_database.tpl @ 7447

Last change on this file since 7447 was 7447, checked in by grum, 14 years ago

implement feature bug:1924

File size: 11.6 KB
Line 
1{known_script id="jquery.ui" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.core.packed.js"}
2{known_script id="jquery.ui.dialog" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.dialog.packed.js"}
3
4{literal}
5<script type="text/javascript">
6var processAnalyze = {
7      step:0,
8      lists:new Array(),
9      timeStart:0,
10      timeEnd:0
11    }
12
13  function init()
14  {
15    formatNbItemPerRequest({/literal}{$datas.NumberOfItemsPerRequest}{literal});
16  }
17
18  function formatNbItemPerRequest(nbItems)
19  {
20    $("#iamd_NumberOfItemsPerRequest").val(nbItems);
21    $("#iamd_nb_item_per_request_display").html(nbItems);
22  }
23
24  function doAnalyze()
25  {
26    var mode="all",
27        modeLabel="",
28        numOfRandomItems=0,
29        doAnalyzeDialog="<br><form id='iDialogProgress' class='formtable'>"+
30      "<div id='iprogressbar_contener' class='gcBorderInput'>"+
31      "<span id='iprogressbar_bg' class='gcBgInput' style='width:0%;'>&nbsp;</span>"+
32      "<span id='iprogressbar_fg' class='gcLink'>0%</span>"+
33      "</div><p>{/literal}{'g003_analyze_in_progress'|@translate}{literal}"+
34      "<br><img src='./plugins/GrumPluginClasses/icons/processing.gif'>"+
35      "</p></form>",
36        re=/^\d+$/;
37
38
39    if($("#ianalyze_action0").get(0).checked)
40    {
41      mode="notAnalyzed";
42      modeLabel="{/literal}{'g003_analyze_not_analyzed_pictures'|@translate}{literal}";
43    }
44    else if($("#ianalyze_action1").get(0).checked)
45    {
46      mode="all";
47      modeLabel="{/literal}{'g003_analyze_all_pictures'|@translate}{literal}";
48    }
49    else if($("#ianalyze_action2").get(0).checked)
50    {
51      mode="caddieAdd";
52      modeLabel="{/literal}{'g003_analyze_caddie_add_pictures'|@translate}{literal}";
53    }
54    else if($("#ianalyze_action3").get(0).checked)
55    {
56      mode="caddieReplace";
57      modeLabel="{/literal}{'g003_analyze_caddie_replace_pictures'|@translate}{literal}";
58    }
59    else if($("#ianalyze_action4").get(0).checked)
60    {
61      mode="analyzed";
62      modeLabel="{/literal}{'g003_analyze_analyzed_pictures'|@translate}{literal}";
63    }
64    else if($("#ianalyze_action5").get(0).checked)
65    {
66      mode="randomList";
67      numOfRandomItems=$("#ianalyze_action6").val();
68      if(numOfRandomItems<=0 || re.exec(numOfRandomItems)==null)
69      {
70        alert("{/literal}{'g003_invalid_random_number'|@translate}{literal}");
71        return(false);
72      }
73      modeLabel="{/literal}{'g003_analyze_random_pictures'|@translate|replace:'%s':'"+numOfRandomItems+"'}{literal}";
74    }
75
76    ignoreOptions=[];
77    if($('#iFillDataBaseIgnore_magic').get(0).checked)
78    {
79      ignoreOptions.push('magic');
80    }
81    if($('#iFillDataBaseIgnore_exif').get(0).checked)
82    {
83      ignoreOptions.push('exif');
84    }
85    if($('#iFillDataBaseIgnore_iptc').get(0).checked)
86    {
87      ignoreOptions.push('iptc');
88    }
89    if($('#iFillDataBaseIgnore_xmp').get(0).checked)
90    {
91      ignoreOptions.push('xmp');
92    }
93
94
95    $("#dialog")
96    .html("")
97    .dialog(
98      {
99        resizable: false,
100        width:480,
101        height:120,
102        modal: true,
103        draggable:true,
104        dialogClass: 'gcBgTabSheet gcBorder',
105        title: '{/literal}{"g003_updating_metadata"|@translate}{literal}&nbsp;('+modeLabel+')',
106      }
107    ).html(doAnalyzeDialog);
108
109    NumberOfItemsPerRequest=$("#iamd_NumberOfItemsPerRequest").val();
110
111    $.ajax(
112      {
113        type: "POST",
114        url: "{/literal}{$datas.urlRequest}{literal}",
115        async: true,
116        data:
117          {
118            ajaxfct:"admin.makeStats.getList",
119            selectMode:mode,
120            numOfItems:NumberOfItemsPerRequest,
121            ignoreOptions:ignoreOptions,
122            numOfRandomItems:numOfRandomItems,
123          },
124        success: function(msg)
125          {
126            processAnalyze.step=0;
127            processAnalyze.lists=msg.split(";");
128            processAnalyze.timeStart=new Date();
129            doStep_processList();
130          },
131        error: function()
132          {
133            alert('error');
134          }
135      }
136    );
137  }
138
139
140  function displayTime(eTime)
141  {
142    seconds=(eTime%60).toFixed(2);
143    minutes=((eTime-seconds)/60).toFixed(0);
144    returned=seconds+"s";
145    if(minutes>0) returned=minutes+"m"+returned;
146    return(returned);
147  }
148
149  function doStep_processList()
150  {
151    if(processAnalyze.step < processAnalyze.lists.length)
152    {
153      $.ajax({
154        type: "POST",
155        url: "{/literal}{$datas.urlRequest}{literal}",
156        async: true,
157        data: { ajaxfct:"admin.makeStats.doAnalyze", imagesList:processAnalyze.lists[processAnalyze.step] },
158        success: function(msg)
159          {
160            processAnalyze.step++;
161            doStep_processList();
162          },
163       });
164
165      pct=100*(processAnalyze.step+1)/processAnalyze.lists.length;
166      $("#iprogressbar_bg").css("width", pct+"%");
167      $("#iprogressbar_fg").html(Math.round(pct)+"%");
168    }
169    else
170    {
171      // list completely processed
172      tmp = $.ajax({
173        type: "POST",
174        url: "{/literal}{$datas.urlRequest}{literal}",
175        async: false,
176        data: { ajaxfct:"admin.makeStats.consolidate" }
177       }).responseText;
178
179      processAnalyze.timeEnd = new Date();
180      timeElapsed=processAnalyze.timeEnd.getTime()-processAnalyze.timeStart.getTime();
181
182      $("#dialog")
183      .dialog("destroy")
184      .html("")
185      .get(0).removeAttribute('style');
186
187      $("#dialog")
188      .dialog(
189        {
190          resizable: false,
191          width:480,
192          height:120,
193          modal: true,
194          draggable:true,
195          dialogClass: 'gcBgTabSheet gcBorder',
196          title: '{/literal}{"g003_updating_metadata"|@translate}{literal}',
197          dialogClass: 'gcBgTabSheet gcBorder',
198          open: function(event, ui)
199          {
200            bH=$("div.ui-dialog-buttonpane").get(0).clientHeight;
201            $("#dialog").css('height', (this.clientHeight-bH)+"px");
202          },
203          buttons:
204          {
205            '{/literal}{"g003_ok"|@translate}{literal}':
206              function()
207              {
208                $(this).dialog('destroy').html("").get(0).removeAttribute('style');
209              }
210          }
211        }
212      )
213      .html("<br>{/literal}{'g003_analyze_is_finished'|@translate}{literal}&nbsp;("+displayTime(timeElapsed/1000)+")");
214    }
215  }
216
217  function updateFillDatabaseOption()
218  {
219    $.ajax(
220      {
221        type: "POST",
222        url: "{/literal}{$datas.urlRequest}{literal}",
223        async: true,
224        data: { ajaxfct:"admin.config.setOption", id:'amd_FillDataBaseContinuously', value:$('#iamd_FillDataBaseContinuously').get(0).checked?'y':'n' },
225      }
226    );
227  }
228
229  function displayAnalyzedOption()
230  {
231    if($('#iAnalyzeAnalyzed').css('display')=='none')
232    {
233      $('#iAnalyzeAnalyzed').css('display', 'block');
234      $('#ianalyze_action4').get(0).checked=true;
235    }
236  }
237
238
239
240</script>
241{/literal}
242
243<h2>{'g003_updating_metadata'|@translate}</h2>
244
245<div id="dialog"></div>
246
247<div id='ianalyzearea'>
248  <form class="formtable">
249    <fieldset>
250      <legend>{'g003_options'|@translate}</legend>
251      <label><input onclick='updateFillDatabaseOption();' type="checkbox" id='iamd_FillDataBaseContinuously' {if $amdConfig.amd_FillDataBaseContinuously=='y'}checked{/if}>&nbsp;{'g003_fillDatabaseContinuously'|@translate}</label><br>
252
253      {if !(in_array('exif', $amdConfig.amd_FillDataBaseExcludeFilters) and
254            in_array('xmp', $amdConfig.amd_FillDataBaseExcludeFilters) and
255            in_array('iptc', $amdConfig.amd_FillDataBaseExcludeFilters) and
256            in_array('xmp', $amdConfig.amd_FillDataBaseExcludeFilters)) }
257        <br>
258        {'g003_ignoreMetadata'|@translate}<br>
259        <table style='margin-left:0px;'>
260          <tr style='vertical-align:top;text-align:left;'>
261            <td width='150px'>
262              {if !in_array('magic', $amdConfig.amd_FillDataBaseExcludeFilters)}
263              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_magic' {if in_array('magic', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;Magic</label><br>
264              {/if}
265              {if !in_array('exif', $amdConfig.amd_FillDataBaseExcludeFilters)}
266              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_exif' {if in_array('exif', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;EXIF</label><br>
267              {/if}
268              {if !in_array('iptc', $amdConfig.amd_FillDataBaseExcludeFilters)}
269              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_iptc' {if in_array('iptc', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;IPTC</label><br>
270              {/if}
271              {if !in_array('xmp', $amdConfig.amd_FillDataBaseExcludeFilters)}
272              <label><input onclick='displayAnalyzedOption();' type="checkbox" id='iFillDataBaseIgnore_xmp' {if in_array('xmp', $amdConfig.amd_FillDataBaseIgnoreSchemas)}checked{/if}>&nbsp;XMP</label>
273              {/if}
274            </td>
275            <td style='border-left:1px dotted;'><br><span style='font-style:italic;margin-left:8px;'>{'g003_fillDatabaseIgnoreWarning'|@translate}</span></td>
276          </tr>
277        </table>
278      {/if}
279    </fieldset>
280
281    <fieldset>
282      <legend>{'g003_update_metadata'|@translate}</legend>
283        <div>
284          <div style='display: inline-block; border-right: 1px dotted; margin-right: 4px; padding-right: 8px;'>
285            <label>
286              <input type="radio" value="caddieAdd" name="fAMD_analyze_action" id="ianalyze_action2" checked>&nbsp;
287              {'g003_analyze_caddie_add_pictures'|@translate}&nbsp;
288            </label><br>
289
290            <label>
291              <input type="radio" value="caddieReplace" name="fAMD_analyze_action" id="ianalyze_action3">&nbsp;
292              {'g003_analyze_caddie_replace_pictures'|@translate}&nbsp;
293            </label><br>
294          </div>
295          <span style='font-style: italic; position: relative; top: -12px;'>{$datas.caddieNbPictures}</span>
296        </div>
297
298        <label>
299          <input type="radio" value="notAnalayzed" name="fAMD_analyze_action" id="ianalyze_action0">&nbsp;
300          {'g003_analyze_not_analyzed_pictures'|@translate}
301        </label><br>
302
303        <label>
304          <input type="radio" value="all" name="fAMD_analyze_action" id="ianalyze_action1">&nbsp;
305          {'g003_analyze_all_pictures'|@translate}
306        </label><br>
307
308
309
310          <input type="radio" value="randomList" name="fAMD_analyze_action" id="ianalyze_action5">&nbsp;
311          {'g003_analyze_random_pictures'|@translate|replace:'%s':"<input type='text' size='4' id='ianalyze_action6' value='500' style='display:inline;' onfocus='$(&quot;#ianalyze_action5&quot;).attr(&quot;checked&quot;, true);'>"}
312        <br>
313
314
315        <span id='iAnalyzeAnalyzed' style='display:none;'>
316          <label>
317            <input type="radio" value="analyzed" name="fAMD_analyze_action" id="ianalyze_action4">&nbsp;
318            {'g003_analyze_analyzed_pictures'|@translate}
319          </label><br>
320        </span>
321
322        {if $amdConfig.amd_DisplayWarningsMessageUpdate=='y'}
323          <div class="warnings">
324            <p style="font-size: 120%;">{'g003_warning_on_analyze_0'|@translate}</p>
325            <p>{'g003_warning_on_analyze_1'|@translate}</p>
326            <p>{'g003_warning_on_analyze_2'|@translate}</p>
327          </div>
328        {/if}
329
330        <br>
331        <input type="hidden" id="iamd_NumberOfItemsPerRequest" value="{$datas.NumberOfItemsPerRequest}">
332        <!--
333        {'g003_setting_nb_items_per_request'|@translate}&nbsp;
334        <div id="iamd_nb_item_per_request_slider"></div>
335        <div id="iamd_nb_item_per_request_display"></div>
336        <br><br>
337        -->
338        <input type="button" value="{'g003_analyze'|@translate}" onclick="doAnalyze();">
339    </fieldset>
340  </form>
341</div>
342
343
344
345
346<script type="text/javascript">
347  init();
348</script>
Note: See TracBrowser for help on using the repository browser.