Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support userdefined field and time filter on map view #616

Closed
kyungtaak opened this issue Oct 31, 2018 · 7 comments
Closed

Support userdefined field and time filter on map view #616

kyungtaak opened this issue Oct 31, 2018 · 7 comments
Assignees
Labels
@chart Chart Component and Widget @engine Issues related to engine enhancement Request Change and Feature Enhancement
Milestone

Comments

@kyungtaak
Copy link
Contributor

Is your feature request related to a problem? Please describe.
Map View 위젯 내에서

  • Map View 레이어내 사용자 정의 필드를 선반에 이동하였을 경우 또는 필터로 지정한 경우도 지원이 되지 않습니다.
  • List/Multi-Range/Relative 형태의 TimeFilter 는 지원되지 않습니다.

Describe the solution you'd like

  • 기존 대시보드의 Selection Filter 나 위젯내 사용자 정의 필드 및 필터가 지원되도록 구성합니다.

Describe alternatives you've considered
사용자 정의 필드는 집계타입의 필드와 집계 타입이 아닌 필드의 구분이 필요합니다.

  • Point Type Layer 내 원본보기 기능시 처리 고려
  • Line/Polygon Type Layer 시 집계타입 필드 제한

Additional context

  • GeoServer 내 WFS 를 활용하기 때문에 WFS 에서 지원하지 않는 확장 쿼리가 필요합니다.
@kyungtaak kyungtaak added enhancement Request Change and Feature Enhancement @chart Chart Component and Widget @engine Issues related to engine labels Oct 31, 2018
@kyungtaak kyungtaak added this to the 3.1.0 milestone Oct 31, 2018
@kyungtaak
Copy link
Contributor Author

@navis 아래와 같이 현재 존재하는 extension 으로 전달하였을 경우 단순 expression 을 포함한 select 질의시 아래와 같이 오류가 발생합니다. 확인 부탁드립니다. select 타입이 필요할수도 있을것 같은데요. 어떻게 생각하시는지요?

Extension 원본

{
  "type": "aggregation",
  "virtualColumns": [
    {
      "type": "expr",
      "outputName": "user_defined.gu_new",
      "expression": "\\\"gu\\\" + '_new'"
    }
  ],
  "dimensions": [
    {
      "type": "default",
      "dimension": "user_defined.gu_new",
      "outputName": "__s1"
    }
  ],
  "aggregators": [],
  "postAggregators": []
}

실제 WFS 쿼리

<GetFeature xmlns:wstxns1="http://www.opengis.net/wfs" wstxns1:service="WFS" version="1.1.0" outputFormat="application/json" viewParams="druid:{&quot;type&quot;:&quot;aggregation&quot;\,&quot;virtualColumns&quot;:[{&quot;type&quot;:&quot;expr&quot;\,&quot;outputName&quot;:&quot;user_defined.gu_new&quot;\,&quot;expression&quot;:&quot;\\\&quot;gu\\\&quot; + '_new'&quot;}]\,&quot;dimensions&quot;:[{&quot;type&quot;:&quot;default&quot;\,&quot;dimension&quot;:&quot;user_defined.gu_new&quot;\,&quot;outputName&quot;:&quot;__s1&quot;}]\,&quot;aggregators&quot;:[]\,&quot;postAggregators&quot;:[]}" maxFeatures="10">
  <wstxns1:Query wstxns1:queryType="GeoQuery" typeName="metatron:estate" srsName="EPSG:4326" xmlns:wstxns2="http://openstreemap.org" wstxns2:outputFormat="application/json">
    <PropertyName>gis.lat</PropertyName>
    <PropertyName>gis.lon</PropertyName>
    <PropertyName>gis.coord</PropertyName>
    <PropertyName>amt</PropertyName>
    <Filter>
      <And>
        <BBOX>
          <PropertyName>gis.coord</PropertyName>
          <Envelope service="2" srsName="EPSG:4326">
            <lowerCorner>126.8060772 37.4458596</lowerCorner>
            <upperCorner>127.1810908 37.6874771</upperCorner>
          </Envelope>
        </BBOX>
        <Or>
          <PropertyIsEqualTo>
            <PropertyName>gu</PropertyName>
            <Literal>강남구</Literal>
          </PropertyIsEqualTo>
        </Or>
      </And>
    </Filter>
  </wstxns1:Query>
