From f0f2dc320f461a837645df46c31e0bbce6b52e5a Mon Sep 17 00:00:00 2001 From: Iliya Garakh Date: Tue, 5 Apr 2016 12:00:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=B0=20=D1=81=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=BE=D0=BC=20setValueById=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BB=D0=B8=D1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jquery.kladr.min.js | 2 +- kladr/js/core.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/jquery.kladr.min.js b/jquery.kladr.min.js index 03938d1..52c22ca 100644 --- a/jquery.kladr.min.js +++ b/jquery.kladr.min.js @@ -1 +1 @@ -!function(t,e){function n(t){var e={},n={type:"contentType",name:"query",withParents:"withParent"};t.parentType&&t.parentId&&(e[t.parentType+"Id"]=t.parentId);for(var a in t)r(t,a)&&t[a]&&(e[r(n,a)?n[a]:a]=t[a]);return e}function r(t,e){return t.hasOwnProperty(e)}function a(t){var n=e.console;n&&n.error&&n.error(t)}t.kladr={},function(){var n="https:"==e.location.protocol?"https:":"http:";t.kladr.url=n+"//kladr-api.ru/api.php"}(),t.kladr.type={region:"region",district:"district",city:"city",street:"street",building:"building"},t.kladr.typeCode={city:1,settlement:2,village:4},t.kladr.validate=function(e){var n=t.kladr.type;switch(e.type){case n.region:case n.district:case n.city:if(e.parentType&&!e.parentId)return a("parentId undefined"),!1;break;case n.street:if(e.parentType!=n.city)return a('parentType must equal "city"'),!1;if(!e.parentId)return a("parentId undefined"),!1;break;case n.building:if(!e.zip){if(!~t.inArray(e.parentType,[n.street,n.city]))return a('parentType must equal "street" or "city"'),!1;if(!e.parentId)return a("parentId undefined"),!1}break;default:if(!e.oneString)return a("type incorrect"),!1}return e.oneString&&e.parentType&&!e.parentId?(a("parentId undefined"),!1):e.typeCode&&e.type!=n.city?(a('type must equal "city"'),!1):e.limit<1?(a("limit must greater than 0"),!1):!0},t.kladr.api=function(e,r){if(!r)return void a("Callback undefined");if(!t.kladr.validate(e))return void r([]);var i=setTimeout(function(){r([]),i=null},3e3);t.ajax({url:t.kladr.url+"?callback=?",type:"get",data:n(e),dataType:"jsonp"}).done(function(t){i&&(r(t.result||[]),clearTimeout(i))})},t.kladr.check=function(e,n){return n?(e.withParents=!1,e.limit=1,void t.kladr.api(e,function(t){n(t&&t.length?t[0]:!1)})):void a("Callback undefined")}}(jQuery,window),function(t,e,n,r){function a(r,a){function i(t,e){return t.isGet?s.get(t.str[0]):(s.set(t),void e())}var s=function(){var e="kladr-data",n=r.data(e);return n||(n=t.extend({},u,d),r.data(e,n)),{set:function(t){if(t.obj)for(var a in t.obj)l(t.obj,a)&&l(u,a)&&(n[a]=t.obj[a]);else t.str&&!t.isGet&&l(u,t.str[0])&&(n[t.str[0]]=t.str[1]);r.data(e,n)},get:function(t){return l(u,t)||l(d,t)?n[t]:void 0},_set:function(t,a){n[t]=a,r.data(e,n)},_get:function(t){return l(n,t)?n[t]:void 0}}}();return i(a,function(){function a(a){var i=t(n.getElementById("kladr_autocomplete"));i.length||(i=t('
').appendTo(n.body));var l=x("guid");l?(V=i.find(".autocomplete"+l),A=i.find(".spinner"+l),t(e).off(L),r.off(L),V.off(L)):(l=o(),P("guid",l),r.attr("autocomplete","off"),V=t('').appendTo(i),A=t('').appendTo(i),m(),f(),b()),a()}function i(e,n){var r,a,i,o;V.empty();for(var l=0;l'+i+""),o.data("kladr-object",r),t("
  • ").append(o).appendTo(V)}function d(){var e,n,r;V.empty(),e="",n=u.noResultText,null!=n&&""!=n&&(r=t(''+n+""),r.data("kladr-object",{}),t("
  • ").append(r).appendTo(V))}function f(){var t=r.offset(),e=r.outerWidth(),n=r.outerHeight();if(t&&(f.top!=t.top||f.left!=t.left||f.width!=e||f.height!=n)){f.top=t.top,f.left=t.left,f.width=e,f.height=n,V.css({top:t.top+n+"px",left:t.left});var a=V.outerWidth()-V.width();V.width(e-a);var i=A.width(),o=A.height();A.css({top:t.top+(n-o)/2-1,left:t.left+e-i-2})}}function p(e){if(!(e.which>8&&e.which<46)){if(r.data(z,!1),!w("open_before"))return void v();_(null);var n=r.val();if(!t.trim(n))return B(!1),void v();var a=C(n);if(!w("send_before",a))return void v();T(),w("send"),x("source")(a,function(e){return w("receive",e),r.is(":focus")?t.trim(r.val())&&e.length?(G=!0,i(e,a),f(),I(),V.slideDown(50),void w("open")):(I(),_(null),d(),f(),V.slideDown(50),w("open"),void(G=!1)):(I(),void v())})}}function v(){w("close_before")&&(V.empty().hide(),w("close"))}function y(t){var e=V.find("li.active");switch(t.which){case c.up:e.length?(e.removeClass("active"),e.prev().length&&(e=e.prev())):e=V.find("li").last(),function(){var t=V.scrollTop(),n=V.offset(),r=e.outerHeight(),a=e.offset();a.top-n.top<0&&V.scrollTop(t-r)}(),e.addClass("active"),k();break;case c.down:e.length?(e.removeClass("active"),e.next().length&&(e=e.next())):e=V.find("li").first(),e.length&&!function(){var t=V.scrollTop(),n=V.height(),r=V.offset(),a=e.outerHeight(),i=e.offset();i.top-r.top+a>n&&V.scrollTop(t+a)}(),e.addClass("active"),k();break;case c.enter:v()}}function h(e){var n=t(e);n.is("a")&&(n=n.parents("li")),n.addClass("active"),k(),v()}function k(){if(w("select_before")){var t=V.find(".active a");t.length&&(r.val(t.attr("data-val")).data(z,!0),B(!1),_(t.data("kladr-object")),w("select",x("current")))}}function g(){function e(t,e){B(e),_(t)}if(x("verify")&&w("check_before")){var n=t.trim(r.val());if(!n)return void e(null,!1);if(x("current"))return void B(!1);var a=C(n);if(a.withParents=!1,a.limit=10,!w("send_before",a))return e(null,!1),void w("check",null);T(),w("send"),x("source")(a,function(n){function i(t,n){I(),e(t,n)}if(w("receive"),!t.trim(r.val()))return void i(null,!1);for(var o=a.name.toLowerCase(),l=null,u=null,d=0;d5||e()||setTimeout(a,100)}()}function w(e,n){if(!e)return!0;var a=e.replace(/_([a-z])/gi,function(t,e){return e.toUpperCase()});return r.trigger("kladr_"+e,n),"function"===t.type(x(a))?x(a).call(r.get(0),n)!==!1:!0}function T(){x("spinner")&&x("showSpinner")(A)}function I(){x("spinner")&&x("hideSpinner")(A)}function C(t){var e,n={},r=["token","key","type","typeCode","parentType","parentId","oneString","withParents","limit","strict"];for(e=0;e",u+=a.substr(l,o.length),u+="",u+=a.substr(l+o.length)):u+=""+a+"",u},valueFormat:function(e,n){var r;return n.oneString?e.parents?(r=[].concat(e.parents),r.push(e),t.kladr.buildAddress(r)):(e.typeShort?e.typeShort+". ":"")+e.name:e.name},showSpinner:function(t){var e=-.2,n=setInterval(function(){return t.is(":visible")?(t.css("background-position","0% "+e+"%"),e+=5.555556,void(e>95&&(e=-.2))):(clearInterval(n),void(n=null))},30);t.show()},hideSpinner:function(t){t.hide()}},d={current:null,controller:null},c={up:38,down:40,enter:13};t.kladr=t.extend(t.kladr,{setDefault:function(t,e){var n=i(t,e);if(n.obj)for(var r in n.obj)l(u,r)&&(u[r]=n.obj[r]);else n.str&&!n.isGet&&l(u,n.str[0])&&(u[n.str[0]]=n.str[1])},getDefault:function(t){return l(u,t)?u[t]:void 0},getInputs:function(e){var r=t(e||n.body),a="[data-kladr-type]";return r.filter(a).add(r.find(a))},setValues:function(e,n){var r,a,i="kladr_change.setvalues",o=t.kladr.type,u={},d=[];if(~t.inArray(t.type(e),["object","array"])){t.each(e,function(t,e){if(e){var n=e.contentType||e.type||t;l(o,n)&&(u[n]=e)}});for(a in o)l(o,a)&&u[a]&&(d[a]=u[a]);r=t.kladr.getInputs(n),function c(){var t,e,n;for(e in d)if(l(d,e)){n=d[e],delete d[e];break}if(e)return t=r.filter('[data-kladr-type="'+e+'"]'),t.length?void t.on(i,function(){t.off(i),c()}).kladr("controller").setValue(n):void c()}()}},getAddress:function(e,n){var r,a=t.kladr.getInputs(e),i=t.kladr.type,o={},u={};a.each(function(){var e,n,r,a=t(this);if(a.attr("data-kladr-id"))if(e=a.kladr("current"),a.attr("data-kladr-one-string")&&e.parents)for(n=[].concat(e.parents),n.push(e),r=0;r=35&&40>=n||n>=96&&105>=n;return t(this).val().length>=6?r:r||n>=48&&57>=n}),this.keyup(function(){function n(t){t?r.addClass("kladr-error"):r.removeClass("kladr-error")}var r=t(this),a=r.val();return a?void t.kladr.api({type:t.kladr.type.building,zip:a,withParents:!0,limit:1},function(r){var a=r.length&&r[0];r=[],a?(n(!1),a.parents&&(r=r.concat(a.parents)),r.push(a),t.kladr.setValues(r,e)):n(!0)}):void n(!1)}),this}}(jQuery); \ No newline at end of file +!function(t,e){function n(t){var e={},n={type:"contentType",name:"query",withParents:"withParent"};t.parentType&&t.parentId&&(e[t.parentType+"Id"]=t.parentId);for(var a in t)r(t,a)&&t[a]&&(e[r(n,a)?n[a]:a]=t[a]);return e}function r(t,e){return t.hasOwnProperty(e)}function a(t){var n=e.console;n&&n.error&&n.error(t)}t.kladr={},function(){var n="https:"==e.location.protocol?"https:":"http:";t.kladr.url=n+"//kladr-api.ru/api.php"}(),t.kladr.type={region:"region",district:"district",city:"city",street:"street",building:"building"},t.kladr.typeCode={city:1,settlement:2,village:4},t.kladr.validate=function(e){var n=t.kladr.type;switch(e.type){case n.region:case n.district:case n.city:if(e.parentType&&!e.parentId)return a("parentId undefined"),!1;break;case n.street:if(e.parentType!=n.city&&e.parentType!=n.street)return a('parentType must equal "city" or "street"'),!1;if(!e.parentId)return a("parentId undefined"),!1;break;case n.building:if(!e.zip){if(!~t.inArray(e.parentType,[n.street,n.city]))return a('parentType must equal "street" or "city"'),!1;if(!e.parentId)return a("parentId undefined"),!1}break;default:if(!e.oneString)return a("type incorrect"),!1}return e.oneString&&e.parentType&&!e.parentId?(a("parentId undefined"),!1):e.typeCode&&e.type!=n.city?(a('type must equal "city"'),!1):e.limit<1?(a("limit must greater than 0"),!1):!0},t.kladr.api=function(e,r){if(!r)return void a("Callback undefined");if(!t.kladr.validate(e))return void r([]);var i=setTimeout(function(){r([]),i=null},3e3);t.ajax({url:t.kladr.url+"?callback=?",type:"get",data:n(e),dataType:"jsonp"}).done(function(t){i&&(r(t.result||[]),clearTimeout(i))})},t.kladr.check=function(e,n){return n?(e.withParents=!1,e.limit=1,void t.kladr.api(e,function(t){n(t&&t.length?t[0]:!1)})):void a("Callback undefined")}}(jQuery,window),function(t,e,n,r){function a(r,a){function i(t,e){return t.isGet?s.get(t.str[0]):(s.set(t),void e())}var s=function(){var e="kladr-data",n=r.data(e);return n||(n=t.extend({},u,d),r.data(e,n)),{set:function(t){if(t.obj)for(var a in t.obj)l(t.obj,a)&&l(u,a)&&(n[a]=t.obj[a]);else t.str&&!t.isGet&&l(u,t.str[0])&&(n[t.str[0]]=t.str[1]);r.data(e,n)},get:function(t){return l(u,t)||l(d,t)?n[t]:void 0},_set:function(t,a){n[t]=a,r.data(e,n)},_get:function(t){return l(n,t)?n[t]:void 0}}}();return i(a,function(){function a(a){var i=t(n.getElementById("kladr_autocomplete"));i.length||(i=t('
    ').appendTo(n.body));var l=x("guid");l?(V=i.find(".autocomplete"+l),A=i.find(".spinner"+l),t(e).off(L),r.off(L),V.off(L)):(l=o(),P("guid",l),r.attr("autocomplete","off"),V=t('').appendTo(i),A=t('').appendTo(i),m(),f(),b()),a()}function i(e,n){var r,a,i,o;V.empty();for(var l=0;l'+i+""),o.data("kladr-object",r),t("
  • ").append(o).appendTo(V)}function d(){var e,n,r;V.empty(),e="",n=u.noResultText,null!=n&&""!=n&&(r=t(''+n+""),r.data("kladr-object",{}),t("
  • ").append(r).appendTo(V))}function f(){var t=r.offset(),e=r.outerWidth(),n=r.outerHeight();if(t&&(f.top!=t.top||f.left!=t.left||f.width!=e||f.height!=n)){f.top=t.top,f.left=t.left,f.width=e,f.height=n,V.css({top:t.top+n+"px",left:t.left});var a=V.outerWidth()-V.width();V.width(e-a);var i=A.width(),o=A.height();A.css({top:t.top+(n-o)/2-1,left:t.left+e-i-2})}}function p(e){if(!(e.which>8&&e.which<46)){if(r.data(z,!1),!w("open_before"))return void v();_(null);var n=r.val();if(!t.trim(n))return B(!1),void v();var a=C(n);if(!w("send_before",a))return void v();T(),w("send"),x("source")(a,function(e){return w("receive",e),r.is(":focus")?t.trim(r.val())&&e.length?(G=!0,i(e,a),f(),I(),V.slideDown(50),void w("open")):(I(),_(null),d(),f(),V.slideDown(50),w("open"),void(G=!1)):(I(),void v())})}}function v(){w("close_before")&&(V.empty().hide(),w("close"))}function y(t){var e=V.find("li.active");switch(t.which){case c.up:e.length?(e.removeClass("active"),e.prev().length&&(e=e.prev())):e=V.find("li").last(),function(){var t=V.scrollTop(),n=V.offset(),r=e.outerHeight(),a=e.offset();a.top-n.top<0&&V.scrollTop(t-r)}(),e.addClass("active"),k();break;case c.down:e.length?(e.removeClass("active"),e.next().length&&(e=e.next())):e=V.find("li").first(),e.length&&!function(){var t=V.scrollTop(),n=V.height(),r=V.offset(),a=e.outerHeight(),i=e.offset();i.top-r.top+a>n&&V.scrollTop(t+a)}(),e.addClass("active"),k();break;case c.enter:v()}}function h(e){var n=t(e);n.is("a")&&(n=n.parents("li")),n.addClass("active"),k(),v()}function k(){if(w("select_before")){var t=V.find(".active a");t.length&&(r.val(t.attr("data-val")).data(z,!0),B(!1),_(t.data("kladr-object")),w("select",x("current")))}}function g(){function e(t,e){B(e),_(t)}if(x("verify")&&w("check_before")){var n=t.trim(r.val());if(!n)return void e(null,!1);if(x("current"))return void B(!1);var a=C(n);if(a.withParents=!1,a.limit=10,!w("send_before",a))return e(null,!1),void w("check",null);T(),w("send"),x("source")(a,function(n){function i(t,n){I(),e(t,n)}if(w("receive"),!t.trim(r.val()))return void i(null,!1);for(var o=a.name.toLowerCase(),l=null,u=null,d=0;d5||e()||setTimeout(a,100)}()}function w(e,n){if(!e)return!0;var a=e.replace(/_([a-z])/gi,function(t,e){return e.toUpperCase()});return r.trigger("kladr_"+e,n),"function"===t.type(x(a))?x(a).call(r.get(0),n)!==!1:!0}function T(){x("spinner")&&x("showSpinner")(A)}function I(){x("spinner")&&x("hideSpinner")(A)}function C(t){var e,n={},r=["token","key","type","typeCode","parentType","parentId","oneString","withParents","limit","strict"];for(e=0;e",u+=a.substr(l,o.length),u+="",u+=a.substr(l+o.length)):u+=""+a+"",u},valueFormat:function(e,n){var r;return n.oneString?e.parents?(r=[].concat(e.parents),r.push(e),t.kladr.buildAddress(r)):(e.typeShort?e.typeShort+". ":"")+e.name:e.name},showSpinner:function(t){var e=-.2,n=setInterval(function(){return t.is(":visible")?(t.css("background-position","0% "+e+"%"),e+=5.555556,void(e>95&&(e=-.2))):(clearInterval(n),void(n=null))},30);t.show()},hideSpinner:function(t){t.hide()}},d={current:null,controller:null},c={up:38,down:40,enter:13};t.kladr=t.extend(t.kladr,{setDefault:function(t,e){var n=i(t,e);if(n.obj)for(var r in n.obj)l(u,r)&&(u[r]=n.obj[r]);else n.str&&!n.isGet&&l(u,n.str[0])&&(u[n.str[0]]=n.str[1])},getDefault:function(t){return l(u,t)?u[t]:void 0},getInputs:function(e){var r=t(e||n.body),a="[data-kladr-type]";return r.filter(a).add(r.find(a))},setValues:function(e,n){var r,a,i="kladr_change.setvalues",o=t.kladr.type,u={},d=[];if(~t.inArray(t.type(e),["object","array"])){t.each(e,function(t,e){if(e){var n=e.contentType||e.type||t;l(o,n)&&(u[n]=e)}});for(a in o)l(o,a)&&u[a]&&(d[a]=u[a]);r=t.kladr.getInputs(n),function c(){var t,e,n;for(e in d)if(l(d,e)){n=d[e],delete d[e];break}if(e)return t=r.filter('[data-kladr-type="'+e+'"]'),t.length?void t.on(i,function(){t.off(i),c()}).kladr("controller").setValue(n):void c()}()}},getAddress:function(e,n){var r,a=t.kladr.getInputs(e),i=t.kladr.type,o={},u={};a.each(function(){var e,n,r,a=t(this);if(a.attr("data-kladr-id"))if(e=a.kladr("current"),a.attr("data-kladr-one-string")&&e.parents)for(n=[].concat(e.parents),n.push(e),r=0;r=35&&40>=n||n>=96&&105>=n;return t(this).val().length>=6?r:r||n>=48&&57>=n}),this.keyup(function(){function n(t){t?r.addClass("kladr-error"):r.removeClass("kladr-error")}var r=t(this),a=r.val();return a?void t.kladr.api({type:t.kladr.type.building,zip:a,withParents:!0,limit:1},function(r){var a=r.length&&r[0];r=[],a?(n(!1),a.parents&&(r=r.concat(a.parents)),r.push(a),t.kladr.setValues(r,e)):n(!0)}):void n(!1)}),this}}(jQuery); \ No newline at end of file diff --git a/kladr/js/core.js b/kladr/js/core.js index b196047..5aecc46 100644 --- a/kladr/js/core.js +++ b/kladr/js/core.js @@ -55,8 +55,9 @@ } break; case type.street: - if (query.parentType != type.city) { - error('parentType must equal "city"'); + + if (query.parentType != type.city && query.parentType != type.street) { + error('parentType must equal "city" or "street"'); return false; } if (!query.parentId) {