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(args) {
44 this.grid = args.grid;
45 this.persistPrefix = args.prefix;
46 this.authtoken = args.authtoken;
47 this.cells = this.grid.structure[0].cells[0];
50 dojo.style(this.grid.domNode.id, 'visibility', 'hidden');
52 dojo.forEach(this.getChildren(),
54 for(var i in self.cells) {
55 var name = self.cells[i].name;
56 if(name == child.attr('label')) {
57 child.field = {label:name, ident:self.cells[i].field};
66 onClose : function() {
67 this.inherited('onClose',arguments);
72 * Save new settings on the server
74 persist : function() {
77 dojo.forEach(this.getChildren(),
80 selected.push(child.field.ident)
85 setting[this.USER_PERSIST_SETTING+'.'+this.persistPrefix] = {'columns':selected, 'auto':autoFields};
86 fieldmapper.standardRequest(
87 ['open-ils.actor', 'open-ils.actor.patron.settings.update'],
89 params: [this.authtoken, null, setting],
90 oncomplete: function(r) {
91 openils.Util.readResponse(r);
98 * Load existing settings from the server
102 fieldmapper.standardRequest(
103 ['open-ils.actor', 'open-ils.actor.patron.settings.retrieve'],
105 params: [this.authtoken, null, this.USER_PERSIST_SETTING+'.'+this.persistPrefix],
106 oncomplete: function(r) { self._loadCallback(r); }
111 _loadCallback : function(r) {
112 dojo.style(this.grid.domNode.id, 'visibility', 'visible');
113 if(settings = openils.Util.readResponse(r)) {
114 dojo.forEach(this.getChildren(),
117 if(!openils.Util.arrayContains(settings.columns, child.field.ident)) {
118 child.attr("checked", false);
119 child.onChange(child.checked);