</GetFeature>

GeoServer 오류 로그

2018-11-16T19:41:35,031 INFO [qtp1637506559-120] org.geoserver.wfs -
Request: getServiceInfo
2018-11-16T19:41:35,038 INFO [qtp1637506559-120] org.geoserver.ows - No namespace specified in request, searching for  xml reader by element name only
2018-11-16T19:41:35,225 INFO [qtp1637506559-120] io.druid.geoserver - <----- Query:
   feature type: estate
   filter: [[ gis.coord bbox POLYGON ((126.8060772 37.4458596, 126.8060772 37.6874771, 127.1810908 37.6874771, 127.1810908 37.4458596, 126.8060772 37.4458596)) ] AND [ gu = 강남구 ]]
   [properties: gis.coord, gis.lat, gis.lon, amt, py]
2018-11-16T19:41:35,235 INFO [qtp1637506559-120] io.druid.geoserver - -----> value : {"type":"aggregation","virtualColumns":[{"type":"expr","outputName":"user_defined.gu_new","expression":"\"gu\" + '_new'"}],"dimensions":[{"type":"default","dimension":"user_defined.gu_new","outputName":"__s1"}],"aggregators":[],"postAggregators":[]}
2018-11-16T19:41:35,273 INFO [qtp1637506559-120] io.druid.geoserver - ------> extension : DruidAggregation{virtualColumns=[ExprVirtualColumn{expression='"gu" + '_new'', outputName='user_defined.gu_new'}], dimensions=[DefaultDimensionSpec{dimension='user_defined.gu_new', outputName='__s1'}], aggregators=[], postAggregators=[], boundary='null', pointColumn='null', boundaryJoin={}}
2018-11-16T19:41:35,461 INFO [qtp1637506559-120] com.metamx.http.client.pool.ChannelResourceFactory - Generating: http://localhost:8082
2018-11-16T19:41:36,488 INFO [background-cacher-0] com.metamx.http.client.pool.ChannelResourceFactory - Generating: http://localhost:8082
2018-11-16T19:41:36,483 ERROR [qtp1637506559-120] org.geoserver.ows -
io.druid.query.QueryInterruptedException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_65]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_65]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_65]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[?:1.8.0_65]
	at com.fasterxml.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:125) ~[druidgeo-1.0-SNAPSHOT.jar:?]
	at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:230) ~[druidgeo-1.0-SNAPSHOT.jar:?]
	at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:167) ~[druidgeo-1.0-SNAPSHOT.jar:?]

Druid 오류 로그

