a9d67a84f36d2a3bc603c0f3cb30e06698b270dd
[motion.git] / public / assets / plugins / angular-elastic-builder-back / dist / angular-elastic-builder.min.js
1 !function(e){"use strict";e.module("angular-elastic-builder",["RecursionHelper"])}(window.angular),function(e){"use strict";e.module("angular-elastic-builder").directive("elasticBuilder",["elasticQueryService",function(e){return{scope:{data:"=elasticBuilder"},templateUrl:"angular-elastic-builder/BuilderDirective.html",link:function(n){var t=n.data;n.filters=[],n.removeChild=function(e){n.filters.splice(e,1)},n.addRule=function(){n.filters.push({})},n.addGroup=function(){n.filters.push({type:"group",subType:"$and",rules:[]})},n.$watch("data.needsUpdate",function(a){a&&(n.filters=e.toFilters(t.query,n.data.fields),n.data.needsUpdate=!1)}),n.$watch("filters",function(a){a&&(t.query=e.toQuery(n.filters,n.data.fields))},!0)}}}])}(window.angular),function(e){"use strict";var n=e.module("angular-elastic-builder");n.directive("elasticBuilderChooser",["RecursionHelper","groupClassHelper",function(e,n){return{scope:{elasticFields:"=",item:"=elasticBuilderChooser",onRemove:"&"},templateUrl:"angular-elastic-builder/ChooserDirective.html",compile:function(t){return e.compile(t,function(e,t,a){var l=e.depth=+a.depth,i=e.item;e.getGroupClassName=function(){var e=l;return"group"===i.type&&e++,n(e)}})}}}])}(window.angular),function(e){"use strict";var n=e.module("angular-elastic-builder");n.directive("elasticBuilderGroup",["RecursionHelper","groupClassHelper",function(e,n){return{scope:{elasticFields:"=",group:"=elasticBuilderGroup",onRemove:"&"},templateUrl:"angular-elastic-builder/GroupDirective.html",compile:function(t){return e.compile(t,function(e,t,a){var l=e.depth=+a.depth,i=e.group;e.addRule=function(){i.rules.push({})},e.addGroup=function(){i.rules.push({type:"group",subType:"$and",rules:[]})},e.removeChild=function(e){i.rules.splice(e,1)},e.getGroupClassName=function(){return n(l+1)}})}}}])}(window.angular),function(e){"use strict";var n=e.module("angular-elastic-builder");n.directive("elasticBuilderRule",[function(){return{scope:{elasticFields:"=",rule:"=elasticBuilderRule",onRemove:"&"},templateUrl:"angular-elastic-builder/RuleDirective.html",link:function(e){e.getType=function(){var n=e.elasticFields,t=e.rule.field;return n&&t?"boolean"===n[t].subType?"boolean":n[t].type:void 0}}}}])}(window.angular),function(e){"use strict";var n=e.module("angular-elastic-builder");n.directive("elasticType",[function(){return{scope:{type:"=elasticType",rule:"=",guide:"="},template:'<ng-include src="getTemplateUrl()" />',link:function(e){e.getTemplateUrl=function(){var n=e.type;if(n)return n=n.charAt(0).toUpperCase()+n.slice(1),"angular-elastic-builder/types/"+n+".html"},e.booleans=["False","True"],e.booleansOrder=["True","False"],e.inputNeeded=function(){var n=["equals","notEquals","$gt","$gte","$lt","$lte"];return~n.indexOf(e.rule.subType)}}}}])}(window.angular),function(e){"use strict";e.module("angular-elastic-builder").factory("groupClassHelper",function(){return function(e){var n=[""];return n[e%n.length]}})}(window.angular),function(e){"use strict";function n(e,n){var t=e.map(a.bind(e,n));return t}function t(e,n){var t=e.map(l.bind(e,n)).filter(function(e){return!!e});return t}function a(e,n,t){t!==!1&&(t=!0);var l=Object.keys(n)[0],s={or:"group",and:"group",range:"number"},r=s[l]||"item",o=i(r);switch(l){case"$or":case"$and":o.rules=n[l].map(a.bind(n,e)),o.subType=l;break;case"missing":case"exists":o.field=n[l].field,o.subType={exists:"exists",missing:"notExists"}[l],delete o.value;break;case"term":case"terms":o.field=Object.keys(n[l])[0];var u=e[Object.keys(n[l])[0]];if("multi"===u.type){var c=n[l][o.field];"string"==typeof c&&(c=[c]),o.values=u.choices.reduce(function(e,a){return e[a]=t===n[l][o.field].indexOf(a)>-1,e},{})}else o.subType=t?"equals":"notEquals",o.value=n[l][o.field],"number"==typeof o.value&&(o.subType="boolean");break;case"range":o.field=Object.keys(n[l])[0],o.subType=Object.keys(n[l][o.field])[0],o.value=n[l][o.field][o.subType];break;case"not":o=a(e,n[l].filter,!1);break;default:o.field=Object.keys(n[l])[0]}return o}function l(e,n){var t={};if("group"===n.type)return t[n.subType]=n.rules.map(l.bind(n,e)).filter(function(e){return!!e}),t;var a=n.field,i=e[a];if(a){switch(i.type){case"term":if("boolean"===i.subType&&(n.subType="boolean"),!n.subType)return;switch(n.subType){case"equals":case"boolean":if(void 0===n.value)return;t[a]=n.value;break;case"notEquals":if(void 0===n.value)return;t[a]={$ne:n.value};break;case"exists":t.exists={field:a};break;case"notExists":t.missing={field:a};break;default:throw new Error("unexpected subtype "+n.subType)}break;case"select":case"number":switch(t[a]={},n.subType){case"equals":t[a]=n.value;break;default:t[a][n.subType]=n.value}break;case"date":if("exists"===n.subType)t.exists={field:a};else{if("notExists"!==n.subType)throw new Error("unexpected subtype");t.missing={field:a}}break;case"multi":t.terms={},t.terms[a]=Object.keys(n.values||{}).reduce(function(e,t){return n.values[t]&&e.push(t),e},[]);break;default:throw new Error("unexpected type")}return t}}function i(n){var t={group:{type:"group",subType:"",rules:[]},item:{field:"",subType:"",value:""},number:{field:"",subType:"",value:null}};return e.copy(t[n])}e.module("angular-elastic-builder").factory("elasticQueryService",[function(){return{toFilters:n,toQuery:t}}])}(window.angular),function(e){"use strict";e.module("angular-elastic-builder").run(["$templateCache",function(e){e.put("angular-elastic-builder/BuilderDirective.html",'<!-- <div class="elastic-builder">\n  <div class="filter-panels"> -->\n    <div class="list-group form-inline list-group-item-custom">\n      <div\n        data-ng-repeat="filter in filters"\n        data-elastic-builder-chooser="filter"\n        data-elastic-fields="data.fields"\n        data-on-remove="removeChild($index)"\n        data-depth="0"></div>\n      <div class="list-group-item actions">\n        <a href="#" class="btn green btn-sm" data-ng-click="addRule()">\n                                 <i class="icon-plus"></i> {{ \'APPLICATION_ADD_CONDITION\' | translate }}\n                           </a>\n        <a href="#" class="btn green btn-sm" data-ng-click="addGroup()">\n                                  <i class="icon-plus"></i> {{ \'APPLICATION_ADD_GROUP\' | translate }}\n                               </a>\n      </div>\n    </div>\n  <!-- </div>\n</div> -->\n'),e.put("angular-elastic-builder/ChooserDirective.html",'<div class="list-group-item elastic-builder-chooser list-group-item-custom" data-ng-class="getGroupClassName()">\n  <div data-ng-if="item.type === \'group\'"\n    data-elastic-builder-group="item"\n    data-depth="{{ depth }}"\n    data-elastic-fields="elasticFields"\n    data-on-remove="onRemove()"></div>\n  <div data-ng-if="item.type !== \'group\'"\n    data-elastic-builder-rule="item"\n    data-elastic-fields="elasticFields"\n    data-on-remove="onRemove()"></div>\n</div>\n'),e.put("angular-elastic-builder/GroupDirective.html",'<!-- BEGIN Portlet PORTLET-->\n<div class="portlet light bordered">\n  <div class="portlet-title">\n    <div class="caption font-green-sharp">\n      <!-- <i class="icon-people font-green-sharp"></i> -->\n      <h5><span class="caption-subject">If</span>\n        <select data-ng-model="group.subType" class="form-control">\n          <option value="$and"><strong>all</strong></option>\n          <option value="$or"><strong>any</strong></option>\n        </select>\n        <span class="caption-subject">of these conditions are met</span>\n      </h5>\n    </div>\n  </div>\n  <div class="portlet-body">\n    <div class="elastic-builder-group">\n      <div\n        data-ng-repeat="rule in group.rules"\n        data-elastic-builder-chooser="rule"\n        data-elastic-fields="elasticFields"\n        data-depth="{{ +depth + 1 }}"\n        data-on-remove="removeChild($index)"></div>\n\n      <div class="list-group-item actions list-group-item-custom" data-ng-class="getGroupClassName()">\n        <a href="#" class="btn green btn-sm" data-ng-click="addRule()">\n          <i class="icon-plus"></i> {{ \'APPLICATION_ADD_CONDITION\' | translate }}\n        </a>\n        <a class="btn red btn-sm remover" data-ng-click="onRemove()">\n          <i class="icon-trash"></i> {{ \'APPLICATION_REMOVE_GROUP\' | translate }}\n        </a>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- END Portlet PORTLET-->\n'),e.put("angular-elastic-builder/RuleDirective.html",'<!-- <div class="elastic-builder-rule"> -->\n  <select class="form-control" data-ng-model="rule.field" data-ng-options="key as key for (key, value) in elasticFields"></select>\n\n  <span data-elastic-type="getType()" data-rule="rule" data-guide="elasticFields[rule.field]"></span>\n\n  <!-- <a class="btn btn-xs btn-danger remover" data-ng-click="onRemove()">\n    <i class="fa fa-minus"></i>\n  </a> -->\n\n  <a class="btn remover" data-ng-click="onRemove()">\n    <i class="icon-trash"></i>\n  </a>\n\n<!-- </div> -->\n'),e.put("angular-elastic-builder/types/Boolean.html",'<span class="boolean-rule">\n  Equals\n\n  <!-- This is a weird hack to make sure these are numbers -->\n  <select\n    data-ng-model="rule.value"\n    class="form-control"\n    data-ng-options="booleans.indexOf(choice) as choice for choice in booleansOrder">\n  </select>\n</span>\n'),e.put("angular-elastic-builder/types/Date.html",'<span class="date-rule">\n  <select data-ng-model="rule.subType" class="form-control">\n\n    <optgroup label="Generic">\n      <option value="exists">Exists</option>\n      <option value="notExists">! Exists</option>\n    </optgroup>\n  </select>\n\n</span>\n'),e.put("angular-elastic-builder/types/Multi.html",'<span class="multi-rule">\n  <span data-ng-repeat="choice in guide.choices">\n    <label class="checkbox">\n      <input type="checkbox" data-ng-model="rule.values[choice]">\n      {{ choice }}\n    </label>\n  </span>\n</span>\n'),e.put("angular-elastic-builder/types/Number.html",'<span class="number-rule">\n  <select data-ng-model="rule.subType" class="form-control">\n    <!-- <optgroup label="Numeral"> -->\n      <option value="equals">=</option>\n      <option value="$gt">&gt;</option>\n      <option value="$gte">&ge;</option>\n      <option value="$lt">&lt;</option>\n      <option value="$lte">&le;</option>\n    <!-- </optgroup> -->\n\n    <!-- <optgroup label="Generic">\n      <option value="exists">Exists</option>\n      <option value="notExists">! Exists</option>\n    </optgroup> -->\n  </select>\n\n  <!-- Range Fields -->\n  <input data-ng-if="inputNeeded()"\n    class="form-control"\n    data-ng-model="rule.value"\n    type="number"\n    min="{{ guide.minimum }}"\n    max="{{ guide.maximum }}">\n</span>\n'),e.put("angular-elastic-builder/types/Select.html",'<span class="number-rule">\n  <select data-ng-model="rule.subType" class="form-control">\n    <!-- <optgroup label="Numeral"> -->\n      <option value="equals">=</option>\n      <!-- <option value="$gt">&gt;</option>\n      <option value="$gte">&ge;</option>\n      <option value="$lt">&lt;</option>\n      <option value="$lte">&le;</option> -->\n    <!-- </optgroup> -->\n\n    <!-- <optgroup label="Generic">\n      <option value="exists">Exists</option>\n      <option value="notExists">! Exists</option>\n    </optgroup> -->\n  </select>\n\n  <!-- Range Fields -->\n  <select data-ng-model="rule.value" class="form-control">\n    <!-- <optgroup label="Numeral"> -->\n      <option data-ng-repeat="choice in guide.choices" value="{{choice.value}}">{{choice.key}}</option>\n    <!-- </optgroup> -->\n\n    <!-- <optgroup label="Generic">\n      <option value="exists">Exists</option>\n      <option value="notExists">! Exists</option>\n    </optgroup> -->\n  </select>\n\n  <!-- <input data-ng-if="inputNeeded()"\n    class="form-control"\n    data-ng-model="rule.value"\n    type="number"\n    min="{{ guide.minimum }}"\n    max="{{ guide.maximum }}"> -->\n</span>\n'),e.put("angular-elastic-builder/types/Term.html",'<span class="elastic-term">\n  <select data-ng-model="rule.subType" class="form-control">\n    <!-- Term Options -->\n    <!-- <optgroup label="Text"> -->\n      <option value="equals">{{ \'APPLICATION_EQUALS_TO\' | translate }}</option>\n      <option value="notEquals">{{ \'APPLICATION_NOT_EQUALS_TO\' | translate }}</option>\n    <!-- </optgroup> -->\n\n    <!-- Generic Options -->\n    <!-- <optgroup label="Generic">\n      <option value="exists">Exists</option>\n      <option value="notExists">! Exists</option>\n    </optgroup> -->\n\n  </select>\n  <input\n    data-ng-if="inputNeeded()"\n    class="form-control"\n    data-ng-model="rule.value"\n    type="text">\n</span>\n')}])}(window.angular);