From e821a81aa994466eaffbf14cecf6c5b4cb98b572 Mon Sep 17 00:00:00 2001 From: j Date: Mon, 6 Dec 2010 17:42:05 +0000 Subject: [PATCH] validate, places --- build/js/ox.ui.js | 140 ++++++++++++++++++++++++++-------------------- 1 file changed, 79 insertions(+), 61 deletions(-) diff --git a/build/js/ox.ui.js b/build/js/ox.ui.js index 7770677..3d3932e 100644 --- a/build/js/ox.ui.js +++ b/build/js/ox.ui.js @@ -1987,24 +1987,24 @@ requires }); $.each(self.options.items, function(i, item) { - var id = item.element.options('id'); that.append(self.$items[i] = new Ox.FormItem(item)) .append(self.$messages[i] = new Ox.Element().addClass('OxFormMessage')); - // fixme: use widget.bindEvent() - Ox.Event.bind(id, 'validate', function(event, data) { - validate(i, data.valid); - }); - Ox.Event.bind(id, 'blur', function(event, data) { - validate(i, data.valid); - if (data.valid) { - self.$messages[i].html('').hide(); - } else { - self.$messages[i].html(data.message).show(); - } - }); - Ox.Event.bind(id, 'submit', function(event, data) { - self.formIsValid && that.submit(); - }); + item.element.bindEvent({ + validate: function(event, data) { + validate(i, data.valid); + }, + blur: function(event, data) { + validate(i, data.valid); + if (data.valid) { + self.$messages[i].html('').hide(); + } else { + self.$messages[i].html(data.message).show(); + } + }, + submit: function(event, data) { + self.formIsValid && that.submit(); + } + }); }); function getItemPositionById(id) { @@ -4666,15 +4666,13 @@ requires function findPlace(event, data) { Ox.print('findPlace', data); - self.$map.find(data.value, function(location) { - if (location) { - that.$label.html(location.name.formatted); - } + self.$map.find(data.value, function(place) { + place && that.$label.html(place.geoname); }) } function onSelect(event, data) { - that.$label.html(data.name.formatted); + that.$label.html(data.geoname); } function onZoom(event, data) { @@ -7292,42 +7290,62 @@ requires geocoder: new google.maps.Geocoder(), selected: -1 }); - $.each(self.options.places, function(i, place) { - place.bounds = getBounds(), - place.center = place.bounds.getCenter(); - $.extend(place, { - marker: new Marker(place), - polygon: new Polygon(place) + if (Ox.isObject(self.options.places[0])) { + $.each(self.options.places, function(i, place) { + place.bounds = getBounds(), + place.center = place.bounds.getCenter(); + $.extend(place, { + marker: new Marker(place), + polygon: new Polygon(place) + }); + self.bounds = i == 0 ? getBounds() : self.bounds.union(place.bounds); + self.options.places[i] = place; + function getBounds() { + return new google.maps.LatLngBounds( + new google.maps.LatLng(place.points.southwest[0], place.points.southwest[1]), + new google.maps.LatLng(place.points.northeast[0], place.points.northeast[1]) + ); + } + }); + loadMap(); + } else { + self.counter = 0; + $.each(self.options.places, function(i, place) { + getLocationByName(place, function(place) { + Ox.print(self.counter, i, place); + self.options.places[i] = place; + if (self.counter++ == self.options.places.length - 1) { + loadMap(); + } + }); }); - self.bounds = i == 0 ? getBounds() : self.bounds.union(place.bounds); - self.options.places[i] = place; - function getBounds() { - return new google.maps.LatLngBounds( - new google.maps.LatLng(place.points.southwest[0], place.points.southwest[1]), - new google.maps.LatLng(place.points.northeast[0], place.points.northeast[1]) - ); + } + + function loadMap() { + self.center = self.bounds ? self.bounds.getCenter() : new google.maps.LatLng(0, 0); + self.zoom = 1; + $.extend(self, { + map: new google.maps.Map(that.$element[0], { + center: self.center, + disableDefaultUI: true, + mapTypeId: google.maps.MapTypeId[self.options.type.toUpperCase()], + zoom: self.zoom + }) + }); + if (self.bounds) { + self.map.fitBounds(self.bounds); + // self.center = self.map.getCenter(); + self.zoom = self.map.getZoom(); } - }); - Ox.print('loadMap'); - Ox.print(self.bounds) - $.extend(self, { - map: new google.maps.Map(that.$element[0], { - center: self.bounds.getCenter(), - disableDefaultUI: true, - mapTypeId: google.maps.MapTypeId[self.options.type.toUpperCase()], - zoom: 0 - }) - }); - self.map.fitBounds(self.bounds); - self.center = self.map.getCenter(); - self.zoom = self.map.getZoom(); - google.maps.event.addListener(self.map, 'click', click); - google.maps.event.addListener(self.map, 'zoom_changed', zoomChanged); - $.each(self.options.places, function(i, place) { - place.marker.add(); - }); - resize(); - that.gainFocus(); + google.maps.event.addListener(self.map, 'click', click); + google.maps.event.addListener(self.map, 'zoom_changed', zoomChanged); + $.each(self.options.places, function(i, place) { + place.marker.add(); + }); + resize(); + that.gainFocus(); + } + function canContain(outerBounds, innerBounds) { var outerSpan = outerBounds.toSpan(), @@ -7602,7 +7620,7 @@ requires }; } - function Rectangle(area) { + function Rectangle(area) { // fixme: not used var latlng = { sw: new google.maps.LatLng(area[0][0], area[0][1]), ne: new google.maps.LatLng(area[1][0], area[1][1]) @@ -7648,15 +7666,15 @@ requires }; that.find = function(name, callback) { - getLocationByName(name, function(location) { - if (location) { + getLocationByName(name, function(place) { + if (place) { //self.marker = location.marker.add(); self.polygon && self.polygon.remove(); - self.polygon = location.polygon.add(); - self.bounds = location.bounds; + self.polygon = place.polygon.add(); + self.bounds = place.bounds; self.map.fitBounds(self.bounds); } - callback(location); + callback(place); }); };