2018-11-16T10:41:36,357 ERROR [qtp2021979938-242[groupBy_33dcae0c-59ef-47c3-aa18-7317620a2e90]] io.druid.server.QueryResource - Exception handling request: {class=io.druid.server.QueryResource, exceptionType=class java.lang.NullPointerException, exceptionMessage=null, exception=java.lang.NullPointerException, query=GroupByQuery{dataSource='estate', querySegmentSpec=LegacySegmentSpec{intervals=[0000-01-01T00:00:00.000Z/3000-01-01T00:00:00.000Z]}, granularity=AllGranularity, dimensions=[], dimFilter=(LucenePointFilter{field='gis.coord', type='BBOX', latitudes=[37.4458596, 37.6874771], longitudes=[126.8060772, 127.1810908]} && gu = 강남구), virtualColumns=[ExprVirtualColumn{expression='"gu" + '_new'', outputName='user_defined.gu_new'}, ExprVirtualColumn{expression='concat('POINT (', "gis.lon", ' ', "gis.lat",')')', outputName='gis.coord'}, ExprVirtualColumn{expression='gis.coord', outputName='__geometry'}], aggregatorSpecs=[GenericSketchAggregatorFactory{name='__s1', fieldName='__s1', sourceType=null, sketchOp=THETA, sketchParam=1048576, orderingSpecs=null, merge=false}], postAggregatorSpecs=[io.druid.query.sketch.SketchThetaPostAggregator@2d92821f], limitSpec=LimitSpec{columns=[], limit=10}, outputColumns=[count], context={allDimensionsForEmpty=false, allMetricsForEmpty=false, populateCache=false, queryId=33dcae0c-59ef-47c3-aa18-7317620a2e90, timeout=300000, useCache=false}}, peer=127.0.0.1}
java.lang.NullPointerException
	at io.druid.query.sketch.GenericSketchAggregatorFactory.resolve(GenericSketchAggregatorFactory.java:194) ~[?:?]
	at io.druid.query.BaseQuery.resolveQuery(BaseQuery.java:236) ~[druid-processing-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.query.QueryUtils.resolveQuery(QueryUtils.java:323) ~[druid-processing-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.query.QueryUtils$4.apply(QueryUtils.java:294) ~[druid-processing-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.query.QueryUtils$4.apply(QueryUtils.java:290) ~[druid-processing-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.query.Queries.iterate(Queries.java:411) ~[druid-processing-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.query.QueryUtils.resolveRecursively(QueryUtils.java:288) ~[druid-processing-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.server.BrokerQueryResource.prepareQuery(BrokerQueryResource.java:259) ~[druid-server-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at io.druid.server.QueryResource.doPost(QueryResource.java:283) [druid-server-0.9.1-SNAPSHOT.jar:0.9.1-SNAPSHOT]
	at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
	at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) [jersey-server-1.19.jar:1.19]
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) [jersey-servlet-1.19.jar:1.19]
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) [jersey-servlet-1.19.jar:1.19]
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) [jersey-servlet-1.19.jar:1.19]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:278) [guice-servlet-4.0-beta.jar:?]
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:268) [guice-servlet-4.0-beta.jar:?]
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:180) [guice-servlet-4.0-beta.jar:?]
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93) [guice-servlet-4.0-beta.jar:?]
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) [guice-servlet-4.0-beta.jar:?]
	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120) [guice-servlet-4.0-beta.jar:?]
	at com.google.inject.servlet.DelegatedGuiceFilter.doFilter(DelegatedGuiceFilter.java:86) [druid-services-0.9.1-SNAPSHOT.jar:?]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83) [jetty-servlets-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:364) [jetty-servlets-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1125) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1059) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248) [jetty-server-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620) [jetty-util-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540) [jetty-util-9.2.5.v20141112.jar:9.2.5.v20141112]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]

@navis
Copy link

navis commented Nov 19, 2018

"type": "view"
로 하고 쓰면 됨 (druid-geo/master)

@navis
Copy link

navis commented Nov 19, 2018

아, druid develop branch 를 써야 됨

@navis
Copy link

navis commented Nov 19, 2018

아, 안되겠다. 다른 방법이 있어야 겠네.

@kyungtaak
Copy link
Contributor Author

@navis 넵 정리되시면 알려주세요 :)

@kyungtaak
Copy link
Contributor Author

@navis 아래 처럼 viewparam 을 넣고, 진행을 하였는데요.

{
  "type": "view",
  "virtualColumns": [
    {
      "type": "expr",
      "outputName": "user_defined.gu_new",
      "expression": "\\\"gu\\\" + '_new'"
    }
  ],
  "dimensions": [
    {
      "type": "default",
      "dimension": "user_defined.gu_new",
      "outputName": "__s1"
    }
  ],
  "aggregators": [],
  "postAggregators": []
}

전체 WFS 쿼리는 아래와 같습니다.

