axelor / axelor-open-platform

Open source Java framework for business application development

Home Page:http://axelor.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[feat] domain expression, rvalue supports multi-layer attributes (multiple dots)

cabbage89 opened this issue · comments

<field colSpan="4" name="myOrder" title="my orders" domain="self.order.id = :persion.order.orderId"/>


:persion.order.orderId Can be parsed from the model

https://github.com/axelor/axelor-open-platform/blob/master/axelor-web/src/main/webapp/js/axelor.data.js#L148

post: function(data, config) {
            if (data?.data?._domain) {
              var i = 0;
              data.data._domain = data?.data?._domain?.replaceAll(/:([^\s]*)/g, (__, path) => {
                if (path.indexOf('.') !== -1) {
                  let p = `__f${i++}`;
                  try {
                    data.data._domainContext[p] = eval(`data.data._domainContext.${path}`);
                  }catch (e){
                    data.data._domainContext[p]=null;
                  }
                  return ':' + p;
                }
                return __;
              });
            }
            return $http.post(url, data, config);