source: extensions/AMetaData/admin/amd_metadata_database.tpl @ 6722

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

bug:1686, feature:1718, feature:1719, feature:1688, feature:1692

  • Picture analysis finish with an Error 500 or with a problem of memory limit
  • Coding a DateTime class
  • Make JpegMetadata class tests images lighter
  • Improve performance when the database is filled
  • Add possibility for user to build their own tags
  • ajax management entirely rewritted
  • Property svn:executable set to *
File size: 8.0 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    /*$("#iamd_nb_item_per_request_slider").slider(
17      {
18        min:5,
19        max:150,
20        steps:29,
21        startValue:{/literal}{$datas.NumberOfItemsPerRequest}{literal},
22        slide: function(event, ui) { formatNbItemPerRequest(ui.value); }
23      }
24    );*/
25    getStatus();
26  }
27
28  function formatNbItemPerRequest(nbItems)
29  {
30    $("#iamd_NumberOfItemsPerRequest").val(nbItems);
31    $("#iamd_nb_item_per_request_display").html(nbItems);
32  }
33
34  function getStatus()
35  {
36    $.ajax(
37      {
38        type: "POST",
39        url: "{/literal}{$datas.urlRequest}{literal}",
40        async: true,
41        data: { ajaxfct:"admin.makeStats.getStatus" },
42        success: function (msg) {
43          list=msg.split(";");
44          $("#ianalyzestatus").html("<ul><li>"+list[0]+"</li><li>"+list[1]+"</li><li>"+list[2]+"</li></ul>");
45        }
46      }
47    );
48  }
49
50  function doAnalyze()
51  {
52    mode="all";
53    modeLabel="";
54
55    if($("#ianalyze_action0").get(0).checked)
56    {
57      mode="notAnalyzed";
58      modeLabel="{/literal}{'g003_analyze_not_analyzed_pictures'|@translate}{literal}";
59    }
60    else if($("#ianalyze_action1").get(0).checked)
61    {
62      mode="all";
63      modeLabel="{/literal}{'g003_analyze_all_pictures'|@translate}{literal}";
64    }
65    else if($("#ianalyze_action2").get(0).checked)
66    {
67      mode="caddieAdd";
68      modeLabel="{/literal}{'g003_analyze_caddie_add_pictures'|@translate}{literal}";
69    }
70    else if($("#ianalyze_action3").get(0).checked)
71    {
72      mode="caddieReplace";
73      modeLabel="{/literal}{'g003_analyze_caddie_replace_pictures'|@translate}{literal}";
74    }
75
76
77    doAnalyzeDialog="<br><form id='iDialogProgress' class='formtable'>"+
78      "<div id='iprogressbar_contener' class='gcBorderInput'>"+
79      "<span id='iprogressbar_bg' class='gcBgInput' style='width:0%;'>&nbsp;</span>"+
80      "<span id='iprogressbar_fg' class='gcLink'>0%</span>"+
81      "</div><p>{/literal}{'g003_analyze_in_progress'|@translate}{literal}"+
82      "<br><img src='./plugins/GrumPluginClasses/icons/processing.gif'>"
83      "</p></form>";
84
85    $("#dialog")
86    .html("")
87    .dialog(
88      {
89        resizable: false,
90        width:480,
91        height:120,
92        modal: true,
93        draggable:true,
94        dialogClass: 'gcBgTabSheet gcBorder',
95        title: '{/literal}{"g003_updating_metadata"|@translate}{literal}&nbsp;('+modeLabel+')',
96      }
97    ).html(doAnalyzeDialog);
98
99    NumberOfItemsPerRequest=$("#iamd_NumberOfItemsPerRequest").val();
100
101    $.ajax(
102      {
103        type: "POST",
104        url: "{/literal}{$datas.urlRequest}{literal}",
105        async: true,
106        data: { ajaxfct:"admin.makeStats.getList", selectMode:mode, numOfItems:NumberOfItemsPerRequest },
107        success: function(msg)
108          {
109            processAnalyze.step=0;
110            processAnalyze.lists=msg.split(";");
111            processAnalyze.timeStart=new Date();
112            doStep_processList();
113          },
114        error: function()
115          {
116            alert('error');
117          }
118      }
119    );
120  }
121
122
123  function displayTime(eTime)
124  {
125    seconds=(eTime%60).toFixed(2);
126    minutes=((eTime-seconds)/60).toFixed(0);
127    returned=seconds+"s";
128    if(minutes>0) returned=minutes+"m"+returned;
129    return(returned);
130  }
131
132  function doStep_processList()
133  {
134    if(processAnalyze.step < processAnalyze.lists.length)
135    {
136      $.ajax({
137        type: "POST",
138        url: "{/literal}{$datas.urlRequest}{literal}",
139        async: true,
140        data: { ajaxfct:"admin.makeStats.doAnalyze", imagesList:processAnalyze.lists[processAnalyze.step] },
141        success: function(msg)
142          {
143            processAnalyze.step++;
144            doStep_processList();
145          },
146       });
147
148      pct=100*(processAnalyze.step+1)/processAnalyze.lists.length;
149      $("#iprogressbar_bg").css("width", pct+"%");
150      $("#iprogressbar_fg").html(Math.round(pct)+"%");
151    }
152    else
153    {
154      // list completely processed
155      tmp = $.ajax({
156        type: "POST",
157        url: "{/literal}{$datas.urlRequest}{literal}",
158        async: false,
159        data: { ajaxfct:"admin.makeStats.consolidate" }
160       }).responseText;
161
162      processAnalyze.timeEnd = new Date();
163      timeElapsed=processAnalyze.timeEnd.getTime()-processAnalyze.timeStart.getTime();
164
165      $("#dialog")
166      .dialog("destroy")
167      .html("")
168      .get(0).removeAttribute('style');
169
170      $("#dialog")
171      .dialog(
172        {
173          resizable: false,
174          width:480,
175          height:120,
176          modal: true,
177          draggable:true,
178          dialogClass: 'gcBgTabSheet gcBorder',
179          title: '{/literal}{"g003_updating_metadata"|@translate}{literal}',
180          dialogClass: 'gcBgTabSheet gcBorder',
181          open: function(event, ui)
182          {
183            bH=$("div.ui-dialog-buttonpane").get(0).clientHeight;
184            $("#dialog").css('height', (this.clientHeight-bH)+"px");
185          },
186          buttons:
187          {
188            '{/literal}{"g003_ok"|@translate}{literal}':
189              function()
190              {
191                $(this).dialog('destroy').html("").get(0).removeAttribute('style');
192              }
193          }
194        }
195      )
196      .html("<br>{/literal}{'g003_analyze_is_finished'|@translate}{literal}&nbsp;("+displayTime(timeElapsed/1000)+")");
197
198      getStatus();
199    }
200  }
201
202
203
204</script>
205{/literal}
206
207<h2>{'g003_status_of_database'|@translate}</h2>
208
209<div id="dialog"></div>
210
211
212<div id="ianalyzestatus">
213  <ul>
214    <li>{'g003_loading'|@translate}</li>
215    <li>{'g003_loading'|@translate}</li>
216    <li>{'g003_loading'|@translate}</li>
217  </ul>
218</div>
219
220<div class="nfo">
221  <ul>
222    <li>{'g003_warning_on_analyze_4a'|@translate}</li>
223    <li>{'g003_warning_on_analyze_4b'|@translate}</li>
224  </ul>
225</div>
226
227
228<div id='ianalyzearea'>
229  <fieldset>
230    <legend>{'g003_update_metadata'|@translate}</legend>
231      <form class="formtable">
232        <div class="nfo">
233          <p>{'g003_warning_on_analyze_3'|@translate}</p>
234          <ul>
235            <li>{'g003_warning_on_analyze_3a'|@translate}</li>
236            <li>{'g003_warning_on_analyze_3b'|@translate}</li>
237          </ul>
238
239          <p>{'g003_warning_on_analyze_5'|@translate}</p>
240        </div>
241
242        <label>
243          <input type="radio" value="caddieAdd" name="fAMD_analyze_action" id="ianalyze_action2" checked>&nbsp;
244          {'g003_analyze_caddie_add_pictures'|@translate}
245        </label><br>
246
247        <label>
248          <input type="radio" value="caddieReplace" name="fAMD_analyze_action" id="ianalyze_action3">&nbsp;
249          {'g003_analyze_caddie_replace_pictures'|@translate}
250        </label><br>
251
252
253        <label>
254          <input type="radio" value="notAnalayzed" name="fAMD_analyze_action" id="ianalyze_action0">&nbsp;
255          {'g003_analyze_not_analyzed_pictures'|@translate}
256        </label><br>
257
258        <label>
259          <input type="radio" value="all" name="fAMD_analyze_action" id="ianalyze_action1">&nbsp;
260          {'g003_analyze_all_pictures'|@translate}
261        </label><br>
262
263        <div class="warning">
264          <p style="font-weight:bold; font-size:+2;">{'g003_warning_on_analyze_0'|@translate}</p>
265          <p>{'g003_warning_on_analyze_1'|@translate}</p>
266          <p  style="font-weight:bold;">{'g003_warning_on_analyze_2'|@translate}</p>
267        </div>
268
269
270        <br>
271        <input type="hidden" id="iamd_NumberOfItemsPerRequest" value="{$datas.NumberOfItemsPerRequest}">
272        <!--
273        {'g003_setting_nb_items_per_request'|@translate}&nbsp;
274        <div id="iamd_nb_item_per_request_slider"></div>
275        <div id="iamd_nb_item_per_request_display"></div>
276        <br><br>
277        -->
278
279        <input type="button" value="{'g003_analyze'|@translate}" onclick="doAnalyze();">
280
281      </form>
282  </fieldset>
283
284</div>
285
286
287
288
289<script type="text/javascript">
290  init();
291</script>
Note: See TracBrowser for help on using the repository browser.