www/views/itemlists/lists.js

Code
Comments
Other
Rev Date Author Line
7604 25 Feb 19 nicklas 1 /* $Id $
7604 25 Feb 19 nicklas 2   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 3   Copyright (C) 2015 Nicklas Nordborg
7604 25 Feb 19 nicklas 4
7604 25 Feb 19 nicklas 5   This file is part of BASE - BioArray Software Environment.
7604 25 Feb 19 nicklas 6   Available at http://base.thep.lu.se/
7604 25 Feb 19 nicklas 7
7604 25 Feb 19 nicklas 8   BASE is free software; you can redistribute it and/or
7604 25 Feb 19 nicklas 9   modify it under the terms of the GNU General Public License
7604 25 Feb 19 nicklas 10   as published by the Free Software Foundation; either version 3
7604 25 Feb 19 nicklas 11   of the License, or (at your option) any later version.
7604 25 Feb 19 nicklas 12
7604 25 Feb 19 nicklas 13   BASE is distributed in the hope that it will be useful,
7604 25 Feb 19 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
7604 25 Feb 19 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7604 25 Feb 19 nicklas 16   GNU General Public License for more details.
7604 25 Feb 19 nicklas 17
7604 25 Feb 19 nicklas 18   You should have received a copy of the GNU General Public License
7604 25 Feb 19 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7604 25 Feb 19 nicklas 20   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 21
7604 25 Feb 19 nicklas 22   @author Nicklas
7604 25 Feb 19 nicklas 23 */
7604 25 Feb 19 nicklas 24 'use strict';
7604 25 Feb 19 nicklas 25
7604 25 Feb 19 nicklas 26 var ItemLists = function()
7604 25 Feb 19 nicklas 27 {
7604 25 Feb 19 nicklas 28   var lists = {};
7604 25 Feb 19 nicklas 29   var selectedItemsInParentForm;
7604 25 Feb 19 nicklas 30   var subtypes;
7604 25 Feb 19 nicklas 31   
7604 25 Feb 19 nicklas 32   /**
7604 25 Feb 19 nicklas 33     Initialize the page.
7604 25 Feb 19 nicklas 34   */
7604 25 Feb 19 nicklas 35   lists.initPage = function()
7604 25 Feb 19 nicklas 36   {
7604 25 Feb 19 nicklas 37     var pageId = Doc.getPageId();
7604 25 Feb 19 nicklas 38     if (pageId == 'edit-page')
7604 25 Feb 19 nicklas 39     {
7604 25 Feb 19 nicklas 40       // Save + Close buttons
7604 25 Feb 19 nicklas 41       Buttons.addClickHandler('btnSave', lists.save);
7604 25 Feb 19 nicklas 42       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 43
7604 25 Feb 19 nicklas 44       // Tab validation
7604 25 Feb 19 nicklas 45       TabControl.addTabValidator('settings.info', lists.validateList);
7604 25 Feb 19 nicklas 46       TabControl.addTabActivateListener('settings.annotations', Annotations.onSwitchToAnnotationsTab);
7604 25 Feb 19 nicklas 47       
7604 25 Feb 19 nicklas 48       var frm = document.forms['list'];
7604 25 Feb 19 nicklas 49       if (frm.source)
7604 25 Feb 19 nicklas 50       {
7604 25 Feb 19 nicklas 51         // Create biomaterial list from selection of biomaterials
7604 25 Feb 19 nicklas 52         var parentForm = Data.get('sourceSelected', 'parent-form');
7604 25 Feb 19 nicklas 53         selectedItemsInParentForm = window.opener.Table.getSelected(parentForm)
7604 25 Feb 19 nicklas 54         if (selectedItemsInParentForm.length == 0)
7604 25 Feb 19 nicklas 55         {
7604 25 Feb 19 nicklas 56           Doc.element('sourceSelected').disabled = true;
7604 25 Feb 19 nicklas 57         }
7604 25 Feb 19 nicklas 58         else
7604 25 Feb 19 nicklas 59         {
7604 25 Feb 19 nicklas 60           Forms.checkRadio(frm.source, 'selected');
7604 25 Feb 19 nicklas 61           Doc.element('lblSelected').innerHTML += ' ['+selectedItemsInParentForm.length+']';
7604 25 Feb 19 nicklas 62         }
7604 25 Feb 19 nicklas 63         Events.addEventHandler('sourceSelected', 'click', lists.sourceOnChange);
7604 25 Feb 19 nicklas 64         Events.addEventHandler('sourcePage', 'click', lists.sourceOnChange);
7604 25 Feb 19 nicklas 65         Events.addEventHandler('sourceAll', 'click', lists.sourceOnChange);
7604 25 Feb 19 nicklas 66         lists.sourceOnChange();
7604 25 Feb 19 nicklas 67       }
7604 25 Feb 19 nicklas 68       
7604 25 Feb 19 nicklas 69       // Item subtype
7604 25 Feb 19 nicklas 70       subtypes = Data.json('page-data', 'subtypes');
7604 25 Feb 19 nicklas 71       Events.addEventHandler('memberType', 'change', lists.memberTypeOnChange);
7604 25 Feb 19 nicklas 72       lists.memberTypeOnChange();
7604 25 Feb 19 nicklas 73     }
7604 25 Feb 19 nicklas 74     else if (pageId == 'view-page')
7604 25 Feb 19 nicklas 75     {
7604 25 Feb 19 nicklas 76       var itemId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 77       var attributes = {'item-type': 'ITEMLIST', 'item-id': itemId};
7604 25 Feb 19 nicklas 78       Buttons.addClickHandler('btnEdit', Buttons.editItem, attributes);
7604 25 Feb 19 nicklas 79       Buttons.addClickHandler('btnDelete', Buttons.deleteItem, attributes);
7604 25 Feb 19 nicklas 80       Buttons.addClickHandler('btnRestore', Buttons.restoreItem, attributes);
7604 25 Feb 19 nicklas 81       Buttons.addClickHandler('btnUsingItems', Buttons.showUsingItems, attributes);
7604 25 Feb 19 nicklas 82       Buttons.addClickHandler('btnDeletePermanently', Buttons.deleteItemPermanently, attributes);
7604 25 Feb 19 nicklas 83       Buttons.addClickHandler('btnShare', Buttons.shareItem, attributes);
7604 25 Feb 19 nicklas 84       Buttons.addClickHandler('btnSetOwner', Buttons.setOwner, attributes);
7604 25 Feb 19 nicklas 85       Buttons.addClickHandler('btnExport', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 86       Buttons.addClickHandler('btnImport', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 87       Buttons.addClickHandler('btnRunPlugin', Buttons.runPlugin, attributes);
7604 25 Feb 19 nicklas 88       Buttons.addClickHandler('btnMergeUnion', lists.mergeOnClick);
7604 25 Feb 19 nicklas 89       Buttons.addClickHandler('btnMergeIntersection', lists.mergeOnClick);
7604 25 Feb 19 nicklas 90       Buttons.addClickHandler('btnMergeComplement', lists.mergeOnClick);
7604 25 Feb 19 nicklas 91       
7884 03 Dec 20 nicklas 92       Buttons.addClickHandler('btnAddSyncFilter', lists.newSyncFilter);
7604 25 Feb 19 nicklas 93       Buttons.addClickHandler('btnRemoveSyncFilter', lists.removeSyncFilterOnClick);
7604 25 Feb 19 nicklas 94       Buttons.addClickHandler('btnEnable', lists.enableFiltersOnClick);
7604 25 Feb 19 nicklas 95       Buttons.addClickHandler('btnDisable', lists.disableFiltersOnClick);
7604 25 Feb 19 nicklas 96       Buttons.addClickHandler('btnResync', lists.resyncFilters);
7604 25 Feb 19 nicklas 97       // sent after syncing is complete
7604 25 Feb 19 nicklas 98       Events.addEventHandler('btnResync', 'base-notify', App.reloadWindow);
7604 25 Feb 19 nicklas 99       
7604 25 Feb 19 nicklas 100       var inSync = Data.int('sync-data', 'is-in-sync');
7604 25 Feb 19 nicklas 101       var syncDisabled = Data.int('sync-data', 'sync-disabled');
7604 25 Feb 19 nicklas 102       if (!syncDisabled)
7604 25 Feb 19 nicklas 103       {
7604 25 Feb 19 nicklas 104         if (!inSync)
7604 25 Feb 19 nicklas 105         {
7604 25 Feb 19 nicklas 106           Doc.show('not-insync-warning', 'inline');
7604 25 Feb 19 nicklas 107         }
7604 25 Feb 19 nicklas 108         else if (Data.int('sync-data', 'num-syncfilters')>0)
7604 25 Feb 19 nicklas 109         {
7604 25 Feb 19 nicklas 110           Doc.show('insync-info', 'inline');
7604 25 Feb 19 nicklas 111         }
7604 25 Feb 19 nicklas 112       }
7604 25 Feb 19 nicklas 113       
7604 25 Feb 19 nicklas 114       TabControl.addTabActivateListener('main.annotations', AnnotationsList.loadOnce);
7604 25 Feb 19 nicklas 115       TabControl.addTabActivateListener('main.members', lists.viewMembers);
7604 25 Feb 19 nicklas 116       if (Doc.element('main.overview'))
7604 25 Feb 19 nicklas 117       {
7604 25 Feb 19 nicklas 118         TabControl.addTabActivateListener('main.overview', Overview.loadOnce);
7604 25 Feb 19 nicklas 119       }
7604 25 Feb 19 nicklas 120       TabControl.addTabActivateListener('main.history', History.loadOnce);
7604 25 Feb 19 nicklas 121     }
7604 25 Feb 19 nicklas 122     else if (pageId == 'list-page')
7604 25 Feb 19 nicklas 123     {
7604 25 Feb 19 nicklas 124       var attributes = {'item-type': 'ITEMLIST'};
7604 25 Feb 19 nicklas 125       var tableAttributes = {'table-id': 'lists'};
7604 25 Feb 19 nicklas 126       Buttons.addClickHandler('btnNewItem', lists.newItem, attributes);
7604 25 Feb 19 nicklas 127       Buttons.addClickHandler('btnDeleteItems', Buttons.deleteItems, tableAttributes);
7604 25 Feb 19 nicklas 128       Buttons.addClickHandler('btnRestoreItems', Buttons.restoreItems, tableAttributes);
7604 25 Feb 19 nicklas 129       Buttons.addClickHandler('btnShareItems', Buttons.shareItems, tableAttributes);
7604 25 Feb 19 nicklas 130       Buttons.addClickHandler('btnSetOwner', Buttons.setOwnerOfItems, tableAttributes);
7604 25 Feb 19 nicklas 131       Buttons.addClickHandler('btnColumns', Buttons.configureColumns, tableAttributes);
7604 25 Feb 19 nicklas 132       Buttons.addClickHandler('btnExport', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 133       Buttons.addClickHandler('btnImport', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 134       Buttons.addClickHandler('btnRunPlugin', Buttons.runListPlugin, tableAttributes);
7604 25 Feb 19 nicklas 135
7604 25 Feb 19 nicklas 136       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 137       Buttons.addClickHandler('btnOk', Buttons.returnSelected, tableAttributes);
7604 25 Feb 19 nicklas 138     }
7604 25 Feb 19 nicklas 139   }
7604 25 Feb 19 nicklas 140   
7604 25 Feb 19 nicklas 141   lists.newItem = function()
7604 25 Feb 19 nicklas 142   {
7604 25 Feb 19 nicklas 143     var controller = Items.getController('ITEMLIST');
7604 25 Feb 19 nicklas 144     Table.submitToPopup('lists', 'NewItem', controller.width, controller.height);
7604 25 Feb 19 nicklas 145   }
7604 25 Feb 19 nicklas 146   
7604 25 Feb 19 nicklas 147   lists.viewMembers = function()
7604 25 Feb 19 nicklas 148   {
7604 25 Feb 19 nicklas 149     var listId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 150     var url = 'members/index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 151     url += '&cmd=List&list_id='+listId;
7604 25 Feb 19 nicklas 152     location.replace(url);
7604 25 Feb 19 nicklas 153   }
7604 25 Feb 19 nicklas 154   
7604 25 Feb 19 nicklas 155   lists.mergeOnClick = function(event)
7604 25 Feb 19 nicklas 156   {
7604 25 Feb 19 nicklas 157     var target = event.currentTarget;
7604 25 Feb 19 nicklas 158     var mergeType = Data.get(target, 'merge-type');
7604 25 Feb 19 nicklas 159     var listId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 160     
7604 25 Feb 19 nicklas 161     var url = 'merge.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 162     url += '&item_id='+listId;
7604 25 Feb 19 nicklas 163     url += '&mergeType='+mergeType;
7604 25 Feb 19 nicklas 164     
7604 25 Feb 19 nicklas 165     Dialogs.openPopup(url, 'Merge', 600, 400);
7604 25 Feb 19 nicklas 166   }
7604 25 Feb 19 nicklas 167
7884 03 Dec 20 nicklas 168   lists.newSyncFilter = function(event)
7884 03 Dec 20 nicklas 169   {
7884 03 Dec 20 nicklas 170     var extraUrl = '&list_id='+Data.get('page-data', 'item-id');
7884 03 Dec 20 nicklas 171     var filterGroup = Data.get(event.currentTarget, 'filter-group');
7884 03 Dec 20 nicklas 172     if (filterGroup) extraUrl += '&filterGroup='+encodeURIComponent(filterGroup);
7884 03 Dec 20 nicklas 173     Items.newItem('SYNCFILTER', extraUrl);
7884 03 Dec 20 nicklas 174   }
7884 03 Dec 20 nicklas 175
7604 25 Feb 19 nicklas 176   lists.removeSyncFilterOnClick = function()
7604 25 Feb 19 nicklas 177   {
7604 25 Feb 19 nicklas 178     var tableDiv = Doc.element('tbl.syncFilters');
7604 25 Feb 19 nicklas 179     var numSelected = Table.checkIfSelected(tableDiv);
7604 25 Feb 19 nicklas 180     if (numSelected == 0) return;
7604 25 Feb 19 nicklas 181     
7604 25 Feb 19 nicklas 182     if (!confirm('You are about to remove '+numSelected+' filters. Continue?'))
7604 25 Feb 19 nicklas 183     {
7604 25 Feb 19 nicklas 184       return;
7604 25 Feb 19 nicklas 185     }
7604 25 Feb 19 nicklas 186     Table.submitToPopup(tableDiv, 'DeleteItems', 300, 200);
7604 25 Feb 19 nicklas 187   }
7604 25 Feb 19 nicklas 188   
7604 25 Feb 19 nicklas 189   lists.enableFiltersOnClick = function()
7604 25 Feb 19 nicklas 190   {
7604 25 Feb 19 nicklas 191     var tableDiv = Doc.element('tbl.syncFilters');
7604 25 Feb 19 nicklas 192     var numSelected = Table.checkIfSelected(tableDiv);
7604 25 Feb 19 nicklas 193     if (numSelected == 0) return;
7604 25 Feb 19 nicklas 194     
7604 25 Feb 19 nicklas 195     Table.submitToPopup(tableDiv, 'EnableFilters', 300, 200);
7604 25 Feb 19 nicklas 196   }
7604 25 Feb 19 nicklas 197
7604 25 Feb 19 nicklas 198   lists.disableFiltersOnClick = function()
7604 25 Feb 19 nicklas 199   {
7604 25 Feb 19 nicklas 200     var tableDiv = Doc.element('tbl.syncFilters');
7604 25 Feb 19 nicklas 201     var numSelected = Table.checkIfSelected(tableDiv);
7604 25 Feb 19 nicklas 202     if (numSelected == 0) return;
7604 25 Feb 19 nicklas 203
7604 25 Feb 19 nicklas 204     Table.submitToPopup(tableDiv, 'DisableFilters', 300, 200);
7604 25 Feb 19 nicklas 205   }
7604 25 Feb 19 nicklas 206   
7604 25 Feb 19 nicklas 207   lists.resyncFilters = function()
7604 25 Feb 19 nicklas 208   {
7604 25 Feb 19 nicklas 209     var listId = Data.get('page-data', 'item-id');
7604 25 Feb 19 nicklas 210     var url = 'resync.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 211     url += '&item_id='+listId;
7604 25 Feb 19 nicklas 212     Dialogs.openPopup(url, 'ReSync', 600, 400);
7604 25 Feb 19 nicklas 213   }
7604 25 Feb 19 nicklas 214   
7604 25 Feb 19 nicklas 215   lists.validateList = function()
7604 25 Feb 19 nicklas 216   {
7604 25 Feb 19 nicklas 217     var frm = document.forms['list'];
7604 25 Feb 19 nicklas 218     if (Strings.trim(frm.name.value) == '')
7604 25 Feb 19 nicklas 219     {
7604 25 Feb 19 nicklas 220       Forms.showNotification(frm.name, 'You must enter a name');
7604 25 Feb 19 nicklas 221       return false;
7604 25 Feb 19 nicklas 222     }
7604 25 Feb 19 nicklas 223     return true;
7604 25 Feb 19 nicklas 224   }
7604 25 Feb 19 nicklas 225
7604 25 Feb 19 nicklas 226   // Submit the form
7604 25 Feb 19 nicklas 227   lists.save = function()
7604 25 Feb 19 nicklas 228   {
7604 25 Feb 19 nicklas 229     var frm = document.forms['list'];
7604 25 Feb 19 nicklas 230     if (TabControl.validateActiveTab('settings'))
7604 25 Feb 19 nicklas 231     {
7604 25 Feb 19 nicklas 232       Annotations.saveModifiedAnnotationsToForm(frm);
7604 25 Feb 19 nicklas 233       if (selectedItemsInParentForm)
7604 25 Feb 19 nicklas 234       {
7604 25 Feb 19 nicklas 235         Forms.addHidden(frm, 'items', selectedItemsInParentForm.join(','));
7604 25 Feb 19 nicklas 236       }
7604 25 Feb 19 nicklas 237       frm.memberType.disabled = false;
7604 25 Feb 19 nicklas 238       frm.submit();
7604 25 Feb 19 nicklas 239     }
7604 25 Feb 19 nicklas 240   }
7604 25 Feb 19 nicklas 241   
7604 25 Feb 19 nicklas 242   lists.memberTypeOnChange = function()
7604 25 Feb 19 nicklas 243   {
7604 25 Feb 19 nicklas 244     var frm = document.forms['list'];
7604 25 Feb 19 nicklas 245     var memberType = frm.memberType.value;
7604 25 Feb 19 nicklas 246     
7604 25 Feb 19 nicklas 247     if (memberType == 'RAWBIOASSAY')
7604 25 Feb 19 nicklas 248     {
7604 25 Feb 19 nicklas 249       Doc.show('rawDataTypeRow');
7604 25 Feb 19 nicklas 250       Doc.hide('subtypeRow');
7604 25 Feb 19 nicklas 251     }
7604 25 Feb 19 nicklas 252     else
7604 25 Feb 19 nicklas 253     {
7604 25 Feb 19 nicklas 254       Doc.hide('rawDataTypeRow');
7604 25 Feb 19 nicklas 255       Doc.show('subtypeRow');
7604 25 Feb 19 nicklas 256       
7604 25 Feb 19 nicklas 257       frm.subtype_id.length = 0;
7604 25 Feb 19 nicklas 258       frm.subtype_id[0] = new Option('- any -', 0);
7604 25 Feb 19 nicklas 259       for (var i = 0; i < subtypes.length; i++)
7604 25 Feb 19 nicklas 260       {
7604 25 Feb 19 nicklas 261         var subtype = subtypes[i];
7604 25 Feb 19 nicklas 262         if (subtype.itemType == memberType)
7604 25 Feb 19 nicklas 263         {
7604 25 Feb 19 nicklas 264           var opt = new Option(subtype.name, subtype.id, false, subtype.current);
7604 25 Feb 19 nicklas 265           if (subtype.description) opt.title = subtype.description;
7604 25 Feb 19 nicklas 266           frm.subtype_id[frm.subtype_id.length] = opt;
7604 25 Feb 19 nicklas 267         }
7604 25 Feb 19 nicklas 268       }
7604 25 Feb 19 nicklas 269     }
7604 25 Feb 19 nicklas 270   }
7604 25 Feb 19 nicklas 271   
7604 25 Feb 19 nicklas 272   lists.sourceOnChange = function()
7604 25 Feb 19 nicklas 273   {
7604 25 Feb 19 nicklas 274     var frm = document.forms['list'];
7747 16 Sep 19 nicklas 275     if (frm.syncFilter) frm.syncFilter.disabled = !Doc.element('sourceAll').checked;
7604 25 Feb 19 nicklas 276   }
7604 25 Feb 19 nicklas 277   
7604 25 Feb 19 nicklas 278   lists.initElements = function(element, autoInit)
7604 25 Feb 19 nicklas 279   {
7604 25 Feb 19 nicklas 280     if (autoInit == 'sync-filter-edit') 
7604 25 Feb 19 nicklas 281     {
7604 25 Feb 19 nicklas 282       Events.addEventHandler(element, 'click', lists.modifySyncFilter);
7604 25 Feb 19 nicklas 283       Events.addEventHandler(element, 'base-selected-start', lists.syncFilterModified);
7604 25 Feb 19 nicklas 284     }
7604 25 Feb 19 nicklas 285     else if (autoInit == 'sync-filter-view')
7604 25 Feb 19 nicklas 286     {
7604 25 Feb 19 nicklas 287       Events.addEventHandler(element, 'click', lists.viewSyncFilterInTable);
7604 25 Feb 19 nicklas 288     }
7884 03 Dec 20 nicklas 289     else if (autoInit == 'new-sync-filter')
7884 03 Dec 20 nicklas 290     {
7884 03 Dec 20 nicklas 291       Buttons.addClickHandler(element, lists.newSyncFilter);
7884 03 Dec 20 nicklas 292     }
7604 25 Feb 19 nicklas 293     else if (autoInit == 'clone')
7604 25 Feb 19 nicklas 294     {
7604 25 Feb 19 nicklas 295       Buttons.addClickHandler(element, lists.copyListOnClick);
7604 25 Feb 19 nicklas 296     }
7604 25 Feb 19 nicklas 297   }
7604 25 Feb 19 nicklas 298   
7604 25 Feb 19 nicklas 299   lists.modifySyncFilter = function(event)
7604 25 Feb 19 nicklas 300   {
7604 25 Feb 19 nicklas 301     var target = event.currentTarget;
7604 25 Feb 19 nicklas 302     var syncFilterId = Data.get(target, 'syncfilter-id');
7604 25 Feb 19 nicklas 303     var sourceItemType = Data.get(target, 'source-item-type');
7604 25 Feb 19 nicklas 304     
7604 25 Feb 19 nicklas 305     var url = 'syncfilter/ajax.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 306     url += '&cmd=CopySyncFilterToItemContext';
7604 25 Feb 19 nicklas 307     url += '&syncfilter_id='+syncFilterId;
7604 25 Feb 19 nicklas 308
7604 25 Feb 19 nicklas 309     var request = Ajax.getXmlHttpRequest();
7604 25 Feb 19 nicklas 310     request.open("GET", url, true);
7604 25 Feb 19 nicklas 311     Ajax.setReadyStateHandler(request, 
7604 25 Feb 19 nicklas 312       function(request) 
7604 25 Feb 19 nicklas 313       {
7604 25 Feb 19 nicklas 314         Dialogs.selectItem(sourceItemType, target, 'selectfilter');
7604 25 Feb 19 nicklas 315       });
7604 25 Feb 19 nicklas 316     request.send(null);
7604 25 Feb 19 nicklas 317   }
7604 25 Feb 19 nicklas 318   
7604 25 Feb 19 nicklas 319   // When we are sure the current filter is in the item context,
7604 25 Feb 19 nicklas 320   // open the dialog
7604 25 Feb 19 nicklas 321   lists.syncFilterModified = function(event)
7604 25 Feb 19 nicklas 322   {
7604 25 Feb 19 nicklas 323     var syncFilterId = Data.get(event.currentTarget, 'syncfilter-id');
7604 25 Feb 19 nicklas 324     var url = 'syncfilter/ajax.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 325     url += '&cmd=CopyItemContextToSyncFilter';
7604 25 Feb 19 nicklas 326     url += '&syncfilter_id='+syncFilterId;
7604 25 Feb 19 nicklas 327     
7604 25 Feb 19 nicklas 328     var request = Ajax.getXmlHttpRequest();
7604 25 Feb 19 nicklas 329     request.open("GET", url, true);
7604 25 Feb 19 nicklas 330     Ajax.setReadyStateHandler(request, 
7604 25 Feb 19 nicklas 331       function(request)
7604 25 Feb 19 nicklas 332       {
7604 25 Feb 19 nicklas 333         location.reload();
7604 25 Feb 19 nicklas 334       });
7604 25 Feb 19 nicklas 335     request.send(null);
7604 25 Feb 19 nicklas 336   }
7604 25 Feb 19 nicklas 337
7604 25 Feb 19 nicklas 338   lists.viewSyncFilterInTable = function(event)
7604 25 Feb 19 nicklas 339   {
7604 25 Feb 19 nicklas 340     var target = event.currentTarget;
7604 25 Feb 19 nicklas 341     var syncFilterId = Data.get(target, 'syncfilter-id');
7604 25 Feb 19 nicklas 342     var sourceItemType = Data.get(target, 'source-item-type');
7604 25 Feb 19 nicklas 343     
7604 25 Feb 19 nicklas 344     var url = 'syncfilter/ajax.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 345     url += '&cmd=CopySyncFilterToItemContext';
7604 25 Feb 19 nicklas 346     url += '&syncfilter_id='+syncFilterId;
7604 25 Feb 19 nicklas 347
7604 25 Feb 19 nicklas 348     var request = Ajax.getXmlHttpRequest();
7604 25 Feb 19 nicklas 349     request.open("GET", url, true);
7604 25 Feb 19 nicklas 350     Ajax.setReadyStateHandler(request, 
7604 25 Feb 19 nicklas 351       function(request) 
7604 25 Feb 19 nicklas 352       {
7604 25 Feb 19 nicklas 353         Items.listWithHistory(sourceItemType);
7604 25 Feb 19 nicklas 354       });
7604 25 Feb 19 nicklas 355     request.send(null);
7604 25 Feb 19 nicklas 356   }
7604 25 Feb 19 nicklas 357
7604 25 Feb 19 nicklas 358   
7604 25 Feb 19 nicklas 359   // Click handler for cloning a list
7604 25 Feb 19 nicklas 360   lists.copyListOnClick = function(event)
7604 25 Feb 19 nicklas 361   {
7604 25 Feb 19 nicklas 362     var target = event.currentTarget;
7604 25 Feb 19 nicklas 363     var listId = Data.get(target, 'item-id');
7604 25 Feb 19 nicklas 364     Items.newItem('ITEMLIST', '&clone_id='+listId);
7604 25 Feb 19 nicklas 365   }
7604 25 Feb 19 nicklas 366
7604 25 Feb 19 nicklas 367   
7604 25 Feb 19 nicklas 368   return lists;
7604 25 Feb 19 nicklas 369 }();
7604 25 Feb 19 nicklas 370
7604 25 Feb 19 nicklas 371 Doc.onLoad(ItemLists.initPage);
7604 25 Feb 19 nicklas 372 Doc.addElementInitializer(ItemLists.initElements);