1 /* ---------------------------------------------------------------------------
2 * Copyright (C) 2008 Georgia Public Library Service
3 * Bill Erickson <erickson@esilibrary.com>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * ---------------------------------------------------------------------------
19 * Create a new menu that can be used as a grid column picker. This version
20 * takes advantage of Dojo's 1.2 headerMenu attribute for selecting which
21 * columns to display. As columns are chosen, they are updated on the server
25 if(!dojo._hasResource['openils.widget.GridColumnPicker']) {
26 dojo.provide('openils.widget.GridColumnPicker');
27 dojo.require('dijit.Menu');
28 dojo.require('fieldmapper.Fieldmapper');
29 dojo.require('openils.Util');
32 'openils.widget.GridColumnPicker',
36 USER_PERSIST_SETTING : 'ui.grid_columns',
39 * Load the fields from the grid and map them to the MenuItem's.
40 * Load settings from server
42 init : function(grid, persistPrefix, authtoken) {
45 this.persistPrefix = persistPrefix
46 this.authtoken = authtoken;
47 this.cells = this.grid.structure[0].cells[0];
50 dojo.forEach(this.getChildren(),
52 for(var i in self.cells) {
53 var name = self.cells[i].name;
54 if(name == child.attr('label')) {
55 child.field = {label:name, ident:self.cells[i].field};
64 onClose : function() {
65 this.inherited('onClose',arguments);
70 * Save new settings on the server
72 persist : function() {
75 dojo.forEach(this.getChildren(),
78 selected.push(child.field.ident)
83 setting[this.USER_PERSIST_SETTING+'.'+this.persistPrefix] = {'columns':selected, 'auto':autoFields};
84 fieldmapper.standardRequest(
85 ['open-ils.actor', 'open-ils.actor.patron.settings.update'],
87 params: [this.authtoken, null, setting],
88 oncomplete: function(r) {
89 openils.Util.readResponse(r);
96 * Load existing settings from the server
100 fieldmapper.standardRequest(
101 ['open-ils.actor', 'open-ils.actor.patron.settings.retrieve'],
103 params: [this.authtoken, null, this.USER_PERSIST_SETTING+'.'+this.persistPrefix],
104 oncomplete: function(r) { self._loadCallback(r); }
109 _loadCallback : function(r) {
110 if(settings = openils.Util.readResponse(r)) {
111 dojo.forEach(this.getChildren(),
114 if(!openils.Util.arrayContains(settings.columns, child.field.ident)) {
115 child.attr("checked", false);
116 child.onChange(child.checked);