<GetFeature xmlns:wstxns1="http://www.opengis.net/wfs" wstxns1:service="WFS" version="1.1.0" outputFormat="application/json" viewParams="druid:{&quot;type&quot;:&quot;view&quot;\,&quot;virtualColumns&quot;:[{&quot;type&quot;:&quot;expr&quot;\,&quot;outputName&quot;:&quot;user_defined.gu_new&quot;\,&quot;expression&quot;:&quot;\\\&quot;gu\\\&quot; + '_new'&quot;}]\,&quot;dimensions&quot;:[{&quot;type&quot;:&quot;default&quot;\,&quot;dimension&quot;:&quot;user_defined.gu_new&quot;\,&quot;outputName&quot;:&quot;__s1&quot;}]\,&quot;aggregators&quot;:[]\,&quot;postAggregators&quot;:[]}" maxFeatures="10">
  <wstxns1:Query wstxns1:queryType="GeoQuery" typeName="metatron:estate" srsName="EPSG:4326" xmlns:wstxns2="http://openstreemap.org" wstxns2:outputFormat="application/json">
    <PropertyName>gis.lat</PropertyName>
    <PropertyName>gis.lon</PropertyName>
    <PropertyName>gis.coord</PropertyName>
    <PropertyName>amt</PropertyName>
    <Filter>
      <And>
        <BBOX>
          <PropertyName>gis.coord</PropertyName>
          <Envelope service="2" srsName="EPSG:4326">
            <lowerCorner>126.8060772 37.4458596</lowerCorner>
            <upperCorner>127.1810908 37.6874771</upperCorner>
          </Envelope>
        </BBOX>
        <Or>
          <PropertyIsEqualTo>
            <PropertyName>gu</PropertyName>
            <Literal>강남구</Literal>
          </PropertyIsEqualTo>
        </Or>
      </And>
    </Filter>
  </wstxns1:Query>
</GetFeature>

오류는 아래와 같이 생성이 됩니다.

2018-11-26T16:08:42,040 INFO [qtp352359770-106] io.druid.geoserver - <----- Query:
   feature type: estate
   filter: [[ gis.coord bbox POLYGON ((126.8060772 37.4458596, 126.8060772 37.6874771, 127.1810908 37.6874771, 127.1810908 37.4458596, 126.8060772 37.4458596)) ] AND [ gu = 강남구 ]]
   [properties: gis.coord, gis.lat, gis.lon, amt, py]
2018-11-26T16:08:42,140 INFO [qtp352359770-106] io.druid.geoserver - ------> extension : DruidView{virtualColumns=[ExprVirtualColumn{expression='"gu" + '_new'', outputName='user_defined.gu_new'}], filter=null, columns=null, dimensions=[DefaultDimensionSpec{dimension='user_defined.gu_new', outputName='__s1'}]}
2018-11-26T16:08:42,141 ERROR [qtp352359770-106] org.geoserver.ows -
java.lang.NoSuchMethodError: io.druid.segment.VirtualColumns.override(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
	at io.druid.geoserver.DruidFeatureSource$DruidView.toQuery(DruidFeatureSource.java:393) ~[druidgeo-1.0-SNAPSHOT.jar:?]
	at io.druid.geoserver.DruidFeatureSource.toExtensionQuery(DruidFeatureSource.java:344) ~[druidgeo-1.0-SNAPSHOT.jar:?]
	at io.druid.geoserver.DruidFeatureSource.toDruidQuery(DruidFeatureSource.java:324) ~[druidgeo-1.0-SNAPSHOT.jar:?]
	at io.druid.geoserver.DruidFeatureSource.getCountInternal(DruidFeatureSource.java:182) ~[druidgeo-1.0-SNAPSHOT.jar:?]
	at org.geotools.data.store.ContentFeatureSource.getCount(ContentFeatureSource.java:464) ~[gt-data-18.4.jar:?]
	at org.geotools.data.store.ContentFeatureCollection.size(ContentFeatureCollection.java:226) ~[gt-data-18.4.jar:?]
	at org.geotools.feature.collection.DecoratingFeatureCollection.size(DecoratingFeatureCollection.java:89) ~[gt-main-18.4.jar:?]
	at org.geoserver.wfs.GetFeature.run(GetFeature.java:561) ~[gs-wfs-2.12.4.jar:2.12.4]
	at org.geoserver.wfs.DefaultWebFeatureService.getFeature(DefaultWebFeatureService.java:105) ~[gs-wfs-2.12.4.jar:2.12.4]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
	at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) ~[spring-aop-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:50) ~[gs-ows-2.12.4.jar:2.12.4]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) ~[spring-aop-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at com.sun.proxy.$Proxy104.getFeature(Unknown Source) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_65]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_65]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_65]
	at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_65]
	at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:855) [gs-ows-2.12.4.jar:2.12.4]
	at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:256) [gs-ows-2.12.4.jar:2.12.4]
	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:174) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api-3.1.0.jar:3.1.0]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) [spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:26) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:69) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:73) [gs-wms-2.12.4.jar:2.12.4]
	at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:66) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:41) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:37) [gs-platform-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:51) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:81) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:70) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:74) [gs-main-2.12.4.jar:2.12.4]
	at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) [spring-security-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
	at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:141) [gs-main-2.12.4.jar:2.12.4]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) [spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) [spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:90) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:79) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:46) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:42) [gs-main-2.12.4.jar:2.12.4]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:259) [jetty-servlets-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:222) [jetty-servlets-9.2.5.v20141112.jar:9.2.5.v20141112]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) [jetty-security-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.Server.handle(Server.java:499) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]

