source: trunk/grails-app/views/importer/common/_on_page.gsp @ 1514

Last change on this file since 1514 was 1514, checked in by t.w.abma@…, 9 years ago
  • removed popup solution for properties and changed it into simple "save" method to step 2 of importer wizard
  • Property svn:keywords set to Rev Author Date
File size: 5.7 KB
Line 
1<%
2        /**
3         * wizard refresh flow action
4         *
5         * When a page (/ partial) is rendered, any DOM event handlers need to be
6         * (re-)attached. The af:ajaxButton, af:ajaxSubmitJs and af:redirect tags
7         * supports calling a JavaScript after the page has been rendered by passing
8         * the 'afterSuccess' argument.
9         *
10         * Example:     af:redirect afterSuccess="onPage();"
11         *              af:redirect afterSuccess="console.log('redirecting...');"
12         *
13         * Generally one would expect this code to add jQuery event handlers to
14         * DOM objects in the rendered page (/ partial).
15         *
16         * @author Jeroen Wesbeek
17         * @since 20101206
18         *
19         * Revision information:
20         * $Rev: 1514 $
21         * $Author: t.w.abma@umcutrecht.nl $
22         * $Date: 2011-02-10 15:30:16 +0000 (do, 10 feb 2011) $
23         */
24%>
25<script type="text/javascript">
26        // Initially called when starting the import wizard
27        function onPage() {
28                // GENERAL
29                onStudyWizardPage();
30
31                $('#simplewizardform').submit(function() {
32                        if ($('#file').val() == "") {
33                                alert("Please choose your Excel file to import.");
34                                return false
35                        } else
36                        if ($('#entity').val() == "") {
37                                $('#datatemplate').addClass("validationfail");
38                                return false
39                        } else {
40                                $('#simplewizardform').submit();
41                        }
42
43                        return false;
44                });
45
46         // attach event to apply fuzzy matching
47         $('#fuzzymatchselect').click(function() {
48            refreshFlow()
49          });
50
51          $('#savepropertiesbutton').click(function() {
52            var width = 500
53            var height = 200
54            var vars = ""
55
56            $("#savemapping").toggle("scale")
57
58            if ($("#mappingname").val()) refreshFlow();
59
60            // get all properties
61            //$('select[name^=columnproperty.index.]').each ( function() {
62            //}           
63           
64            /*$('#propertiesManager').dialog({
65                    title       : "Properties manager",
66                    autoOpen    : true,
67                    width       : width,
68                    vars        : vars,
69                    height      : height,
70                    modal       : true,
71                    position    : 'center',
72                    buttons     : {
73                                    Save  : function() {
74                                                          //alert($(this).parent().$('input[name="mappingname"]').val())
75                                                          alert($(this))
76                                                          var p = $(this).parent().parent().parent()
77                                                          console.log(p.('input[name="mappingname"]').val())
78                                                          //alert(vars)
79                                                          $(this).dialog('close'); }
80                                  },
81                    close       : function() {
82                                    //onClose(this);
83                                    refreshFlow()
84                                  }
85                }).width(width - 10).height(height)
86              */
87
88          });
89
90          // attach function to clear button to reset all selects to "don't import"
91          $('#clearselect').click(function() {
92            // for each select field on the page
93            $("select").each( function(){
94            // set its value to its first option
95            $(this).val($('option:first', this).val());
96            });
97          });
98
99          // attach change event function to prevent duplicate selection of properties
100          $('select[name^=columnproperty.index.]').each ( function() {
101          $(this).bind('change', function(e) {
102              //console.log($(this).val())
103              var selection = $(this)
104
105              $('select[name^=columnproperty.index.] option:selected').each ( function() {
106                var selector = $(this)
107
108                if (selection.attr('id') != selector.parent().attr('id') && (selection.val()!="dontimport"))
109                  if ($(this).val() == selection.val()) {
110                    selection.val($('option:first', selection).val());
111
112                    alert("Property is already set for an other column, please choose a different property.")
113                    return false
114                  }
115              });
116          });
117          });
118        }
119
120        /**
121         * Update one select based on another select
122         *
123         * @author
124         * @see  http://www.grails.org/Tag+-+remoteFunction
125         * @param   string  select (form) name
126         * @param   string  JSON data
127         * @param   boolean keep the first option
128         * @param   int  selected option
129         * @param   string  if null, show this as option instead
130         * @void
131         */
132        function updateSelect(name, data, keepFirstOption, selected, presentNullAsThis) {
133                var rselect = $('#' + name).get(0)
134                var items = data
135
136                // If a study has been selected, don't show the "Choose study" field, otherwise do
137                if ($('#' + 'entity :selected').text() == 'Study')
138                        $('#studyfield').hide();
139                else $('#studyfield').show();
140
141                $('select[name=template_id]').attr('entity', $('#' + 'entity').val());
142
143                if (items) {
144
145                        // remove old options
146                        var start = (keepFirstOption) ? 0 : -1;
147                        var i = rselect.length
148
149                        while (i > start) {
150                                rselect.remove(i)
151                                i--
152                        }
153
154                        // add new options
155                        $.each(items, function() {
156                                var i = rselect.options.length
157
158                                rselect.options[i] = new Option(
159                                        (presentNullAsThis && this.name == null) ? presentNullAsThis : this.name,
160                                        this.id
161                                        );
162                                if (this.id == selected) rselect.options[i].selected = true
163                        });
164                }
165
166                // handle template selects
167                new SelectAddMore().init({
168                        rel      : 'template',
169                        url      : baseUrl + '/templateEditor',
170                        vars    : 'entity', // can be a comma separated list of variable names to pass on
171                        label   : 'add / modify ...',
172                        style   : 'modify',
173                        onClose : function(scope) {
174                                refreshFlow()
175                        }
176                });
177        }
178
179</script>
Note: See TracBrowser for help on using the repository browser.