@kyungtaak
Copy link
Contributor Author

estate Datasource 기준 sample search api

{
    "dataSource": {
        "type": "default",
        "name": "estate"
    },
    "filters": [
        {
            "type": "time_list",
            "field": "event_time",
            "timeUnit": "MONTH",
            "byTimeUnit": "MONTH",
            "discontinuous": false,
            "valueList": [
                "Jul 2018"
            ]
        },
        {
            "type": "expr",
            "expr": "amt < 50000 && amt > 40000"
        },
        {
            "type": "include",
            "field": "gu_new",
            "ref": "user_defined",
            "valueList": [
                "강남구_new"
            ]
        },
        {
            "type": "spatial_bbox",
            "field": "gis",
            "lowerCorner": "126.8060772 37.4458596",
            "upperCorner": "127.1810908 37.6874771"
        }
    ],
    "shelf": {
        "type": "geo",
        "layers": [
            [
                {
            "type": "dimension",
            "name": "gis",
            "alias": "gis",
            "format": {
                "type": "geo"
            },
            "valuePair": null
        },
        {
            "type": "dimension",
            "name": "gu_new",
            "name": "gu_new",
            "ref": "user_defined"
        },
        {
            "type": "measure",
            "name": "amt",
            "alias": "amt",
            "aggregationType": "NONE"
        }
            ]
        ]
    },
    "userFields": [
        {
            "type": "user_expr",
            "name": "gu_new",
            "expr": "\"gu\" + '_new'",
            "role": "DIMENSION"
        }
    ],
    "limits": {
        "limit": 10
    },
    "resultFormat": {
        "type": "chart",
        "mode": "map",
        "columnDelimeter": "―"
    }
}

kyungtaak pushed a commit that referenced this issue Dec 6, 2018
* #659 changing map chart option panel

* #659 apply css, change layer option component

* #659 change name jido to map

* #659 fix map-chart input error

* #659 draw default map chart

* #659 editing map common, layer panel

* #659 editing map layer option panel

* #659 editing map layer panel

* #659 setting columns by changing pivot in layer panel

* #659 editing ui spec

* #659 change map ui spec

* #659 Map chart improvements

* #659 changing pivot to shelf in map chart

* #659 Map chart improvements

* #659 editing map pivot, context menu

* #659 Map chart improvements

* #659 merge ko.json

* #659 fix build error

* #659 set fieldList, color column, apply css

* #659 Map chart improvements: color

* #659 fix bug select size, color by column

* #659 Map chart improvements -> Layer & Legend

* #659 editing map shelf alias setting

* #659 add map chart shelf guide

* #659 hide layer type, shelf +,- buttons

* #659 change color schema setting

* #659 Map chart improvements -> color

* #659 Map chart improvements -> Resize

* #659 fix error save map chart

* #659 Map chart improvements -> Dashboard resize

* #659 convert pivot to shelf in embedded, page-widget

* #659 update map chart css

* #659 update map chart css

* #659 Fix gis field find error

* #659 Map chart improvements -> option check

* #659 Map chart improvements -> option check

* #659 Map chart improvements -> tooltip layer name

* #659 changing map tooltip position

* #659 set tooltip position

* #659 set default tooltip, set map chart recommendation

* #659 add pivot alias draw type

* #659 change map ui spec

* #659 add column name

* #659 Map chart improvements -> cluster

* #659 fix error init shelf column

* #659 Map chart improvements -> cluster color

* #659 Map chart improvements -> dashboard alias

* #659 change alias to name in column

* #659 Map chart improvements -> alias

* #659 fix tooltip, legend position error

* #659 change chart alias setting

* #659 Map chart improvements -> dashboard alias

* #659 Map chart improvements -> size by

* #659 add shelf null check

* #659 merge css

* #659 fix error map chart capture

* #659 remove geo_hash type in point

* #659 Map chart improvements -> Triangle angle change

* #659 save data zoom in map chart

* #659 Map chart improvements -> Dashboard tooltip

* #659 Map chart improvements -> white space background

* #659 changing minZoom setting

* #659 remove aggregation type in point, heatmap type

* #659 heatmap layer updated

* #659 Fixed an error that charts were not drawn when using custom fields

* #659 map-chart bugfix

* #659 edit aggregation type setting when convert pivot <-> shelf

* #659 add interaction settings

* #659 Map chart improvements -> min zoom

* #659 Map chart improvements -> fix color error

* #659 fix animation bug

* #659 Map chart improvements -> zero value color error

* #659 fix custom field bug

* #659 Map chart improvements -> layer

* #659 fix transparency bug

* #659 Map chart improvements -> fix save option error

* #659 edit hexagon parameter

* #659 edit aggregation type setting by layer type

* #659 Map chart improvements -> hexagon layer

* #659 init precision when change layer type

* #659 Map chart improvements -> other layer

* #659 change datasource setting

* #659 Map chart improvements -> line data

* #659 edit shelf guide in map

* #659 Map chart improvements -> polygon option

* #659 changing map selection filter, change layerNum

* #659 add custom field in map option panel

* #659 fix color by, stroke by column bug

* #659 change custom field setting in tooltip

* #659 Map chart improvements -> hexagon

* #659 change measure, dimension list in option panel

* #659 fix bug setting aggregation type in hexagon

* #659 Map chart improvements -> cluster

* #659 change selection filter setting

* #659 add selection color

* #659 update css, change tooltip position in line type

* #659 Map chart improvements -> cluster design

* #659 hide tooltip in heatmap

* #659 map-chart clustering layer added

* #659 Map chart improvements -> map option

* #659 add property "coverage" of clustering on layer of point type

* #659 map-chart clustering layer option text updated

* #659 fix tooltip bug when change layer type

* #659 Map chart improvements -> fixed heatmap color error

* #616 add view extension for selection query in WFS

* #920 add "geohex" type for geo aggregation, and set default aggregation type

* #616 add logic to handle empty AndFilter

* #659 support processing timestamp type field in wfs

* #659 change method in geo_hash, fix tooltip focus error

* #659 add specification (basemap, linelayer.linestyle, tilelayer.radius) for map chart

* #659 change selection filter, granularity setting

* #659 bugfix clustering option display

* #659 fix granularity, tooltip bug

* #659 fix handling user defined field as measure

* #659 update css

* #659 fix build error
alchan-lee pushed a commit that referenced this issue Dec 7, 2018
* #659 changing map chart option panel

* #659 apply css, change layer option component

* #659 change name jido to map

* #659 fix map-chart input error

* #659 draw default map chart

* #659 editing map common, layer panel

* #659 editing map layer option panel

* #659 editing map layer panel

* #659 setting columns by changing pivot in layer panel

* #659 editing ui spec

* #659 change map ui spec

* #659 Map chart improvements

* #659 changing pivot to shelf in map chart

* #659 Map chart improvements

* #659 editing map pivot, context menu

* #659 Map chart improvements

* #659 merge ko.json

* #659 fix build error

* #659 set fieldList, color column, apply css

* #659 Map chart improvements: color

* #659 fix bug select size, color by column

* #659 Map chart improvements -> Layer & Legend

* #659 editing map shelf alias setting

* #659 add map chart shelf guide

* #659 hide layer type, shelf +,- buttons

* #659 change color schema setting

* #659 Map chart improvements -> color

* #659 Map chart improvements -> Resize

* #659 fix error save map chart

* #659 Map chart improvements -> Dashboard resize

* #659 convert pivot to shelf in embedded, page-widget

* #659 update map chart css

* #659 update map chart css

* #659 Fix gis field find error

* #659 Map chart improvements -> option check

* #659 Map chart improvements -> option check

* #659 Map chart improvements -> tooltip layer name

* #659 changing map tooltip position

* #659 set tooltip position

* #659 set default tooltip, set map chart recommendation

* #659 add pivot alias draw type

* #659 change map ui spec

* #659 add column name

* #659 Map chart improvements -> cluster

* #659 fix error init shelf column

* #659 Map chart improvements -> cluster color

* #659 Map chart improvements -> dashboard alias

* #659 change alias to name in column

* #659 Map chart improvements -> alias

* #659 fix tooltip, legend position error

* #659 change chart alias setting

* #659 Map chart improvements -> dashboard alias

* #659 Map chart improvements -> size by

* #659 add shelf null check

* #659 merge css

* #659 fix error map chart capture

* #659 remove geo_hash type in point

* #659 Map chart improvements -> Triangle angle change

* #659 save data zoom in map chart

* #659 Map chart improvements -> Dashboard tooltip

* #659 Map chart improvements -> white space background

* #659 changing minZoom setting

* #659 remove aggregation type in point, heatmap type

* #659 heatmap layer updated

* #659 Fixed an error that charts were not drawn when using custom fields

* #659 map-chart bugfix

* #659 edit aggregation type setting when convert pivot <-> shelf

* #659 add interaction settings

* #659 Map chart improvements -> min zoom

* #659 Map chart improvements -> fix color error

* #659 fix animation bug

* #659 Map chart improvements -> zero value color error

* #659 fix custom field bug

* #659 Map chart improvements -> layer

* #659 fix transparency bug

* #659 Map chart improvements -> fix save option error

* #659 edit hexagon parameter

* #659 edit aggregation type setting by layer type

* #659 Map chart improvements -> hexagon layer

* #659 init precision when change layer type

* #659 Map chart improvements -> other layer

* #659 change datasource setting

* #659 Map chart improvements -> line data

* #659 edit shelf guide in map

* #659 Map chart improvements -> polygon option

* #659 changing map selection filter, change layerNum

* #659 add custom field in map option panel

* #659 fix color by, stroke by column bug

* #659 change custom field setting in tooltip

* #659 Map chart improvements -> hexagon

* #659 change measure, dimension list in option panel

* #659 fix bug setting aggregation type in hexagon

* #659 Map chart improvements -> cluster

* #659 change selection filter setting

* #659 add selection color

* #659 update css, change tooltip position in line type

* #659 Map chart improvements -> cluster design

* #659 hide tooltip in heatmap

* #659 map-chart clustering layer added

* #659 Map chart improvements -> map option

* #659 add property "coverage" of clustering on layer of point type

* #659 map-chart clustering layer option text updated

* #659 fix tooltip bug when change layer type

* #659 Map chart improvements -> fixed heatmap color error

* #616 add view extension for selection query in WFS

* #920 add "geohex" type for geo aggregation, and set default aggregation type

* #616 add logic to handle empty AndFilter

* #659 support processing timestamp type field in wfs

* #659 change method in geo_hash, fix tooltip focus error

* #659 add specification (basemap, linelayer.linestyle, tilelayer.radius) for map chart

* #659 change selection filter, granularity setting

* #659 bugfix clustering option display

* #659 fix granularity, tooltip bug

* #659 fix handling user defined field as measure

* #659 update css

* #659 fix build error
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
@chart Chart Component and Widget @engine Issues related to engine enhancement Request Change and Feature Enhancement
Projects
None yet
Development

No branches or pull requests

2 participants