-
Notifications
You must be signed in to change notification settings - Fork 5
/
rule-editor-app.json
9 lines (9 loc) · 194 KB
/
rule-editor-app.json
1
2
3
4
5
6
7
8
9
{
"version": 3,
"sources": ["assets/js/app.js", "assets/js/services/ApiBase.js", "assets/js/services/AuthInterceptor.js", "assets/js/services/AuthService.js", "assets/js/services/ConfigService.js", "assets/js/services/LandingPageService.js", "assets/js/services/QueryDataService.js", "assets/js/services/QueryService.js", "assets/js/services/RulesFilterService.js", "assets/js/services/RulesService.js", "assets/js/services/RulesTransformerService.js", "assets/js/services/services.js", "assets/js/services/SignalService.js", "assets/js/services/SimulationService.js", "assets/js/services/URLService.js", "assets/js/services/UserService.js", "assets/js/controllers/AddRuleController.js", "assets/js/controllers/ConfigController.js", "assets/js/controllers/controllers.js", "assets/js/controllers/HomeController.js", "assets/js/controllers/LoginController.js", "assets/js/controllers/RulesController.js", "assets/js/utils/DocsHelper.js", "assets/js/utils/QueryBuilder.js", "assets/js/utils/utils.js", "assets/components/banner/banner.js", "assets/components/documentList/documentList.js", "assets/components/dragAndDropFile/dragAndDropFile.js", "assets/components/facetField/facetField.js", "assets/components/facetField/facetFieldDirective.js", "assets/components/facetList/facetList.js", "assets/components/field/field.js", "assets/components/landingPage/landingPage.js", "assets/components/login/login.js", "assets/components/paginate/paginate.js", "assets/components/paginate/paginateDirective.js", "assets/components/paginate/paginateService.js", "assets/components/searchBox/searchBox.js", "assets/components/searchBox/searchBoxDataService.js", "assets/components/searchBox/searchBoxDirective.js", "assets/components/sort/sort.js", "assets/components/document/document_default/document_default.js", "assets/components/document/document_EXAMPLE/document_EXAMPLE.js", "assets/components/document/document_file/document_file.js", "assets/components/document/document_slack/document_slack.js", "assets/components/document/document_jira/document_jira.js", "assets/components/document/document_twitter/document_twitter.js", "assets/components/document/document_web/document_web.js", "assets/components/document/document_jira/contentTypes/jiraIssue.js", "assets/components/document/document_jira/contentTypes/jiraProject.js", "assets/components/components.js"],
"names": [],
"mappings": "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",
"file": "app.js",
"sourcesContent": ["(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView', [\r\n 'ui.router',\r\n 'ngAnimate',\r\n 'ngSanitize',\r\n\r\n // Foundation\r\n 'foundation',\r\n 'foundation.dynamicRouting',\r\n 'foundation.dynamicRouting.animations',\r\n\r\n // Libraries\r\n 'ngOrwell',\r\n 'rison',\r\n\r\n // Fusion Seed App\r\n 'lucidworksView.components',\r\n 'lucidworksView.services',\r\n 'lucidworksView.controllers',\r\n\r\n //Datepicker\r\n 'ADM-dateTimePicker',\r\n\r\n 'checklist-model'\r\n ])\r\n .constant('_', window._) //eslint-disable-line\r\n .config(config)\r\n .run(run);\r\n\r\n /**\r\n * Main app config\r\n *\r\n * @param {Provider} $logProvider Provider for log\r\n * @param {Provider} $urlRouterProvider Provider for url\r\n * @param {Provider} $httpProvider Provider for http\r\n * @param {Provider} $locationProvider Provider for location\r\n * @param {Provider} ApiBaseProvider Provider for ApiBase\r\n * @param {Provider} ConfigServiceProvider Provider for ConfigService\r\n */\r\n function config($logProvider, $urlRouterProvider, $httpProvider, $locationProvider, ApiBaseProvider,\r\n ConfigServiceProvider, $windowProvider) {\r\n 'ngInject';\r\n\r\n $logProvider.debugEnabled(true);\r\n\r\n $urlRouterProvider.otherwise('search');\r\n\r\n/*\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: false\r\n });\r\n $locationProvider.hashPrefix('!');\r\n*/\r\n\r\n // If using a proxy use the same url.\r\n $httpProvider.interceptors.push('AuthInterceptor');\r\n\r\n if (ConfigServiceProvider.config.use_proxy) {\r\n var $window = $windowProvider.$get();\r\n ApiBaseProvider.setEndpoint($window.location.protocol + '//' + $window.location.host + '/');\r\n $httpProvider.defaults['withCredentials'] = true;\r\n\r\n } else {\r\n ApiBaseProvider.setEndpoint(ConfigServiceProvider.getFusionUrl());\r\n }\r\n }\r\n\r\n /**\r\n * Main app run time\r\n *\r\n * @param {Service} $document Document service\r\n */\r\n function run($document, $rootScope, ConfigService) {\r\n 'ngInject';\r\n $rootScope.title = ConfigService.config.search_app_title;\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.services.apiBase', [])\r\n .provider('ApiBase', ApiBase);\r\n\r\n\r\n function ApiBase() {\r\n 'ngInject';\r\n var self = this;\r\n self.endpoint = '';\r\n self.$get = get;\r\n self.setEndpoint = setEndpoint;\r\n self.getEndpoint = getEndpoint;\r\n\r\n function setEndpoint(endpoint) {\r\n self.endpoint = endpoint;\r\n }\r\n\r\n function getEndpoint() {\r\n return self.endpoint;\r\n }\r\n\r\n function get() {\r\n return {\r\n getEndpoint: getEndpoint,\r\n setEndpoint: setEndpoint\r\n };\r\n }\r\n }\r\n})();\r\n", "(function() {\n 'use strict';\n\n angular\n .module('lucidworksView.services.authInterceptor', ['lucidworksView.services.config'])\n .factory('AuthInterceptor', AuthInterceptor);\n\n\n function AuthInterceptor($q, $log, $rootScope, $injector) {\n 'ngInject';\n var tryingAnon = false;\n return {\n responseError: responseError\n };\n\n function responseError(resp) {\n var deferred = $q.defer();\n var $state = $injector.get('$state');\n // CASE: If the app is on login page, the code is 401 and the request wasn't a api/session POST, then only attempt anon login\n // The reason for this check so that not all the response errors are intercepted\n if (!$state.is('login') && (resp.status === 401) && !isLoginRequest(resp.config)) {\n //CASE: If not already trying anonymous session then do try...\n if(!tryingAnon) {\n //CASE: If there are usable anon creds, then try it out\n if(useAnonCreds()){\n $log.info('Creating anonymous session with credentials from FUSION_CONFIG.js');\n getAnonSession()\n .then(function() {\n //CASE: If anonymous session creation is successful, go home\n $log.info('Created anonymous session');\n deferred.reject();\n $state.go('rules',{query:'(q:\\'*\\')'}); // TODO we should go back we we come from\n }, function(err) {\n if (err.status === 201) {\n // TODO: Investigate why 201 is going to error handler...\n // If it's the expected behaviour, figure out a better solution\n //CASE: If anonymous login succeeded with a 201 response, go to `home`\n\n $log.info('Created anonymous session');\n $state.go('rules', {query: '(q:\\'*\\')'}); // TODO we should go back we we come from\n } else {\n //CASE: If anonymous login failed, then go to login\n $log.info('Failed to create anonymous session');\n $state.go('login');\n }\n deferred.reject(err);\n });\n } else{\n //CASE: If anonymous login creds are unusable then go to login\n deferred.reject();\n $state.go('login');\n }\n } else{\n //CASE: If trying anon login, then that promise chain will take care of stuff\n deferred.reject();\n }\n } else if(resp.status === 403){\n //CASE: If unauthorized, don't bother.\n // TODO handle unauthorized users.\n $log.warn('You are unauthorized to access that endpoint');\n deferred.reject(false);\n } else{\n deferred.reject(resp);\n }\n // In all cases reject the promise chain\n\n return deferred.promise;\n }\n\n //////////////\n ///\n\n /**\n * [getAnonSession Creates anonymous session with the given config username:passwoed]\n * @return {promise} [Promise for creating the session]\n */\n function getAnonSession(){\n var ConfigService = $injector.get('ConfigService'),\n AuthService = $injector.get('AuthService'),\n $q = $injector.get('$q');\n\n tryingAnon = true;\n var def = $q.defer();\n AuthService.createSession(ConfigService.config.anonymous_access.username, ConfigService.config.anonymous_access.password)\n .then(function(resp){\n tryingAnon = false;\n def.reject(resp);\n }).catch(function(error){\n tryingAnon = false;\n def.reject(error);\n });\n return def.promise;\n }\n\n /**\n * [useAnonCreds Checks if it's okay to use anonymous credentials]\n * @return {Boolean} [Whether it's okay or not]\n */\n function useAnonCreds(){\n var ConfigService = $injector.get('ConfigService'),\n anonAccess = ConfigService.config.anonymous_access;\n\n return !(anonAccess.username === '' || anonAccess.password === '');\n }\n\n /**\n * [isLoginRequest Checks if a given resp.config originated from a /api/session POST]\n * @param {Object} respConfig [The resp.config object]\n * @return {Boolean} [Whether login request or not]\n */\n function isLoginRequest(respConfig){\n //TODO: Make this better\n var ApiBase = $injector.get('ApiBase');\n return (respConfig.url.indexOf(ApiBase.getEndpoint() + 'api/session') !== -1) && (respConfig.method === 'POST');\n }\n\n }\n})();\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.services.auth', ['lucidworksView.services.apiBase',\r\n 'lucidworksView.services.config'\r\n ])\r\n .factory('AuthService', AuthService);\r\n\r\n function AuthService($q, $log, $http, $rootScope, ApiBase, ConfigService) {\r\n 'ngInject';\r\n var config = ConfigService.config;\r\n var realmName = config.connection_realm;\r\n\r\n return {\r\n createSession: createSession,\r\n getSession: getSession,\r\n destroySession: destroySession\r\n };\r\n\r\n //////////////\r\n\r\n\r\n function createSession(username, password) {\r\n var deferred = $q.defer();\r\n $http\r\n .post(ApiBase.getEndpoint() + 'api/session?realmName=' + realmName, {\r\n username: username,\r\n password: password\r\n })\r\n .then(function (resp) {\r\n deferred.resolve(resp);\r\n }, function (err) {\r\n deferred.reject(err);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getSession() {\r\n var deferred = $q.defer();\r\n $http\r\n .get(ApiBase.getEndpoint() + 'api/session?realmName=' + realmName)\r\n .then(function (resp) {\r\n deferred.resolve(resp);\r\n }, function (err) {\r\n deferred.reject(err);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function destroySession() {\r\n var deferred = $q.defer();\r\n $http\r\n .delete(ApiBase.getEndpoint() + 'api/session?realmName=' + realmName)\r\n .then(function (resp) {\r\n deferred.resolve(resp);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n angular\r\n .module('lucidworksView.services.config', [])\r\n\r\n /** Default config options **/\r\n .constant('CONFIG_DEFAULT', {\r\n host: 'http://localhost',\r\n port: '8764',\r\n connection_realm: 'native',\r\n anonymous_access: {\r\n username: '',\r\n password: ''\r\n },\r\n // change default for fusion 2.3\r\n use_proxy: true,\r\n collection: 'MyCollection',\r\n logo_location: 'assets/img/logo/lucidworks-white.svg',\r\n query_debug: false,\r\n query_pipeline_id: 'default',\r\n query_profile_id: 'default',\r\n use_query_profile: true,\r\n search_app_title: 'Fusion Seed App',\r\n head_field: 'title',\r\n subhead_field: 'subtitle',\r\n description_field: 'description',\r\n head_url_field: 'url',\r\n image_field: 'image',\r\n fields_to_display: [],\r\n field_display_labels: {},\r\n sort_fields: [],\r\n signal_type: 'click',\r\n signals_pipeline: '_signals_ingest',\r\n signals_document_id: 'id',\r\n facets: [],\r\n docs_per_page: 10,\r\n typeahead_use_query_profile: true,\r\n typeahead_query_pipeline_id: 'default',\r\n typeahead_query_profile_id: 'default',\r\n typeahead_fields: ['id'],\r\n typeahead_requesthandler: 'select',\r\n landing_page_redirect: true\r\n })\r\n /** Config overrides from FUSION_CONFIG.js **/\r\n .constant('CONFIG_OVERRIDE', window.appConfig) //eslint-disable-line\r\n\r\n .provider('ConfigService', ConfigService);\r\n\r\n\r\n /**\r\n * ConfigService\r\n *\r\n * @param {object} CONFIG_DEFAULT [description]\r\n * @param {object} CONFIG_OVERRIDE [description]\r\n */\r\n function ConfigService(CONFIG_DEFAULT, CONFIG_OVERRIDE) {\r\n 'ngInject';\r\n var appConfig,\r\n vm = this;\r\n\r\n vm.$get = $get;\r\n vm.getFusionUrl = getFusionUrl;\r\n\r\n /* initialize on first load */\r\n init();\r\n\r\n /////////////\r\n\r\n /**\r\n * Main Service function.\r\n */\r\n function $get() {\r\n 'ngInject';\r\n\r\n return {\r\n init: init, //TODO: Only for test env\r\n config: appConfig,\r\n getFusionUrl: getFusionUrl,\r\n getQueryProfile: getQueryProfile,\r\n getCollectionName: getCollectionName,\r\n getQueryPipeline: getQueryPipeline,\r\n getLoginCredentials: getLoginCredentials,\r\n getIfQueryProfile: getIfQueryProfile,\r\n getFieldLabels: getFieldLabels,\r\n getFieldsToDisplay: getFieldsToDisplay,\r\n getTypeaheadConfig: getTypeaheadConfig,\r\n getTypeaheadRequestHandler: getTypeaheadRequestHandler,\r\n getTypeaheadField: getTypeaheadField,\r\n getTypeaheadProfile: getTypeaheadProfile,\r\n getTypeaheadPipeline: getTypeaheadPipeline,\r\n getLandingPageRedirect: getLandingPageRedirect,\r\n getFields: {\r\n all: getAllFields,\r\n get: getSpecificField\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Extend config with the defaults\r\n */\r\n function init() {\r\n // Set local override based on arguements passed in.\r\n var localOverride = (arguments.length > 0) ? arguments[0] : {};\r\n\r\n appConfig = _.assign({}, CONFIG_DEFAULT, CONFIG_OVERRIDE, localOverride);\r\n vm.config = appConfig;\r\n }\r\n\r\n function getIfQueryProfile() {\r\n return appConfig.use_query_profile;\r\n }\r\n\r\n /**\r\n * Returns a fusion URL complete w/ endslash.\r\n */\r\n function getFusionUrl() {\r\n return appConfig.host + ':' + appConfig.port + '/';\r\n }\r\n\r\n function getQueryPipeline() {\r\n return appConfig.query_pipeline_id;\r\n }\r\n\r\n function getQueryProfile() {\r\n return appConfig.query_profile_id;\r\n }\r\n\r\n function getLoginCredentials() {\r\n return {\r\n username: appConfig.user,\r\n passowrd: appConfig.password\r\n };\r\n }\r\n\r\n function getLandingPageRedirect(){\r\n return appConfig.landing_page_redirect;\r\n }\r\n\r\n function getCollectionName() {\r\n return appConfig.collection;\r\n }\r\n\r\n /**\r\n * @return {object}\r\n *\r\n * Returns all the config properties that\r\n * ends with a `_field` which is not a blank string\r\n * and is toggled by explicit enable-ment by `_enabled` of the same type\r\n */\r\n function getAllFields() {\r\n var fieldsMap = {};\r\n _.keys(appConfig)\r\n .filter(function (item) {\r\n return item.match(/\\_field$/);\r\n })\r\n .filter(function (item) {\r\n return _.trim(appConfig[item]) !== '';\r\n })\r\n .forEach(function (keyName) {\r\n fieldsMap[keyName] = appConfig[keyName];\r\n });\r\n return fieldsMap;\r\n }\r\n\r\n /**\r\n * Returns specific field of given type.\r\n * @param {string} fieldType The type of field that needs to be fetch from the config\r\n * @return {*|null} The value of the said field or null if not found.\r\n */\r\n function getSpecificField(fieldType) {\r\n var allFields = getAllFields();\r\n if (!fieldType.match(/\\_field$/)) {\r\n fieldType += '_field';\r\n }\r\n return allFields[fieldType] ? allFields[fieldType] : null;\r\n }\r\n\r\n function getTypeaheadConfig(){\r\n var onlyTypeAheadKeys = _.chain(appConfig).keys(appConfig).filter(function(item){\r\n return item.match(/^typeahead/);\r\n }).value();\r\n return _.pick(appConfig, onlyTypeAheadKeys);\r\n }\r\n\r\n function getTypeaheadPipeline(){\r\n return appConfig.typeahead_query_pipeline_id;\r\n }\r\n\r\n function getTypeaheadProfile(){\r\n return appConfig.typeahead_query_profile_id;\r\n }\r\n\r\n function getTypeaheadRequestHandler(){\r\n return appConfig.typeahead_requesthandler;\r\n }\r\n\r\n function getTypeaheadField(){\r\n return appConfig.typeahead_fields[0];\r\n }\r\n\r\n function getFieldsToDisplay() {\r\n return appConfig.fields_to_display;\r\n }\r\n\r\n function getFieldLabels() {\r\n return appConfig.field_display_labels;\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.services.landingPage', [])\r\n .factory('LandingPageService', LandingPageService);\r\n\r\n function LandingPageService(Orwell, $window, ConfigService) {\r\n 'ngInject';\r\n\r\n activate();\r\n\r\n var service = {\r\n getLandingPagesFromData: getLandingPagesFromData\r\n };\r\n\r\n return service;\r\n\r\n\r\n //////////////\r\n\r\n /**\r\n * This activate() is to redirect the window the first landing-page\r\n * in case redirect flag in appConfig\r\n * is `true`.\r\n */\r\n function activate() {\r\n var resultsObservable = Orwell.getObservable('queryResults');\r\n\r\n resultsObservable.addObserver(function (data) {\r\n var landing_pages = service.getLandingPagesFromData(data);\r\n if (angular.isArray(landing_pages) && ConfigService.getLandingPageRedirect()) {\r\n $window.location.assign(landing_pages[0]);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Extracts landing pages from Fusion response data.\r\n */\r\n function getLandingPagesFromData(data) {\r\n return _.get(data, 'fusion.landing-pages');\r\n }\r\n\r\n }\r\n})();\r\n", "(function () {\r\n angular\r\n .module('lucidworksView.services.queryData', [\r\n 'lucidworksView.services.config',\r\n 'lucidworksView.services.apiBase',\r\n 'lucidworksView.utils.queryBuilder',\r\n 'ngOrwell'\r\n ])\r\n .config(Config)\r\n .provider('QueryDataService', QueryDataService);\r\n\r\n\r\n function Config(OrwellProvider) {\r\n 'ngInject';\r\n OrwellProvider.createObservable('queryResults', {});\r\n }\r\n\r\n function QueryDataService() {\r\n\r\n this.$get = $get;\r\n\r\n /////////////\r\n\r\n function $get($q, $http, ConfigService, ApiBase, Orwell, QueryBuilder) {\r\n 'ngInject';\r\n var queryResultsObservable = Orwell.getObservable('queryResults');\r\n return {\r\n getQueryResults: getQueryResults,\r\n getProfileEndpoint: getProfileEndpoint,\r\n getPipelineEndpoint: getPipelineEndpoint\r\n };\r\n\r\n /**\r\n * Make a query to the query profiles endpoint\r\n * @param {object} query Should have all the query params, like\r\n * For select?q=query&fq=blah you need to pass in an object\r\n * {'q': 'query', 'fq': 'blah'}\r\n * @return {Promise} Promise that resolve with a Fusion response coming from Solr\r\n */\r\n function getQueryResults(query) {\r\n var deferred = $q.defer();\r\n\r\n var queryString = QueryBuilder.objectToURLString(query);\r\n\r\n var fullUrl = getQueryUrl(ConfigService.getIfQueryProfile()) + '?' + queryString;\r\n\r\n $http\r\n .get(fullUrl)\r\n .then(success)\r\n .catch(failure);\r\n\r\n function success(response) {\r\n // Set the content to populate the rest of the ui.\r\n queryResultsObservable.setContent(response.data);\r\n deferred.resolve(response.data);\r\n }\r\n\r\n function failure(err) {\r\n queryResultsObservable.setContent({\r\n numFound: 0\r\n });\r\n deferred.reject(err.data);\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Returns the appropriate base url for an endpoint\r\n *\r\n * @param {Boolean} isProfiles Determines which endpoint type to return;\r\n * @return {string} The URL endpoint for the query without parameters.\r\n */\r\n function getQueryUrl(isProfiles) {\r\n if (isProfiles) {\r\n return getProfileEndpoint(ConfigService.getQueryProfile(), 'select');\r\n } else {\r\n return getPipelineEndpoint(ConfigService.getQueryPipeline(), 'select')\r\n }\r\n }\r\n\r\n function getProfileEndpoint(profile, requestHandler){\r\n return ApiBase.getEndpoint() + 'api/apollo/collections/' +\r\n ConfigService.getCollectionName() + '/query-profiles/' +\r\n profile + '/' + requestHandler;\r\n }\r\n\r\n function getPipelineEndpoint(pipeline, requestHandler){\r\n return ApiBase.getEndpoint() + 'api/apollo/query-pipelines/' +\r\n pipeline + '/collections/' + ConfigService.getCollectionName() +\r\n '/' + requestHandler;\r\n }\r\n\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n angular.module('lucidworksView.services.query', ['lucidworksView.services.config',\r\n 'lucidworksView.services.queryData'\r\n ])\r\n .config(Config)\r\n .constant('QUERY_OBJECT_DEFAULT', {\r\n q: '*',\r\n start: 0,\r\n // Do not override the return of JSON\r\n wt: 'json'\r\n })\r\n .provider('QueryService', QueryService);\r\n\r\n function Config(OrwellProvider) {\r\n 'ngInject';\r\n OrwellProvider.createObservable('query', {});\r\n }\r\n\r\n function QueryService() {\r\n\r\n this.$get = $get;\r\n\r\n /////////////\r\n\r\n function $get($log, ConfigService, Orwell, QUERY_OBJECT_DEFAULT, QueryDataService) {\r\n 'ngInject';\r\n var queryObservable = Orwell.getObservable('query'),\r\n queryObject = QUERY_OBJECT_DEFAULT;\r\n\r\n activate();\r\n\r\n queryObservable.addObserver(function (query) {\r\n QueryDataService.getQueryResults(query);\r\n\r\n });\r\n\r\n return {\r\n setQuery: setQuery,\r\n getQueryObservable: getQueryObservable,\r\n getQueryObject: getQueryObject\r\n };\r\n\r\n function activate() {\r\n queryObservable.setContent(queryObject);\r\n }\r\n\r\n function getQueryObservable() {\r\n return queryObservable;\r\n }\r\n\r\n function getQueryObject() {\r\n return queryObservable.getContent();\r\n }\r\n\r\n function setQuery(query) {\r\n if (ConfigService.config.query_debug) {\r\n $log.debug('query', query);\r\n }\r\n queryObject = _.assign({}, query, {rows: ConfigService.config.docs_per_page});\r\n queryObservable.setContent(queryObject);\r\n\r\n }\r\n\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.services.rules.filter', [])\r\n .provider('RulesFilterService', RulesFilterService);\r\n\r\n function RulesFilterService() {\r\n\r\n this.$get = function () {\r\n\r\n var facets = {\r\n display_type: {name: \"Rules type\"},\r\n tags: {name: \"Tags\"},\r\n enabled: {name: \"Enabled\"}\r\n };\r\n\r\n return {\r\n\r\n values: {\r\n query: \"\",\r\n pageSize: 10,\r\n pageNum: 0,\r\n\r\n startDate: null,\r\n endDate: null,\r\n\r\n sortByCond: null,\r\n\r\n facets: {}\r\n },\r\n\r\n rulesFrom: function () {\r\n return this.values.pageNum * this.values.pageSize;\r\n },\r\n\r\n rulesTo: function () {\r\n return (this.values.pageNum + 1) * this.values.pageSize -1;\r\n },\r\n\r\n filterBy: function (field, value) {\r\n this.values.facets[field] = {};\r\n this.values.facets[field][value] = true;\r\n },\r\n\r\n sortBy: function (by) {\r\n if (!this.values.sortByCond) {\r\n this.values.sortByCond = {};\r\n this.values.sortByCond[by] = true\r\n } else if (this.values.sortByCond[by]) {\r\n this.values.sortByCond[by] = false;\r\n } else {\r\n this.values.sortByCond = null;\r\n }\r\n },\r\n\r\n sortByIcon: function (by) {\r\n console.log(\"sortByIcon(\" + by + \")\");\r\n\r\n if (this.values.sortByCond === null) {\r\n return 'fa-sort';\r\n }\r\n\r\n if (this.values.sortByCond[by] === true) {\r\n return 'fa-sort-asc';\r\n }\r\n\r\n if (this.values.sortByCond[by] === false) {\r\n return 'fa-sort-desc';\r\n }\r\n\r\n return 'fa-sort';\r\n },\r\n\r\n hasNext: function (rulesTotal) {\r\n return (this.values.pageNum + 1) * this.values.pageSize < (rulesTotal || 0)\r\n },\r\n\r\n next: function () {\r\n this.values.pageNum += 1;\r\n return this.values.pageNum;\r\n },\r\n\r\n hasPrev: function () {\r\n return this.values.pageNum > 0;\r\n },\r\n\r\n prev: function () {\r\n this.values.pageNum -= 1;\r\n return this.values.pageNum;\r\n },\r\n\r\n toUrlString: function () {\r\n console.log(\"filter:\", this.values);\r\n\r\n var res = \"\";\r\n res += \"&q=\" + (this.values.query || '*');\r\n res += \"&facet=true\";\r\n\r\n for (var f in facets) {\r\n res += \"&facet.field=\" + f;\r\n }\r\n\r\n res += \"&start=\" + this.values.pageNum * this.values.pageSize;\r\n res += \"&rows=\" + this.values.pageSize;\r\n\r\n var filterQuery = [];\r\n for (var key in this.values.facets) {\r\n var facet = this.values.facets[key];\r\n for (var name in facet) {\r\n if (facet[name]) {\r\n filterQuery.push(key + \":\\\"\" + name + \"\\\"\");\r\n }\r\n }\r\n }\r\n\r\n if (filterQuery.length > 0) {\r\n res += \"&fq=\" + filterQuery.join(\"&fq=\");\r\n }\r\n\r\n // : sort=<field name>+<direction>,<field name>+<direction>],...\r\n if (this.values.sortByCond) {\r\n res += \"&sort=\" + _.transform(this.values.sortByCond, function (result, value, key) {\r\n result.push(key + \" \" + (value ? 'asc' : 'desc'));\r\n }, []).join(\",\");\r\n }\r\n\r\n if (this.values.startDate || this.values.endDate) {\r\n var start = this.values.startDate ?\r\n new Date(this.values.startDate.replace(\"T\", \" \")).toISOString() : \"*\";\r\n var end = this.values.endDate ?\r\n new Date(this.values.endDate.replace(\"T\", \" \")).toISOString() : \"*\";\r\n\r\n res += \"&fq=updatedAt:[\" + start + \" TO \" + end + \"]\";\r\n }\r\n\r\n return res;\r\n },\r\n\r\n logout: function () {\r\n AuthService.destroySession();\r\n },\r\n\r\n reset: function () {\r\n this.values = {\r\n query: \"\",\r\n pageSize: 10,\r\n pageNum: 0,\r\n\r\n startDate: null,\r\n endDate: null,\r\n\r\n sortByCond: null,\r\n\r\n facets: {}\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}());\r\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.services.rules',\n [\"lucidworksView.services.config\",\n \"lucidworksView.services.apiBase\",\n \"lucidworksView.services.signals\",\n \"lucidworksView.services.user\"])\n .provider('RulesService', RulesService);\n\n function RulesService() {\n\n this.$get = function ($http, ConfigService, ApiBase, SignalsService, UserService) {\n\n var appHost = ApiBase.getEndpoint();\n var solrUrl = appHost + \"api/apollo/solr\";\n var rulesCollection = ConfigService.config.rules.collection.trim();\n\n return {\n\n findByName: function (name, callback) {\n var url = appHost + \"api/apollo/query-pipelines/\" + rulesCollection + \"-default/collections/\" + rulesCollection + \"/select?\" +\n \"wt=json&fl=*&json.nl=arrarr&rows=10&q=ruleName:\\\"\" + name + \"\\\"\";\n\n $http.get(url).then(callback);\n },\n\n add: function (rule, success, error) {\n $http.post(solrUrl + '/' + rulesCollection + '/update/json/docs?commit=true', rule)\n .then(function () {\n SignalsService.postSignalData([{\n params: {\n docId: rule.id,\n ruleName: rule.ruleName,\n userName: UserService.getUser().username,\n userId: UserService.getUser().id\n },\n\n timestamp: new Date().toISOString(),\n type: 'rule_add'\n }]);\n success();\n\n }, error);\n },\n\n delete: function (id) {\n $http.post(solrUrl + '/' + rulesCollection + '/update?commit=true', {'delete': {id: id}})\n .then(function (response) {\n SignalsService.postSignalData([{\n params: {\n docId: id,\n userName: UserService.getUser().username,\n userId: UserService.getUser().id\n },\n timestamp: new Date().toISOString(),\n type: 'rule_delete'\n }]);\n\n console.log(\"Rule '\" + id + \"' deleted!\");\n });\n },\n\n update: function (id, rule) {\n $http.post(solrUrl + '/' + rulesCollection + '/update/json/docs?commit=true', rule)\n .then(function (response) {\n SignalsService.postSignalData([{\n params: {\n docId: id,\n ruleName: rule.ruleName,\n userName: UserService.getUser().username,\n userId: UserService.getUser().id\n },\n timestamp: new Date().toISOString(),\n type: 'rule_update'\n }]);\n\n console.log(\"Rule '\" + id + \"' updated!\");\n });\n },\n\n getProductFileds: function (callback) {\n callback({\n data: {}\n })\n },\n\n search: function (filter, callback) {\n var url = appHost + \"api/apollo/query-pipelines/\" + rulesCollection + \"-default/collections/\" + rulesCollection + \"/select?\" +\n \"wt=json&fl=*&json.nl=arrarr\" + filter.toUrlString();\n\n $http.get(url).then(callback);\n }\n };\n };\n }\n})();\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.services.rules.transformer', [\n 'lucidworksView.services.config'\n ])\n .provider('RulesTransformerService', RulesTransformerService);\n\n function RulesTransformerService() {\n\n this.$get = function (ConfigService) {\n\n var rulesConfig = ConfigService.config.rules;\n var types = rulesConfig.types;\n var keys = {\n \"Redirect\": \"redirect\",\n \"Banner\": \"banner\"\n };\n\n var simple = [\n 'display_type',\n 'id',\n 'type',\n 'ruleName',\n 'description',\n\n 'matching',\n 'keys',\n 'values',\n\n 'param_keys',\n 'param_values',\n 'param_policies',\n\n 'field_values',\n\n 'createdAt',\n 'updatedAt',\n 'enabled'\n ];\n\n function modelArrToViewElement (viewElement, modelArr) {\n if (modelArr && _.isArray(modelArr)) {\n\n viewElement = modelArr[0];\n } else {\n viewElement = modelArr;\n }\n return viewElement;\n }\n\n var transformers = {\n type: {\n viewToModel : function (view, model) {\n model.type = types[view.display_type];\n\n if (model.type == 'response_value') {\n model.keys = [keys[view.display_type]];\n model.values = [view.values];\n }\n },\n\n modelToView : function (view, model) {\n if (model.type == 'response_value') {\n view.values = (model.values && model.values.length && model.values[0]) || model.values;\n }\n }\n },\n field_name: {\n viewToModel : function (view, model) {\n model.field_name = view.field_name;\n },\n\n modelToView : function (view, model) {\n view.field_name = modelArrToViewElement (view.field_name, model.field_name);\n }\n },\n\n search_terms : {\n viewToModel: function (view, model) {\n if (view.search_terms && view.search_terms.trim().length > 0) {\n model.search_terms = view.search_terms;\n model.matching = view.matching;\n }\n },\n\n modelToView: function (view, model) {\n if (!model.search_terms) {\n return;\n }\n\n if (model.search_terms.length) {\n view.search_terms = model.search_terms[0];\n } else {\n view.search_terms = model.search_terms;\n }\n /*view.matching = modelArrToViewElement (view.matching, model.matching);*/\n\n }\n },\n\n tags: {\n viewToModel: function (view, model) {\n if (view.viewTags && view.viewTags.length > 0) {\n model.tags = _.chain(view.viewTags).map('text').uniq().value();\n }\n },\n\n modelToView: function (view, model) {\n if (model && model.tags) {\n view.viewTags = _.chain(model.tags).uniq().map(function (tag) {\n return {text: tag};\n }).value()\n }\n }\n },\n\n filters: {\n viewToModel: function (view, model) {\n model.filters = \"\";\n if (view.viewFilters && view.viewFilters[0]) {\n for (var i = 0, l = view.viewFilters[0].length; i < l; i++) {\n model.filters += view.viewFilters[0][i] + ':' + view.viewFilters[1][i] + ' ';\n }\n model.filters = model.filters.trim();\n }\n\n if (model.filters == \":\") {\n delete model.filters;\n }\n },\n\n modelToView: function (view, model) {\n if (model && model.filters) {\n if (model.filters.length) {\n model.filters = model.filters[0];\n }\n var filtersArray = model.filters.split(/[ ,:]+/);\n var actualFiltersArray = [[], []];\n for (var j = 0, k = filtersArray.length; j < k; j++) {\n actualFiltersArray[j % 2].push(filtersArray[j]);\n }\n view.viewFilters = actualFiltersArray;\n }\n }\n },\n\n dates: {\n viewToModel: function (view, model) {\n if (view.viewDates[0].length != view.viewDates[1].length) {\n console.error(\"Error: view.viewDates[0] and view.viewDates[1] has different size\");\n return;\n }\n\n if (view.viewDates && view.viewDates[0].length > 0) {\n model.effective_range = [];\n }\n\n for (var i = 0; i < view.viewDates[0].length; i++) {\n var startDate = '*';\n var endDate = '*';\n if (view.viewDates[0][i] != 0) {\n startDate = view.viewDates[0][i].replace(/\\//g, \"-\").replace(' ', 'T').concat(':00Z');\n }\n if (view.viewDates[1][i] != 0) {\n endDate = view.viewDates[1][i].replace(/\\//g, \"-\").replace(' ', 'T').concat(':00Z');\n }\n\n console.log(startDate);\n console.log(endDate);\n model.effective_range[i] =\n \"[\" + startDate + \" TO \" + endDate + \"]\";\n console.log(model.effective_range[i]);\n }\n },\n\n modelToView: function (view, model) {\n view.viewDates = [[], []];\n var startDate = undefined;\n var endDate = undefined;\n if (model.effective_range) {\n for (var j = 0, k = model.effective_range.length; j < k; j++) {\n // TODO refactor with regexp\n var split = model.effective_range[j].split(' TO ');\n startDate = split[0];\n startDate = startDate.replace(\"[\", \"\");\n if (startDate != '*') {\n startDate = startDate.substr(0, 16).replace(/\\r/g, \"/\").replace(\"T\", \" \");\n } else {startDate = undefined;}\n\n endDate = split[1];\n endDate = endDate.replace(\"]\", \"\");\n if (endDate != '*') {\n endDate = endDate.substr(0, 16).replace(/\\r/g, \"/\").replace(\"T\", \" \");\n } else {endDate = undefined;}\n view.viewDates[0][j] = startDate;\n view.viewDates[1][j] = endDate;\n\n }\n }\n }\n }\n };\n\n return {\n viewRuleToModel: function (ruleView) {\n var model = _.pick(ruleView, simple);\n\n _.each(transformers, function (transformer) {\n transformer.viewToModel(ruleView, model);\n });\n\n return model;\n },\n\n modelRuleToView: function (r) {\n if (r && !r.ruleName) {\n r.ruleName = r.id;\n }\n\n var view = _.pick(r, simple);\n _.each(transformers, function (transformer) {\n transformer.modelToView(view, r);\n });\n\n return view;\n }\n\n };\n }\n }\n}());\n", "// Module initialization\nangular.module('lucidworksView.services', [\n 'lucidworksView.services.apiBase',\n 'lucidworksView.services.auth',\n 'lucidworksView.services.authInterceptor',\n 'lucidworksView.services.config',\n 'lucidworksView.services.landingPage',\n 'lucidworksView.services.query',\n 'lucidworksView.services.queryData',\n 'lucidworksView.services.signals',\n 'lucidworksView.services.rules.filter',\n 'lucidworksView.services.rules.transformer',\n 'lucidworksView.services.rules',\n 'lucidworksView.services.url'\n]);\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.services.signals', ['lucidworksView.services.apiBase',\r\n 'lucidworksView.services.config'\r\n ])\r\n .factory('SignalsService', SignalsService);\r\n\r\n function SignalsService(ApiBase, ConfigService, $http, $q, QueryService) {\r\n 'ngInject';\r\n var service = {\r\n postClickSignal: postClickSignal,\r\n postSignalData: postSignalData,\r\n getSignalsDocumentId: getSignalsDocumentId\r\n };\r\n\r\n return service;\r\n\r\n /**\r\n * Helper method to document click events.\r\n * @param {string} docId The document id\r\n * @param {object} options An object containing parameter overrides and options.\r\n * - The object can be any parameter which will be passed through, including parameters.\r\n * Ex: {type: 'custom', params: {filterQueries: ['something']}}\r\n * @return {promise}\r\n */\r\n function postClickSignal(docId, options) {\r\n var date = new Date(),\r\n data = {\r\n params: {\r\n docId: docId,\r\n query: QueryService.getQueryObject().q\r\n },\r\n pipeline: ConfigService.config.signals_pipeline,\r\n timestamp: date.toISOString(),\r\n type: ConfigService.config.signal_type\r\n };\r\n\r\n _.defaultsDeep(data, options);\r\n\r\n\r\n return postSignalData([data]);\r\n }\r\n\r\n //Use if you want to post a raw signal where you have control of every signal entry. See postClickSignal for an example data structure\r\n function postSignalData(data) {\r\n var deferred = $q.defer();\r\n $http\r\n .post(ApiBase.getEndpoint() + 'api/apollo/signals/' + ConfigService.config.collection,\r\n data)\r\n .then(success)\r\n .catch(failure);\r\n\r\n function success(response) {\r\n deferred.resolve(response.data);\r\n }\r\n\r\n function failure(err) {\r\n deferred.reject(err.data);\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Given a document return a signals document ID value.\r\n * @param {object} doc The document\r\n * @return {string|Number} The document ID value\r\n */\r\n function getSignalsDocumentId(doc) {\r\n var documentIdField = ConfigService.config.signals_document_id;\r\n if (doc.hasOwnProperty(documentIdField)) {\r\n return doc[documentIdField];\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n }\r\n }\r\n})();\r\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.services.simulation', [\"lucidworksView.services.config\", \"lucidworksView.services.apiBase\"])\n .provider('SimulationService', SimulationService);\n\n function SimulationService() {\n\n this.$get = function ($http, $log, ConfigService, ApiBase) {\n\n var appHost = ApiBase.getEndpoint();\n var collection = ConfigService.config.collection.trim();\n var appName = '&appName=' + collection + 'AdvUI';\n\n var config = ConfigService.config.simulation;\n\n function escape(str) {\n return encodeURI(str).replace(/&/g, '%26').replace(/\\//g, '%2F').replace(/#/g, '%23');\n }\n\n function geo(lw) {\n if (lw.geo_enabled && lw.coordinates.length > 0) {\n return '&sfield=' + lw.geofield + '&pt=' + lw.coordinates\n + '&d=' + lw.distance + '&fq={!bbox}&queryOpts=spatial&fl=distance:product(geodist(),0.621)';\n }\n\n return '';\n }\n\n function sort(lw) {\n if (lw.sort_by == lw.head_field) {\n return '&sort=' + lw.head_field + ' ' + lw.sort_order;\n } else if (lw.sort_by == \"distance\" && lw.coordinates.length > 0) {\n return '&sort=geodist()' + ' ' + lw.sort_order; //Sort by distance\n } else {\n return ''; //Sort by relevannce\n }\n }\n\n function query(q) {\n return '?wt=json' +\n '&json.nl=arrarr' +\n '&debug=true' +\n '&fl=score,explain:[explain style=nl]' +\n '&q=' + escape(q || '*:*');\n }\n\n function mm(lw) {\n return lw.mm == 'default' ? '' : '&mm=' + lw.mm;\n }\n\n function fq(fqs) {\n var res = '';\n for (var i = 0; i < fqs.length; i++) {\n res += '&fq=' + escape(fqs[i])\n }\n\n return res;\n }\n\n\n return {\n\n search: function (lw, q, fqs, within, start, rules_exclude, incexlStr, success, error) {\n var url = appHost + 'api/apollo/query-pipelines/' + lw.pipename + '/' + 'collections/' + collection\n + '/' + lw.requestHandler + query(q) + within + fq(fqs) + '&fl=' + lw.fl + '&start=' + start + sort(lw) + geo(lw)\n + rules_exclude + incexlStr\n + mm(lw) + appName + lw.addl_params;\n\n $http.get(url)\n .success(success)\n .error(error);\n },\n\n spellCheck: function (q, success, error) {\n if (!config.spellCheck) {\n $log.error(\"spellCheck was called but wasn't configured!\");\n }\n\n var url = appHost + 'api/apollo/solr/' + collection + '/' + config.spellCheck.requestHandler\n + '?wt=json&spellcheck.q=' + q + '&spellcheck.dictionary=' + config.spellCheck.dictionary;\n\n $http.get(url).success(success).error(error)\n }\n };\n };\n }\n})();\n\n\n/*\n*\n* http://localhost:8764/api/apollo/query-pipelines/os_prod-with-rules/collections/os_prod/select?&wt=json&q=girl&debug=true&fl=score,explain:[explain%20style=nl]&fl=Name,PhraseText,ProductID,Price-sort&start=0&appName=os_prodAdvUI\n* http://localhost:3000/api/apollo/query-pipelines/os_prod-with-rules/collections/os_prod/select?&wt=json&q=girl&debug=true&fl=score,explain:[explain%20style=nl]&fq=undefined&fl=Name,PhraseText,ProductID,Price-sort&start=0&appName=os_prodAdvUI\n* */\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.services.url', ['rison'])\r\n .constant('BLANK_QUERY', blankQuery)\r\n .constant('QUERY_PARAM', 'query')\r\n .factory('URLService', URLService);\r\n\r\n var blankQuery = {\r\n q: '*',\r\n start: 0\r\n };\r\n\r\n function URLService($log, $rison, $state, $location, QueryService, BLANK_QUERY,\r\n QUERY_PARAM) {\r\n 'ngInject';\r\n return {\r\n setQuery: setQuery,\r\n getQueryFromUrl: getQueryFromUrl\r\n };\r\n\r\n //////////\r\n\r\n /**\r\n * Sets the query object that will be updated\r\n * on the URL bar and get passed\r\n * on to QueryService\r\n * for a search\r\n * @param {object} queryObject The query object\r\n */\r\n function setQuery(queryObject) {\r\n QueryService.setQuery(queryObject);\r\n var queryObjectToBeStringed = _.clone(QueryService.getQueryObject(),true);\r\n //Only need the slashes to get encoded, so that app state doesn't change\r\n queryObjectToBeStringed = encodeSlashes(queryObjectToBeStringed);\r\n var queryObjectString = $rison.stringify(queryObjectToBeStringed);\r\n var newStateObject = {};\r\n newStateObject[QUERY_PARAM] = queryObjectString;\r\n // Adding reloadOnSearch:false for now fixes the double reload bug SU-60\r\n // @see http://stackoverflow.com/a/22863315\r\n $state.go('home', newStateObject, {notify: false, reloadOnSearch: false});\r\n }\r\n\r\n /**\r\n * Gets query object from URL\r\n */\r\n function getQueryFromUrl() {\r\n var queryString = $location.search()[QUERY_PARAM];\r\n console.log(\"queryString = \" + queryString);\r\n var queryObject;\r\n try{\r\n queryObject = queryString ? $rison.parse(decodeURIComponent(queryString)):BLANK_QUERY;\r\n }\r\n catch(e){\r\n $log.error('Cannot parse query URL');\r\n queryObject = BLANK_QUERY;\r\n }\r\n var temp = convertTreeArrays(queryObject);\r\n return temp;\r\n }\r\n\r\n //////////////////////////\r\n /// Internal functions ///\r\n //////////////////////////\r\n\r\n /**\r\n * Traverses the whole object tree and encodes slashes\r\n */\r\n function encodeSlashes(queryObject){\r\n var newQueryObject = {};\r\n if (_.isArray(queryObject)) {\r\n queryObject.forEach(function (element, index) {\r\n if(_.isObject(element) || _.isArray(element)){\r\n newQueryObject[index] = encodeSlashes(element);\r\n }\r\n else if(_.isString(element)){\r\n newQueryObject[index] = element.replace(/\\//g,'%2F');\r\n }\r\n else{\r\n newQueryObject[index] = element;\r\n }\r\n })\r\n } else {\r\n _.forIn(queryObject, function (item, key) {\r\n if (_.isObject(item) || _.isArray(item)) {\r\n newQueryObject[key] = encodeSlashes(item);\r\n }\r\n else if (_.isString(item)) {\r\n newQueryObject[key] = item.replace(/\\//g, '%2F');\r\n }\r\n else {\r\n newQueryObject[key] = item;\r\n }\r\n });\r\n }\r\n return newQueryObject;\r\n\r\n }\r\n\r\n /**\r\n * Checks if the `item` is a possible array.\r\n */\r\n function isArrayable(item){\r\n if(item instanceof Object && !(item instanceof String)){\r\n var stuff = _.keys(item);\r\n var stuffToCheck = _.chain(stuff).map(function(value){\r\n return _.parseInt(value);\r\n })\r\n .filter(function(value){\r\n return !_.isNaN(value);\r\n })\r\n .value();\r\n return stuff.length === stuffToCheck.length;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Converts an object to an array.\r\n */\r\n function objectToArray(item){\r\n var newArray = [];\r\n var newArrayLength = 0;\r\n _.forIn(item, function(item, key){\r\n newArrayLength++;\r\n newArray[key] = item;\r\n });\r\n newArray.length = newArrayLength;\r\n return newArray;\r\n }\r\n\r\n /**\r\n * Traverses the whole object tree, if there is a possible array converts\r\n * that to an array.\r\n * Checking if the object could be an array by checking all the keys are integers.\r\n * Rison specs are inadequate to decide, hence this piece of function\r\n */\r\n function convertTreeArrays(queryObject){\r\n var newQueryObject = {};\r\n\r\n var arrayer = function(item){\r\n if(isArrayable(item)){\r\n return objectToArray(item);\r\n }\r\n else{\r\n return item;\r\n }\r\n };\r\n\r\n _.forEach(queryObject, function(item, key){\r\n if(_.isObject(item)){\r\n newQueryObject[key] = arrayer(convertTreeArrays(item));\r\n }\r\n else{\r\n newQueryObject[key] = item;\r\n }\r\n });\r\n\r\n return newQueryObject;\r\n }\r\n }\r\n})();\r\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.services.user',\n [\"lucidworksView.services.config\", \"lucidworksView.services.apiBase\"])\n .provider('UserService', UserService);\n\n function UserService() {\n\n this.$get = function ($http, ConfigService, ApiBase) {\n\n var apiUrl = ApiBase.getEndpoint() + \"api/session\";\n var user = null;\n\n return {\n\n init: function () {\n if (user != null) {\n return;\n }\n\n $http.get(apiUrl)\n .then(function (response) {\n user = response.data.user;\n console.log(\"-------------------------\");\n console.log(\"-- Current user - \" + user.username);\n console.log(user);\n }, function () {\n // TODO error handling\n });\n },\n\n getUser: function () {\n return user;\n }\n };\n };\n }\n})();\n", "(function () {\r\n 'use strict';\r\n\r\n function emptyRule() {\r\n return {\r\n createdAt: Date.now(),\r\n\r\n display_type: 'Choose rule type',\r\n ruleName: '',\r\n description: '',\r\n\r\n search_terms: undefined,\r\n matching: undefined,\r\n\r\n viewFilters: [[], []],\r\n viewDates: [[], []],\r\n viewTags: '',\r\n\r\n values: '',\r\n\r\n // Set Params Type params\r\n param_keys: [],\r\n param_values: [],\r\n param_policies: [],\r\n\r\n // response_value rule type\r\n field_name: undefined,\r\n field_values: undefined,\r\n\r\n keywordsFlag: false,\r\n categoryFlag: false,\r\n tagsFlag: false\r\n };\r\n }\r\n\r\n angular\r\n .module('lucidworksView.controllers.addRules', [\r\n 'lucidworksView.services.rules',\r\n 'lucidworksView.services.rules.transformer',\r\n 'ngTagsInput'\r\n ])\r\n .controller('addRulesController', ['$scope', '$http', '$timeout', 'RulesService', 'RulesTransformerService',\r\n function ($scope, $http, $timeout, rulesService, rulesTransformerService) {\r\n\r\n $scope.addRuleInvalid = {'general': false, 'trigger': false, 'params': false};\r\n $scope.invalidDeteRange = [];\r\n $scope.emptyDete = [];\r\n $scope.triggerDates = [];\r\n $scope.categories = [];\r\n $scope.setParams = [' '];\r\n\r\n $scope.currentRule = emptyRule();\r\n\r\n function errorMessage (errorCode, status, message) {\r\n var addRule = $('#addRule');\r\n if (status == null && status == null) {\r\n addRule.find('.alert').removeClass('alert-warning');\r\n addRule.find('.alert').hide();\r\n }\r\n\r\n addRule.find('.alert').addClass('alert-warning');\r\n addRule.find('.err-code').html(errorCode);\r\n if (message) {\r\n addRule.find('.err-more').show();\r\n $('#addRuleErrorDetails').html(message);\r\n } else {\r\n addRule.find('.err-more').hide();\r\n }\r\n addRule.find('.err-message').html(status);\r\n }\r\n\r\n $scope.addRule = function () {\r\n var rule = {\r\n display_type: $scope.currentRule.display_type,\r\n ruleName: $scope.currentRule.ruleName,\r\n description: $scope.currentRule.description,\r\n search_terms: $scope.currentRule.search_terms,\r\n matching: $scope.currentRule.matching,\r\n\r\n viewTags: $scope.currentRule.viewTags,\r\n viewDates: $scope.currentRule.viewDates,\r\n viewFilters: $scope.currentRule.viewFilters,\r\n\r\n values: $scope.currentRule.values,\r\n\r\n param_keys: $scope.currentRule.param_keys,\r\n param_values: $scope.currentRule.param_values,\r\n param_policies: $scope.currentRule.param_policies,\r\n\r\n field_name: $scope.currentRule.field_name,\r\n field_values: $scope.currentRule.field_values,\r\n\r\n createdAt: new Date().toISOString(),\r\n updatedAt: new Date().toISOString(),\r\n enabled: [true]\r\n };\r\n\r\n\r\n var ruleName = $('#addRuleName');\r\n var addRuleButton = $('#addRuleButton');\r\n\r\n addRuleButton.removeAttr('data-dismiss');\r\n\r\n if (!$scope.validateRuleCreation(rule)) {\r\n return;\r\n }\r\n\r\n rulesService.add(rulesTransformerService.viewRuleToModel(rule), function () {\r\n addRuleButton.attr('data-dismiss', 'modal');\r\n $('#addRule').modal('hide');\r\n\r\n $('.addRuleForm').each(function (index, form) {\r\n form.reset()\r\n });\r\n\r\n $scope.currentRule = emptyRule();\r\n $scope.categories = [];\r\n $scope.triggerDates = [];\r\n $scope.setParams = [' '];\r\n $scope.invalidFormMarkersClear ();\r\n\r\n rulesService.findByName(rule.ruleName, function (response) {\r\n var data = response.data.response;\r\n\r\n if (data.numFound < 1) {\r\n console.log(\"!!! Error saving rule\");\r\n } else if (data.numFound == 1) {\r\n rule.id = data.docs[0].id;\r\n\r\n $scope.$parent.rules = [rule].concat($scope.$parent.rules);\r\n $scope.$parent.rulesTotal++;\r\n\r\n if ($scope.$parent.rules[$scope.$parent.rules.length - 1] == undefined) {\r\n $scope.$parent.rules.pop();\r\n }\r\n $timeout(function () {\r\n $scope.disabledRuleEdit[rule.id] = false}, 1);\r\n } else {\r\n console.log(\"!!! Founded more then one rule with the same name :(\");\r\n }\r\n });\r\n\r\n }, function (resp) {\r\n errorMessage(resp.status, resp.statusText, resp.data);\r\n });\r\n };\r\n\r\n\r\n /* $scope.activate = function (id) {\r\n if ($scope.disabledRuleEdit[id] == true) {\r\n $scope.disabledRuleEdit[id] = false;\r\n } else {\r\n $scope.disabledRuleEdit[id] = true;\r\n }\r\n };\r\n*/\r\n /*function setViewDates(rule, triggerStartArray, triggerEndArray) {\r\n if (triggerStartArray[0] && triggerStartArray[0].value) {\r\n for (var i = 0; i < triggerStartArray.length; i++) {\r\n rule.viewDates[0][i] = triggerStartArray[i].value.trim() || \"*\";\r\n rule.viewDates[1][i] = triggerEndArray[i].value.trim() || \"*\";\r\n\r\n // duplicates rc used in both controllers\r\n }\r\n }\r\n }\r\n*/\r\n $scope.invalidRangeClear = function (index) {\r\n $scope.invalidDeteRange[index] = false;\r\n };\r\n\r\n $scope.invalidFormMarkersClear = function () {\r\n $scope.addRuleInvalid.general = false;\r\n $scope.addRuleInvalid.trigger = false;\r\n $scope.addRuleInvalid.params = false;\r\n $scope.invalidRangeClear\r\n };\r\n\r\n $scope.validateRuleCreation = function (rule) {\r\n $scope.invalidFormMarkersClear ();\r\n if ($scope.currentRule.display_type == 'Choose rule type') {\r\n $scope.generalForm.chooseRuleType.$setValidity(\"required\", false);\r\n }\r\n\r\n if (rule.viewDates[0].length) {\r\n for (var i = 0, l = rule.viewDates[0].length; i < l; i++) {\r\n var start = new Date(rule.viewDates[0][i]).getTime();\r\n var end = new Date(rule.viewDates[1][i]).getTime();\r\n $scope.invalidDeteRange[i] = false;\r\n console.log(start);\r\n console.log(end);\r\n if (start >= end && end) {\r\n $scope.addRuleInvalid.trigger = true;\r\n $scope.invalidDeteRange[i] = true;\r\n }\r\n if (!start && !end) {\r\n $scope.addRuleInvalid.trigger = true;\r\n $scope.emptyDete[i] = true;\r\n }\r\n }\r\n }\r\n var tags = $scope.addRuleTriggerForm.tags;\r\n if(!$scope.generalForm.$valid) {\r\n $scope.addRuleInvalid.general = true;\r\n }\r\n if(!$scope.addRuleTriggerForm.$valid || $scope.addRuleInvalid.trigger) {\r\n $scope.addRuleInvalid.trigger = true;\r\n }\r\n if(!$scope.paramsForm.$valid) {\r\n $scope.addRuleInvalid.params = true;\r\n }\r\n return (!$scope.addRuleInvalid.general && !$scope.addRuleInvalid.trigger && !$scope.addRuleInvalid.params);\r\n };\r\n\r\n $scope.cancelRule = function () {\r\n $scope.currentRule = emptyRule();\r\n $scope.categories = [];\r\n $scope.triggerDates = [];\r\n $scope.setParams = [' '];\r\n $scope.invalidFormMarkersClear ();\r\n ruleFormReset();\r\n };\r\n\r\n\r\n $scope.setScrollToBottom = function(sectionNum, $scope, $element) {\r\n setTimeout(function () {\r\n var section = angular.element($('div.add-rule-section'))[sectionNum];\r\n var isScrolledToBottom = section.scrollHeight - section.clientHeight <= section.scrollTop;\r\n if (!isScrolledToBottom) {\r\n section.scrollTop = section.scrollHeight - section.clientHeight + 160;\r\n console.log(section.scrollTop);\r\n }\r\n }, 0);\r\n };\r\n }]);\r\n\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.controllers.config', ['lucidworksView.services.config'])\r\n .controller('configController', ['$scope', 'ConfigService',\r\n function ($scope, ConfigService) {\r\n\r\n $scope.configTitle = \"Hello, yo!\";\r\n //console.log(JSON.stringify(ConfigService.config, null, \" \"));\r\n $scope.version = ConfigService.config.version;\r\n }])\r\n\r\n})();\r\n", "// Module initialization\r\nangular.module('lucidworksView.controllers', [\r\n 'lucidworksView.controllers.home',\r\n 'lucidworksView.controllers.login',\r\n 'lucidworksView.controllers.rules',\r\n 'lucidworksView.controllers.config',\r\n 'lucidworksView.controllers.addRules'\r\n]);\r\n", "(function() {\n 'use strict';\n\n angular\n .module('lucidworksView.controllers.home', ['lucidworksView.services', 'angucomplete-alt', 'angular-humanize'])\n .controller('HomeController', HomeController);\n\n\n function HomeController($filter, $timeout, ConfigService, QueryService, URLService, Orwell, AuthService, _, $log) {\n\n 'ngInject';\n var hc = this; //eslint-disable-line\n var resultsObservable;\n var query;\n var sorting;\n\n hc.searchQuery = '*';\n\n activate();\n ////////////////\n function loadChecking () {\n\n var mainBlock = $('#main-hiding-block');\n var insertedBlock = $('.inserted-hiding-block');\n function isDisplayed (element) {\n var display = element.css('display');\n return ((display !== 'none'));\n }\n console.log ('----- rules block load checking ---------');\n console.log(\"main filter block: \" + mainBlock[0]);\n console.log(\"inserted filter block: \" + insertedBlock[0]);\n //if main and inserted blocks not \"undefined\" - blocks loaded but hidden;\n if (mainBlock && insertedBlock) {\n var isVisibleMain = mainBlock.is(':visible'); //true if block has width and height > 0, and 'display' is not 'none'\n var isVisibleInserted = insertedBlock.is(':visible');\n console.log('main block visible: ' + isVisibleMain);\n console.log('inserted block visible: ' + isVisibleInserted);\n\n var isDisplayedMain = isDisplayed(mainBlock); //false if 'display: none'\n var isDisplayedInserted = isDisplayed(insertedBlock);\n console.log('main block displayed: ' + isDisplayedMain);\n console.log('inserted block displayed: ' + isDisplayedInserted);\n }\n if (hc.fusion) {\n console.log('applicable_rules: ');\n console.log(hc.fusion.applicable_rules);\n //if applicable_rules - \"undefined\", inserted block gets class hidden');\n } else {\n console.log('applicable_rules not loaded');\n }\n console.log ('----- end rules block load checking ---------');\n }\n\n /**\n * Initializes a search from the URL object\n */\n function activate() {\n hc.search = doSearch;\n hc.logout = logout;\n hc.appName = ConfigService.config.search_app_title;\n hc.logoLocation = ConfigService.config.logo_location;\n hc.status = 'loading';\n hc.lastQuery = '';\n hc.sorting = {};\n hc.grouped = false;\n hc.simulation = {\n 'rules.exclude': [],\n tags: [],\n tags_exclude: [],\n now: null\n };\n\n query = URLService.getQueryFromUrl();\n hc.simulation = _.pick(query, 'rules.exclude', 'tags', 'tags_exclude', 'now');\n console.log('==== Page loaded ====');\n\n //Setting the query object... also populating the the view model\n hc.searchQuery = _.get(query,'q','*');\n // Use an observable to get the contents of a queryResults after it is updated.\n resultsObservable = Orwell.getObservable('queryResults');\n resultsObservable.addObserver(function(data) {\n // updateStatus();\n checkResultsType(data);\n updateStatus();\n // Initializing sorting\n sorting = hc.sorting;\n sorting.switchSort = switchSort;\n createSortList();\n\n hc.fusion = data.fusion;\n if (!hc.fusion.applicable_rules && hc.fusion.applicable_rules_data.response.docs) {\n hc.fusion.applicable_rules = hc.fusion.applicable_rules_data.response.docs;\n }\n console.log('---after getting fusion');\n loadChecking();\n });\n\n /**\n *\n * @param range DateRange string that looks like \"[2016-08-02T00:00 TO 2016-08-26T00:00]\"\n * */\n hc.parseRange = function (range) {\n var res = range.match(/(\\d\\d\\d\\d-\\d\\d-\\d\\d)T([^\\s]+) TO (\\d\\d\\d\\d-\\d\\d-\\d\\d)T(\\d\\d:\\d\\d)/);\n if (!res) {\n return {};\n }\n\n return {\n startDate: res[1],\n startTime: res[2],\n endDate: res[3],\n endTime: res[4]\n };\n };\n\n hc.getUIId = function (id) {\n return id && id.replace(/[^\\d\\w]/gi, \"\");\n };\n\n function createAndPushOrPull(array, value) {\n if (!array) {\n array = [];\n }\n\n if (!array.length) {\n array = _.values(array);\n }\n\n var index = array.indexOf(value);\n if (index == -1) {\n array.push(value);\n } else {\n array.splice(index, 1);\n }\n\n return array;\n }\n\n hc.includeRulesWithTag = function (ruleTag, include) {\n console.log(\"======== includeRulesWithTag =========\", ruleTag, include);\n\n var optionName = include === true ? 'tags' : 'tags_exclude';\n hc.simulation[optionName] = createAndPushOrPull(hc.simulation[optionName], ruleTag);\n\n doSearch();\n };\n\n hc.updateRules = function ($event, rule) {\n console.log(\"updateRules -1- \", rule, hc.simulation);\n $event.stopPropagation();\n\n hc.simulation['rules.exclude'] = createAndPushOrPull(hc.simulation['rules.exclude'], rule.id);\n\n console.log(\"updateRules -2- \", hc.simulation);\n doSearch();\n };\n\n // Force set the query object to change one digest cycle later\n // than the digest cycle of the initial load-rendering\n // The $timeout is needed or else the query to fusion is not made.\n $timeout(function(){\n\n console.log('---before getting fusion');\n loadChecking();\n URLService.setQuery(query);\n });\n\n\n }\n\n function checkResultsType(data){\n if (data.hasOwnProperty('response')) {\n hc.numFound = data.response.numFound;\n hc.numFoundFormatted = $filter('humanizeNumberFormat')(hc.numFound, 0);\n hc.lastQuery = data.responseHeader.params.q;\n if(_.has(data, 'facet_counts')){\n return hc.showFacets = !_.isEmpty(data.facet_counts.facet_fields);\n }\n // Make sure you check for all the supported facets before for empty-ness\n // before toggling the `showFacets` flag\n }\n else if(_.has(data, 'grouped')){\n hc.lastQuery = data.responseHeader.params.q;\n $log.debug(data.grouped, 'grouppeeeddd');\n var numFoundArray = [];\n _.each(data.grouped, function(group){\n numFoundArray.push(group.matches);\n });\n // For grouping, giving total number of documents found\n hc.numFound = _.sum(numFoundArray);\n hc.numFoundFormatted = $filter('humanizeNumberFormat')(hc.numFound, 0);\n if(_.has(data, 'facet_counts')){\n return hc.showFacets = !_.isEmpty(data.facet_counts.facet_fields);\n }\n }\n else {\n hc.numFound = 0;\n }\n }\n\n function updateStatus(){\n var status = '';\n if(hc.numFound === 0){\n status = 'no-results';\n if(hc.lastQuery === ''){\n status = 'get-started';\n }\n } else {\n status = 'normal';\n }\n hc.status = status;\n }\n\n\n function removeArray(query, name) {\n if (!query[name] || query[name].length == 0) {\n delete query[name]\n }\n }\n\n /**\n * Initializes a new search.\n */\n function doSearch() {\n var prevSearchQuery = query.q;\n var newSearchQuery = hc.searchQuery;\n if (prevSearchQuery != newSearchQuery) {\n hc.simulation = {};\n }\n\n console.log(\"-- doSearch --\", prevSearchQuery);\n\n\n query = {\n q: hc.searchQuery,\n start: 0,\n fq: [] // TODO better solution for turning off fq on a new query\n };\n\n _.extend(query, hc.simulation);\n if (!query.now) {\n delete query.now\n }\n\n removeArray(query, 'tags');\n removeArray(query, 'tags_exclude');\n removeArray(query, 'rules.exclude');\n removeArray(query, 'fq');\n\n console.log('doSearch', query);\n URLService.setQuery(query);\n }\n hc.doSearch = doSearch;\n\n /**\n * Creates a sorting list from ConfigService\n */\n function createSortList(){\n var sortOptions = [{label:'default sort', type:'default', order:'', active: true}];\n _.forEach(ConfigService.config.sort_fields, function(value){\n sortOptions.push({label: value, type: 'text', order: 'asc', active: false});\n sortOptions.push({label: value, type: 'text', order: 'desc', active: false});\n });\n sorting.sortOptions = sortOptions;\n sorting.selectedSort = sorting.sortOptions[0];\n }\n\n /**\n * Switches sort parameter in the page\n */\n function switchSort(sort){\n sorting.selectedSort = sort;\n var query = QueryService.getQueryObject();\n switch(sort.type) {\n case 'text':\n query.sort = sort.label+' '+sort.order;\n URLService.setQuery(query);\n break;\n default:\n delete query.sort;\n URLService.setQuery(query);\n }\n }\n\n /**\n * Logs a user out of a session.\n */\n function logout(){\n AuthService.destroySession();\n }\n }\n})();\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.controllers.login', ['lucidworksView.services.config'])\r\n .controller('LoginController', LoginController);\r\n\r\n function LoginController(ConfigService) {\r\n 'ngInject';\r\n var vm = this;\r\n vm.appName = ConfigService.config.search_app_title;\r\n vm.logoLocation = ConfigService.config.logo_location;\r\n }\r\n})();\r\n", "(function () {\n 'use strict';\n/*\n\n function setModalMaxHeight(element) {\n var $element = $(element),\n $content = $element.find('#addRule .modal-content');\n var borderWidth = $content.outerHeight() - $content.innerHeight();\n var dialogMargin = $(window).width() < 768 ? 20 : 60;\n var contentHeight = $(window).height() - (dialogMargin + borderWidth);\n var headerHeight = $element.find('.modal-header').outerHeight() || 0;\n var alertHeight = $element.find('.add-rule-error').outerHeight() || 0;\n var footerHeight = $element.find('.modal-footer').outerHeight() || 0;\n var maxHeight = contentHeight - (headerHeight + footerHeight + alertHeight);\n\n $content.css({ 'overflow': 'hidden'});\n\n $element\n .find('.modal-body').css({\n 'height': maxHeight\n });\n }\n*/\n\n angular\n .module('lucidworksView.controllers.rules', [\n 'lucidworksView.services.rules',\n 'lucidworksView.services.rules.transformer',\n 'lucidworksView.services.rules.filter',\n \"lucidworksView.services.user\",\n 'lucidworksView.services.config',\n 'lucidworksView.services.auth',\n 'ngTagsInput',\n 'ADM-dateTimePicker'\n ])\n .controller('rulesController', ['$scope', '$http', '$timeout', 'RulesService', 'RulesTransformerService', 'RulesFilterService', \"UserService\", 'ConfigService', 'AuthService',\n function ($scope, $http, $timeout, rulesService, rulesTransformerService, rulesFilterService, UserService, ConfigService, AuthService) {\n\n var rulesConfig = ConfigService.config.rules;\n $scope.logoLocation = ConfigService.config.logo_location;\n\n $scope.rulesConfig = rulesConfig;\n $scope.types = rulesConfig.types;\n $scope.policyList = rulesConfig.set_params.policies;\n $scope.productList = rulesConfig.documentFields;\n $scope.predefinedTags = rulesConfig.tags;\n $scope.checkedRulesIds = {};\n $scope.noConfirmRemove = {bulkRemove: {checked: false, activated: false}, singleRemove: {checked: false, activated: false}};\n $scope.masterBox = false;\n $scope.checkedTags = {};\n $scope.disabledRuleEdit = {};\n $scope.checkedRulesCount = 0;\n $scope.checkedRulesArray = [];\n $scope.rulesCollection = ConfigService.config.rules.collection.trim().replace('_rules', \"\");\n $scope.ruleToDelete = {};\n\n UserService.init();\n\n function pageInit() {\n\n $('.modal').on('show.bs.modal', function() {\n $(this).show();\n /*setModalMaxHeight(this);*/\n });\n\n $('.modal').on('shown.bs.modal', function() {\n autosize.update($('textarea'));\n });\n\n /* $(window).resize(function() {\n if ($('.modal.in').length != 0) {\n setModalMaxHeight($('.modal.in'));\n }\n });*/\n\n /*$('.disabledControl').prop('disabled', true);*/\n\n var rules = $scope.rules;\n\n for (var i = 0, l = rules.length; i < l; i++) {\n $scope.activate(rules.id);\n }\n\n function setTagsCheck () {\n for (var i = 0, l = $scope.facets.tags.length; i < l; i++) {\n $scope.checkedTags[$scope.facets.tags[i][0]] = -1;\n }\n }\n setTagsCheck ();\n }\n\n $scope.activate = function (id) {\n if ($scope.disabledRuleEdit[id] == true) {\n $scope.disabledRuleEdit[id] = false;\n } else {\n $scope.disabledRuleEdit[id] = true;\n }\n\n };\n\n\n function findIndexById(id) {\n if ($scope.rules.length == 0) {\n return null;\n }\n\n for (var i = 0; i < $scope.rules.length; i++) {\n var r = $scope.rules[i];\n if (!r) {\n console.log(\"Error: rule for index '\" + i + \"' is empty rules from '\" + (i - 5) + \"' to '\" + (i + 5) + \"'\");\n console.log(\"Error: \", $scope.rules.slice(i-5, i+5));\n return null;\n }\n if (r.id == id) {\n return i;\n }\n }\n return null;\n }\n\n function findRuleById(id) {\n var rule = $scope.rules[findIndexById(id)];\n if (rule) {\n return rule;\n }\n\n throw \"Error: rule with '\" + id + \"' not found.\";\n }\n\n\n $scope.getCheckedRulesCount = function () {\n $scope.cleanFromUnchecked();\n $scope.checkedRulesToArray();\n $scope.checkedRulesCount = $scope.checkedRulesArray.length;\n };\n\n $scope.cleanFromUnchecked = function () {\n var checkedRules = {};\n var allCheckedRules = $scope.checkedRulesIds;\n Object.keys(allCheckedRules).map(function(key, index) {\n if (allCheckedRules[key]) {\n checkedRules[key] = true;\n }\n });\n $scope.checkedRulesIds = checkedRules;\n };\n\n $scope.checkedRulesToArray = function () {\n var checkedRules = $scope.checkedRulesIds;\n var checkedRulesArray = [];\n Object.keys(checkedRules).map(function(key, index) {\n checkedRulesArray.push(key);\n });\n $scope.checkedRulesArray = checkedRulesArray;\n };\n\n $scope.filter = rulesFilterService;\n\n $scope.checkSession = function () {\n var res = AuthService.getSession();\n };\n\n $scope.changeTagsChecked = function (val, tag) {\n if (val == \"na\") {\n var tags = {};\n $.each( $scope.checkedTags, function( key, value ) {\n tags[key]= -1;\n });\n $scope.checkedTags = tags;\n }\n if (val == \"off\") {\n $scope.checkedTags[tag] = 0;\n }\n if (val == \"on\") {\n $scope.checkedTags[tag] = 1;\n }\n };\n\n function setViewDates(rule, triggerStartArray, triggerEndArray) {\n if (triggerStartArray[0] && triggerStartArray[0].value) {\n for (var i = 0; i < triggerStartArray.length; i++) {\n rule.viewDates[0][i] = triggerStartArray[i].value.trim() || \"*\";\n rule.viewDates[1][i] = triggerEndArray[i].value.trim() || \"*\";\n }\n }\n }\n\n $scope.checkUncheckAll = function (operation) {\n var masterBox = $scope.masterBox;\n var firstOnPage = rulesFilterService.rulesFrom();\n var lastOnPage = rulesFilterService.rulesTo();\n if (operation == 'all') {\n masterBox = true;\n } else if (operation == 'none') {\n masterBox = false;\n }\n if (masterBox) {\n for (var i = 0, l = $scope.rules.length; i < l; i++ ) {\n $scope.checkedRulesIds[$scope.rules[i].id] = true;\n }\n } else {\n $scope.checkedRulesIds = {};\n masterBox = false;\n }\n $scope.masterBox = masterBox;\n };\n\n $scope.removeRule = function (id) {\n var ruleIndex = findIndexById(id);\n var rule = $scope.rules[ruleIndex];\n if (!rule) {\n console.log(\"delete error: rule with id '\" + id + \"' not found.\");\n return;\n }\n console.log(\"delete - \" + id);\n $scope.rules.splice(ruleIndex, 1);\n delete $scope.checkedRulesIds[id];\n $scope.getCheckedRulesCount();\n $scope.rulesTotal -= 1;\n rulesService.delete(id);\n };\n\n $scope.checkNoConfirmDelete = function (id) {\n var bulkRemoveNoConfirm = $scope.noConfirmRemove.bulkRemove.activated;\n var singleRemoveNoConfirm = $scope.noConfirmRemove.singleRemove.activated;\n if (!id) {\n var checkedRules = $scope.checkedRulesCount;\n\n if ((checkedRules > 1 && bulkRemoveNoConfirm) || (checkedRules == 1 && singleRemoveNoConfirm)) {\n $scope.bulkRemoveRules();\n }\n } else {\n if (singleRemoveNoConfirm) {\n $scope.removeRule(id);\n } else {\n $scope.ruleToDelete.id = id;\n $scope.ruleToDelete.name = findRuleById(id).ruleName;\n console.log($scope.ruleToDelete.name);\n }\n }\n };\n\n $scope.clearRuleToDelete = function () {\n $scope.ruleToDelete = {};\n };\n $scope.bulkRemoveRules = function () {\n if ($scope.ruleToDelete) {\n $scope.removeRule($scope.ruleToDelete.id);\n $scope.ruleToDelete = {};\n } else {\n var checkedRules = $scope.checkedRulesArray;\n var l = checkedRules.length;\n while (l--) {\n $scope.removeRule(checkedRules[l]);\n }\n $scope.masterBox = false;\n }\n $scope.noConfirmRemove.bulkRemove.activated = $scope.noConfirmRemove.bulkRemove.checked;\n $scope.noConfirmRemove.singleRemove.activated = $scope.noConfirmRemove.singleRemove.checked;\n\n };\n\n $scope.bulkStatus = function (enabled) {\n var checkedRulesArray = $scope.checkedRulesArray;\n for (var i = 0, l = checkedRulesArray.length; i < l; i++) {\n findRuleById(checkedRulesArray[i]).enabled = enabled;\n $scope.updateRule(checkedRulesArray[i]);\n }\n };\n\n /**\n *\n * @param tag {String} string with tag value\n * @param remove {Boolean} true if we want to remove tag, otherwise add them\n */\n $scope.bulkAddTag = function (tag, remove, isNewTag) {\n var ruleArray = $scope.rules;\n var checkedRuleArray = $scope.checkedRulesArray;\n\n for (var i = 0, l = checkedRuleArray.length; i < l; i++) {\n var rule = findRuleById(checkedRuleArray[i]);\n if (remove) {\n if (rule.viewTags) {\n _.remove(rule.viewTags, function(tagO) {\n return tagO && tagO.text === tag;\n });\n }\n } else {\n if (!rule.viewTags) {\n rule.viewTags = [];\n }\n\n if (!_.find(rule.viewTags, function (t) { return t.text === tag })) {\n rule.viewTags.push({text: tag});\n }\n }\n\n if (isNewTag) {\n $scope.facets.tags.push([tag, 1]);\n }\n $scope.updateRule(rule.id);\n }\n console.log($scope.facets);\n };\n\n $scope.resetFocus = function () {\n var bulkActions = $('#bulk-actions');\n bulkActions.focus();\n bulkActions.blur();\n };\n\n $scope.updateRule = function (id) {\n console.log(\"update - \" + id);\n\n var ruleIndex = findIndexById(id);\n var rule = _.extend({}, $scope.rules[ruleIndex]);\n\n rule.updatedAt = new Date().toISOString();\n\n setViewDates(rule,\n $('tr[data-ruleId=\"' + rule.id + '\"] .trigger-start'),\n $('tr[data-ruleId=\"' + rule.id + '\"] .trigger-end'));\n\n delete rule._version_;\n\n rulesService.update(id, rulesTransformerService.viewRuleToModel(rule));\n\n $scope.rules[ruleIndex].tagsText = null;\n console.log(rule.viewDates);\n updateRulesInfo();\n };\n\n $scope.changeStatus = function (id) {\n var rule = findRuleById(id);\n rule.enabled = rule.enabled != undefined && rule.enabled === false;\n\n $scope.updateRule(id);\n };\n\n $scope.addTrigger = function (id, name) {\n var rule = findRuleById(id);\n\n if (name == 'search_terms') {\n rule.search_terms = rule.search_terms || [\"keyword\"];\n } else if (name == 'tags') {\n rule.viewTags = rule.viewTags || [];\n }\n };\n\n $scope.addFilter = function (id) {\n var rule = findRuleById(id);\n if (!rule.viewFilters) {\n rule.viewFilters = [[], []];\n }\n rule.viewFilters[0].push(' ');\n rule.viewFilters[1].push(' ');\n };\n\n function updateRulesInfo() {\n $timeout(function () {\n rulesService.search($scope.filter, function (response) {\n console.log(\"Update rules info...\");\n $scope.rulesTotal = response.data.response.numFound;\n $scope.facets = response.data.facet_counts.facet_fields;\n });\n }, 1000);\n }\n\n $scope.search = function (pageNum) {\n console.log(\"searching (\" + pageNum + \")...\");\n $scope.filter.values.pageNum = (pageNum || 0);\n\n rulesService.search($scope.filter, function (response) {\n var docs = response.data.response.docs;\n console.log(\"Rules loaded: \");\n console.log(docs);\n\n $scope.rules = docs.map(rulesTransformerService.modelRuleToView);\n $scope.rulesTotal = response.data.response.numFound;\n $scope.facets = response.data.facet_counts.facet_fields;\n\n $timeout(pageInit, 1);\n });\n };\n\n $scope.next = function () {\n if ($scope.filter.hasNext($scope.rulesTotal)) {\n $scope.search($scope.filter.next());\n }\n };\n\n $scope.prev = function () {\n // TODO change logic\n if ($scope.filter.hasPrev()) {\n $scope.search($scope.filter.prev());\n }\n };\n\n $scope.sortBy = function (by) {\n console.log(\"$scope.sortBy(\" + by + \")\");\n rulesFilterService.sortBy(by);\n\n console.log('sortBy', rulesFilterService.values);\n $scope.search();\n };\n\n $scope.filterBy = function (key, value) {\n $scope.filter.filterBy(key, value);\n $scope.search();\n };\n\n $scope.search();\n\n $scope.addDates = function (ruleId) {\n var rule = findRuleById(ruleId);\n\n if (!rule.viewDates) {\n rule.viewDates = [[], []];\n }\n rule.viewDates[0].push(undefined);\n rule.viewDates[1].push(undefined);\n };\n\n $scope.resetFilter = function () {\n $scope.filter.reset();\n $('.filter-form').each(function (index, form) {\n form.reset()\n });\n\n $scope.search();\n };\n\n $scope.applyFilter = function () {\n $scope.filter.values.startDate = $('#filterStart')[0].value;\n $scope.filter.values.endDate = $('#filterEnd')[0].value;\n\n $scope.search();\n };\n\n }]);\n\n})();\n", "(function () {\r\n angular\r\n .module('lucidworksView.utils.docs', [])\r\n .factory('DocsHelper', DocsHelper);\r\n\r\n /**\r\n * DocsHelper\r\n *\r\n * @param {Service} _ lodash\r\n * @return {Object} The properties\r\n */\r\n function DocsHelper(_) {\r\n 'ngInject';\r\n return {\r\n populateFieldLabels: populateFieldLabels,\r\n concatMultivaluedFields: concatMultivaluedFields,\r\n parseWildcards: parseWildcards,\r\n selectFields: selectFields\r\n };\r\n\r\n /**\r\n * Select Fields given a document and fieldArray\r\n * @param {object} document [description]\r\n * @param {array} fieldArray [description]\r\n * @return {object} The selected fields\r\n */\r\n function selectFields(document, fieldArray) {\r\n return _.pick(document, fieldArray);\r\n }\r\n\r\n /**\r\n * Parse a fields list for a wildcard, if present return an array of all fields.\r\n * @param {array} fieldsList List of fields and/or wildcards.\r\n * @param {object} doc The document fields.\r\n * @return {array} A list of all applicable fields.\r\n */\r\n function parseWildcards(fieldsList, doc){\r\n var wildcardId = _.indexOf(fieldsList, '*');\r\n if(wildcardId > -1){\r\n // Slice the list to just the fields before the first wildcard to order them first.\r\n var fieldsBeforeWildcard = _.slice(fieldsList, 0, wildcardId);\r\n // Add all existing fields to wildcard.\r\n fieldsList = _.union(fieldsBeforeWildcard, Object.keys(doc));\r\n // Remove the angular hashKey.\r\n _.remove(fieldsList, function(n) {\r\n switch(n){\r\n case '$$hashKey':\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return fieldsList;\r\n }\r\n\r\n /**\r\n * Returns human readable field names for a document\r\n *\r\n * @param {object} document The document objects to populate.\r\n * @param {object} fieldLabelMap The field to label map.\r\n * @return {object} A version of the document with populated labels.\r\n */\r\n function populateFieldLabels(document, fieldLabelMap) {\r\n //TODO: populate the field names from the map\r\n\r\n var unzippedDocuments = _.chain(document)\r\n .map(function (value, key) {\r\n return fieldLabelMap.hasOwnProperty(key) ? {\r\n key: fieldLabelMap[key],\r\n value: value\r\n } : {\r\n key: key,\r\n value: value\r\n };\r\n })\r\n .value();\r\n var blankDocument = {};\r\n _.forEach(unzippedDocuments, function (pair) {\r\n blankDocument[pair.key] = pair.value;\r\n });\r\n return blankDocument;\r\n }\r\n\r\n /**\r\n * concatMultivaluedFields Concats all multi-value Solr fields\r\n * @param {Object} document The document\r\n * @return {Object} the document with joined mulitvalued fields\r\n */\r\n function concatMultivaluedFields(document) {\r\n var blankDocument = {};\r\n _.forEach(document, function (value, key) {\r\n blankDocument[key] = (value instanceof Array) ? value.join(' ') : value;\r\n });\r\n return blankDocument;\r\n }\r\n }\r\n})();\r\n", "(function() {\n 'use strict';\n\n angular\n .module('lucidworksView.utils.queryBuilder', [])\n .provider('QueryBuilder', QueryBuilder);\n\n function QueryBuilder() {\n 'ngInject';\n /** @type object QueryTransformer defaults */\n var QueryDataTransformers = {\n keyValue: {\n 'default': function(key, value){return keyValueString(key, value, '=');}\n },\n join: {\n 'OR': function(str, values){return arrayJoinString(str, values, ' OR ');},\n 'AND': function(str, values){return arrayJoinString(str, values, ' AND ');},\n 'ampersand': function(str, values){return arrayJoinString(str, values, '&');},\n 'default': function(str, values){return arrayJoinString(str, values, '');}\n },\n preEncodeWrapper: {},\n encode: {},\n wrapper: {\n 'scope': function(data){return '('+data+')';},\n 'default': function(data){return data;}\n }\n };\n\n this.$get = $get;\n this.registerTransformer = registerTransformer;\n this.arrayJoinString = arrayJoinString;\n this.keyValueString = keyValueString;\n this.escapeSpecialChars = escapeSpecialChars;\n this.encodeURIComponentPlus = encodeURIComponentPlus;\n\n function $get(){\n 'ngInject';//eslint-disable-line\n return {\n registerTransformer: registerTransformer,\n keyValueString: keyValueString,\n arrayJoinString: arrayJoinString,\n objectToURLString: objectToURLString,\n escapeSpecialChars: escapeSpecialChars,\n encodeURIComponentPlus: encodeURIComponentPlus\n };\n }\n\n /**\n * Turns an Object into a URL String\n * @param {object} obj The query object to turn into a string\n *\n * @return {string} The query string.\n * @public\n */\n function objectToURLString(obj){\n // Reduce then replace any hashes with the URI compatible equivelent so\n // we don't clobber the rest of the query.\n return _.reduce(obj, outerReducer, '').replace(/\\#/g, '%23');\n }\n\n /**\n * Register a Query Data Transformer.\n *\n * Will allow you to transform a key and/or value in the query Observable\n * into the proper format when performing a search query.\n *\n * It operates on either the string level or inside an object.\n *\n * The callback function passes in an object with properties:\n * - key The key\n * - value The value\n *\n * The callback function must also return an object with the properties key and\n * value.\n *\n * @param {string} type The type of transformer\n *\n * @param {string} key The key of the transformer\n * EX: 'fq:field'\n * @param {Function} cb The callback function.\n * @public\n */\n function registerTransformer(type, key, cb){\n QueryDataTransformers[type][key] = cb;\n }\n\n /**\n * Escape special characters that are part of the query syntax of Lucene\n *\n * @param {String} s The string to escape\n *\n * @return {String}\n * @public\n */\n function escapeSpecialChars(s){\n return s.replace(/([\\+\\-!\\(\\)\\{\\}\\[\\]\\^\"~\\*\\?:\\\\])/g, function(match) {\n return '\\\\' + match;\n })\n .replace(/&&/g, '\\\\&\\\\&')\n .replace(/\\|\\|/g, '\\\\|\\\\|');\n }\n\n /**\n * Encodes a URI using plus instead of %20.\n *\n * @param {string} str The string to URL component to encode\n *\n * @return {string} The encoded string.\n * @public\n */\n function encodeURIComponentPlus(str){\n return encodeURIComponent(str).replace(/%20/g, '+');\n }\n\n /**\n * A helper function to consitantly concatanate a key, value, and join.\n *\n * @param {String} key Key to concatanate\n * @param {String} value Value to concatanate\n * @param {String} join string to join the key and the value (ex. =).\n *\n * @return {String} The joined string.\n * @public\n */\n function keyValueString(key, value, join) {\n return key + join + value;\n }\n\n /**\n * Concatanates an array of strings to a string using joins.\n * @param {string} str The initial string to start with.\n * @param {Array} arr The array to concatenate with joins\n * @param {string} join The string to join the array and strings together\n * @return {string} The concatenated string.\n * @public\n */\n function arrayJoinString(str, arr, join) {\n if(angular.isString(arr)){\n return str + join + arr;\n }\n return _.reduce(arr, arrayJoinStringReducer, str);\n function arrayJoinStringReducer(str, value){\n return str + ((str!=='')?join:'') + value;\n }\n }\n\n //////////////////////////\n /// Internal functions ///\n //////////////////////////\n\n /**\n * Simple reducer only handles top level url concatenation.\n * @param {String} str String with which to concatenate onto.\n * @param {array|String} value The value of this object property\n * @param {String} key key of the property.\n * @return {String} A concatenated query string.\n */\n function outerReducer(str, value, key) {\n var parameters;\n var ret;\n // get transformer functions;\n var keyValue = getTransformerFn('keyValue', key, QueryDataTransformers.keyValue.default);\n var preEncodeWrapper = getTransformerFn('preEncodeWrapper', key, false);\n var encode = getTransformerFn('encode', key, false);\n var wrapper = getTransformerFn('wrapper', key, false);\n var join = getTransformerFn('join', key, QueryDataTransformers.join.default);\n\n var wrappedValue = value;\n\n // If this is an array join all the properties.\n if(angular.isArray(value)){\n parameters = arrayReducer(key, value, keyValue, preEncodeWrapper, encode, wrapper, join, 0);\n } else {\n if(preEncodeWrapper){\n wrappedValue = preEncodeWrapper(wrappedValue);\n }\n if(encode){\n wrappedValue = encode(wrappedValue);\n }\n // If this field has a wrapper, apply it here.\n if (wrapper){\n wrappedValue = wrapper(wrappedValue);\n }\n // create a key value pair from the remaining.\n parameters = keyValue(key, wrappedValue);\n }\n\n // This is the first level and should use ampersand by default.\n if(str !== ''){\n ret = QueryDataTransformers.join.ampersand(str, parameters);\n } else {\n ret = join(str, parameters);\n }\n return ret;\n }\n\n /**\n * Reduces an array into a string.\n * @param {string} key key in a key value pair.\n * @param {array} values An array of values.\n * @param {Function} keyValue The key value function for this\n * array.\n * @param {Function|false} preEncodeWrapper The preEncodeWrapper function for\n * this array.\n * @param {Function|false} encode The encode function for this\n * array.\n * @param {Function|false} wrapper The wrapper function for this\n * array.\n * @param {Function} join The join function for this array.\n * @param {integer} level The level of recurion in the\n * tree.\n * @return {string} A reduced string from the array.\n */\n function arrayReducer(key, values, keyValue, preEncodeWrapper, encode, wrapper, join, level){\n return _.reduce(values, arrayReducerFunc, '');\n function arrayReducerFunc(str, value){\n var newVal = value;\n if(angular.isObject(value)){\n newVal = parseKeyValueStore(value, level+1);\n }\n if(preEncodeWrapper){\n newVal = preEncodeWrapper(newVal);\n }\n if(encode){\n newVal = encode(newVal);\n }\n // If this field has a wrapper, apply it here.\n if (wrapper){\n newVal = wrapper(newVal);\n }\n if(str.length > 0){\n var joiner = (level > 0) ? join : QueryDataTransformers.join.ampersand;\n str = joiner(str, keyValue(key, newVal));\n } else {\n str = QueryDataTransformers.join.default(str, keyValue(key, newVal));\n }\n return str;\n }\n }\n\n /**\n * Given an object parses the keys and values and reduces the values into a string.\n * @param {object} obj The object to parse.\n * @param {integer} level How far are we into the tree.\n * @return {string} The reduced string.\n */\n function parseKeyValueStore(obj, level){\n var transformer = obj.hasOwnProperty('transformer') ? obj.transformer : '_use_default_';\n\n var keyValue = getTransformerFn('keyValue', transformer, QueryDataTransformers.keyValue.default);\n var preEncodeWrapper = getTransformerFn('preEncodeWrapper', transformer, false);\n var encode = getTransformerFn('encode', transformer, false);\n var wrapper = getTransformerFn('wrapper', transformer, false);\n var join = getTransformerFn('join', transformer, QueryDataTransformers.join.default);\n return arrayReducer(obj.key, obj.values, keyValue, preEncodeWrapper, encode, wrapper, join, level);\n }\n\n /**\n * Simple function to determine which transformer to return.\n * @param {string} type The type of transformer.\n * @param {string} key The key of the transformer.\n * @param {function|false} defaultTransformer The default transformer function\n * @return {function} The transformer function.\n */\n function getTransformerFn(type, key, defaultTransformer){\n return QueryDataTransformers[type].hasOwnProperty(key) ? QueryDataTransformers[type][key] : defaultTransformer;\n }\n\n }\n})();\n\n/*\n(anonymous function) (QueryBuilder.js:96)\nescapeSpecialChars (QueryBuilder.js:95)\nfqFieldkeyValueTransformer (facetList.js:31)\narrayReducerFunc (QueryBuilder.js:234)\narrayReduce (foundation.js:618)\nreduce (foundation.js:8979)\narrayReducer (QueryBuilder.js:214)\nparseKeyValueStore (QueryBuilder.js:254)\narrayReducerFunc (QueryBuilder.js:218)\narrayReduce (foundation.js:618)\nreduce (foundation.js:8979)\narrayReducer (QueryBuilder.js:214)\nouterReducer (QueryBuilder.js:171)\n(anonymous function) (foundation.js:790)\n(anonymous function) (foundation.js:4411)\nbaseForOwn (foundation.js:2654)\n(anonymous function) (foundation.js:4380)\nbaseReduce (foundation.js:787)\nreduce (foundation.js:8979)\nobjectToURLString (QueryBuilder.js:55)\ngetQueryResults (QueryDataService.js:43)\n(anonymous function) (QueryService.js:33)\n(anonymous function) (foundation.js:65682)\nforEach (foundation.js:22038)\nObservable.notify (foundation.js:65681)\nObservable.setContent (foundation.js:65673)\nsetQuery (QueryService.js:60)\nsetQuery (URLService.js:33)\nupdateFacetQuery (facetFieldDirective.js:107)\ntoggleFacet (facetFieldDirective.js:88)\nfn (VM15999:4)\nexpensiveCheckFn (foundation.js:36308)\ncallback (foundation.js:45776)\n$eval (foundation.js:38057)\n$apply (foundation.js:38157)\n(anonymous function) (foundation.js:45781)\ndefaultHandlerWrapper (foundation.js:25067)\neventHandler (foundation.js:25055)\n*/\n", "angular.module('lucidworksView.utils', [\r\n 'lucidworksView.utils.queryBuilder',\r\n 'lucidworksView.utils.docs'\r\n]);\r\n", "(function () {\n 'use strict';\n angular\n .module('lucidworksView.components.banner', [])\n .directive('banner', banner);\n\n function banner() {\n 'ngInject';\n return {\n controller: Controller,\n templateUrl: 'assets/components/banner/banner.html',\n controllerAs: 'bd',\n bindToController: true,\n scope: true\n };\n }\n\n function Controller($scope, Orwell) {\n 'ngInject';\n var bd = this;\n bd.banners = false;\n\n var resultsObservable = Orwell.getObservable('queryResults');\n\n resultsObservable.addObserver(function (data) {\n var banners = _.get(data, 'fusion.banner');\n if (!banners) {\n var rules = _.get(data, 'fusion.applicable_rules');\n if (!rules) {\n bd.banners = false;\n return false;\n }\n\n var excludedRules = _.get(data, 'fusion.excluded_rules') || [];\n\n banners = _.chain(rules)\n .filter(function (r) {\n var type = r.display_type;\n if ((type == \"Banner\" || _.isArray(type) && type.indexOf(\"Banner\") != -1)\n && excludedRules.indexOf(r.id) == -1) {\n return true;\n }\n\n if ((r.type == \"response_value\" && r.keys.indexOf(\"banner\") != -1)\n && excludedRules.indexOf(r.id) == -1) {\n return true;\n }\n\n return false;\n })\n .flatMap(function (rule) {\n return rule.values\n })\n .value();\n }\n\n if (banners.length > 0) {\n bd.banners = banners;\n } else {\n bd.banners = false;\n }\n });\n }\n\n})();\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.documentList', ['lucidworksView.services.config',\r\n 'ngOrwell', 'lucidworksView.services.landingPage'\r\n ])\r\n .directive('documentList', documentList);\r\n\r\n function documentList() {\r\n 'ngInject';\r\n return {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/documentList/documentList.html',\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {},\r\n scope: true,\r\n replace: true\r\n };\r\n\r\n }\r\n\r\n function Controller($sce, $log, $anchorScroll, Orwell) {\r\n 'ngInject';\r\n var vm = this;\r\n vm.docs = [];\r\n vm.highlighting = {};\r\n vm.getDocType = getDocType;\r\n vm.groupedResults = false;\r\n vm.toggleGroupedResults = toggleGroupedResults;\r\n vm.showGroupedResults = {};\r\n\r\n activate();\r\n\r\n ////////\r\n\r\n function activate() {\r\n var resultsObservable = Orwell.getObservable('queryResults');\r\n resultsObservable.addObserver(function (data) {\r\n vm.docs = parseDocuments(data);\r\n vm.highlighting = parseHighlighting(data);\r\n vm.getDoctype = getDocType;\r\n $anchorScroll('topOfMainContent');\r\n });\r\n }\r\n\r\n /**\r\n * Get the document type for the document.\r\n * @param {object} doc Document object\r\n * @return {string} Type of document\r\n */\r\n function getDocType(doc){\r\n // Change to your collection datasource type name\r\n // if(doc['_lw_data_source_s'] === 'MyDatasource-default'){\r\n // return doc['_lw_data_source_s'];\r\n // }\r\n return doc['_lw_data_source_type_s'];\r\n }\r\n\r\n /**\r\n * Decorates the document object before sending to the document directive.\r\n * @param {object} doc Document object\r\n * @return {object} Document object\r\n */\r\n\r\n function isNotGrouped(data){\r\n return _.has(data, 'response');\r\n }\r\n function isGrouped(data){\r\n return _.has(data, 'grouped');\r\n }\r\n /**\r\n * Get the documents from\r\n * @param {object} data The result data.\r\n * @return {array} The documents returned\r\n */\r\n function parseDocuments(data){\r\n var docs = [];\r\n if (isNotGrouped(data)) {\r\n docs = data.response.docs;\r\n }\r\n else if(isGrouped(data)){\r\n vm.groupedResults = data.grouped;\r\n parseGrouping(vm.groupedResults);\r\n }\r\n return docs;\r\n }\r\n\r\n\r\n function toggleGroupedResults(toggle){\r\n vm.showGroupedResults[toggle] = !vm.showGroupedResults[toggle];\r\n }\r\n\r\n function parseGrouping(results){\r\n _.each(results, function(item){\r\n _.each(item.groups, function(group){\r\n if(_.has(group, 'groupValue') && group.groupValue !== null){\r\n vm.showGroupedResults[group.groupValue] = false;\r\n }\r\n else{\r\n vm.showGroupedResults['noGroupedValue'] = true;\r\n };\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get highlighting from a document.\r\n * @param {object} data The result data.\r\n * @return {object} The highlighting results.\r\n */\r\n function parseHighlighting(data) {\r\n if (data.hasOwnProperty('highlighting')){\r\n _.each(data.highlighting, function(value, key){\r\n var vals = {};\r\n if (value) {\r\n _.each(Object.keys(value), function (key) {\r\n $log.debug('highlight', value);\r\n var val = value[key];\r\n _.each(val, function(high){\r\n vals[key] = $sce.trustAsHtml(high);\r\n });\r\n });\r\n vm.highlighting[key] = vals;\r\n }\r\n });\r\n }\r\n else{\r\n vm.highlighting = {};\r\n }\r\n return vm.highlighting;\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.dragAndDropFile', [])\r\n .directive('dragAndDropFile', dragAndDropFile);\r\n\r\n function dragAndDropFile () {\r\n 'ngInject';\r\n return {\r\n restrict: 'EA',\r\n scope: {ngModel: '=', rightFileType: '='},\r\n link: function (scope, element, attrs) {\r\n var processDragOverOrEnter;\r\n\r\n processDragOverOrEnter = function (event) {\r\n if (event !== null) {\r\n event.preventDefault();\r\n }\r\n event.dataTransfer.effectAllowed = 'copy';\r\n return false;\r\n };\r\n element.bind('dragover', processDragOverOrEnter);\r\n element.bind('dragenter', processDragOverOrEnter);\r\n element.bind('drop', handleDropEvent);\r\n\r\n function insertText(loadedFile) {\r\n console.log(\"insertText\");\r\n console.log(scope.ngModel);\r\n var content = loadedFile.target.result.split(/,|\\n/);\r\n console.log(content);\r\n var modelContent = scope.ngModel || [];\r\n var areaContent = modelContent.concat(content);\r\n console.log(areaContent);\r\n scope.ngModel = areaContent;\r\n scope.$apply();\r\n }\r\n\r\n function handleDropEvent(event) {\r\n\r\n if (event !== null) {\r\n event.preventDefault();\r\n }\r\n var reader = new FileReader();\r\n reader.onload = insertText;\r\n reader.readAsText(event.dataTransfer.files[0]);\r\n }\r\n }\r\n };\r\n }\r\n})();\r\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.components.facetField', [\n 'lucidworksView.services.config',\n 'foundation.core',\n 'lucidworksView.utils.queryBuilder',\n 'angular-humanize'\n ])\n .config(Config);\n\n function Config(QueryBuilderProvider){\n 'ngInject';\n // Register transformers because facet fields can have funky URL syntax.\n QueryBuilderProvider.registerTransformer('keyValue', 'fq:field', fqFieldkeyValueTransformer);\n QueryBuilderProvider.registerTransformer('preEncodeWrapper', 'fq:field', fqFieldPreEncodeWrapper);\n QueryBuilderProvider.registerTransformer('encode', 'fq:field', fqFieldEncode);\n QueryBuilderProvider.registerTransformer('wrapper', 'fq:field', fqFieldWrapper);\n\n // TODO properly implement transformer for localParens\n QueryBuilderProvider.registerTransformer('join', 'localParens', localParenJoinTransformer);\n QueryBuilderProvider.registerTransformer('wrapper', 'localParens', localParenWrapperTransformer);\n\n /**\n * Transformers.\n *\n * These will transform the output of the query, when the query is created.\n */\n\n function fqFieldkeyValueTransformer(key, value) {\n //var escapedKey = QueryBuilderProvider.escapeSpecialChars(key);\n // at least we need something smarter then simple escaping because field name can contain '-' (dash) for example\n // and simple escaping make this field name invalid.\n return QueryBuilderProvider.keyValueString(key, value, ':');\n }\n\n function fqFieldPreEncodeWrapper(data){\n return '\"'+data+'\"';\n }\n\n function fqFieldEncode(data){\n return QueryBuilderProvider.encodeURIComponentPlus(data);\n }\n\n function fqFieldWrapper(data){\n return '('+data+')';\n }\n\n function localParenJoinTransformer(str, values) {\n return QueryBuilderProvider.arrayJoinString(str, values, ' ');\n }\n\n function localParenWrapperTransformer(data) {\n return '{!' + data + '}';\n }\n }\n\n})();\n", "(function() {\n 'use strict';\n\n angular\n .module('lucidworksView.components.facetField')\n .directive('facetField', facetField);\n\n function facetField() {\n 'ngInject';\n return {\n restrict: 'EA',\n templateUrl: 'assets/components/facetField/facetField.html',\n scope: true,\n controller: Controller,\n controllerAs: 'vm',\n bindToController: {\n facetName: '@facetName',\n facetLabel: '@facetLabel',\n facetAutoOpen: '@facetAutoOpen'\n }\n };\n }\n\n function Controller(ConfigService, QueryService, URLService, QueryDataService, Orwell, FoundationApi, $filter) {\n 'ngInject';\n var vm = this;\n vm.facetCounts = [];\n vm.toggleFacet = toggleFacet;\n vm.toggleMore = toggleMore;\n vm.getLimitAmount = getLimitAmount;\n vm.more = false;\n var resultsObservable = Orwell.getObservable('queryResults');\n\n activate();\n\n //////////////\n\n /**\n * Activate the controller.\n */\n function activate() {\n\n // Add observer to update data when we get results back.\n resultsObservable.addObserver(parseFacets);\n // initialize the facets.\n parseFacets(resultsObservable.getContent());\n }\n\n /**\n * Toggles the more button for the facet.\n */\n function toggleMore(){\n vm.more = !vm.more;\n }\n\n /**\n * Gets the amount to limit by\n * @return {integer|undefined} The amount to return or undefined.\n */\n function getLimitAmount(){\n if(vm.more){\n return undefined;\n }\n return 5;\n }\n\n /**\n * Parses the facets from an observable into an array of facets.\n * @param {object} data The data from the observable.\n */\n function parseFacets(data){\n // Exit early if there are no facets in the response.\n if (!data.hasOwnProperty('facet_counts')) return;\n\n // Determine if facet exists.\n var facetFields = data.facet_counts.facet_fields;\n if (facetFields.hasOwnProperty(vm.facetName)) {\n // Transform an array of values in format [‘aaaa’, 1234,’bbbb’,2345] into an array of objects.\n vm.facetCounts = arrayToObjectArray(facetFields[vm.facetName]);\n }\n\n // Set inital active state\n var active = true;\n // If we have autoOpen set active to this state.\n if (angular.isDefined(vm.facetAutoOpen) && vm.facetAutoOpen === 'false') {\n active = false;\n }\n vm.active = active;\n }\n\n /**\n * Turn a flat array into an object array.\n *\n * Transforms an array of values in format ['aaaa', 1234,'bbbb',2345] into\n * an array of objects.\n * [{title:'aaaa', amount:1234, hash: zf-hs-njkfhdsle},\n * {title:'bbbb', amount:2345, hash: zf-hs-jkewrkljn}]\n *\n * @param {array} arr The array to transform\n * @return {array} An array of objects\n */\n function arrayToObjectArray(arr) {\n return _.transform(arr, function (result, value, index) {\n if (index % 2 === 1) {\n result[result.length - 1] = {\n title: result[result.length - 1],\n amount: value,\n amountFormatted: $filter('humanizeNumberFormat')(value, 0),\n hash: FoundationApi.generateUuid(),\n active: isFacetActive(vm.facetName, result[result.length - 1])\n };\n } else {\n result.push(value);\n }\n });\n }\n\n /**\n * Toggles a facet on or off depending on it's current state.\n * @param {object} facet The facet object\n */\n function toggleFacet(facet) {\n var key = vm.facetName;\n var query = QueryService.getQueryObject();\n\n // CASE: fq exists.\n if(!query.hasOwnProperty('fq')){\n query = addQueryFacet(query, key, facet.title);\n } else {\n // Remove the key object from the query.\n // We will re-add later if we need to.\n var keyArr = _.remove(query.fq, {key: key, transformer:'fq:field'});\n\n // CASE: facet key exists in query.\n if(keyArr.length > 0) {\n var keyObj = keyArr[0];\n var removed = _.remove(keyObj.values, function(value){return value === facet.title;});\n // CASE: value didn't previously exist add to values.\n if(removed.length === 0){\n if(!keyObj.hasOwnProperty('values')){\n keyObj.values = [];\n }\n keyObj.values.push(facet.title);\n }\n // CASE: there are still values in facet attach keyobject back to query.\n if(keyObj.values.length > 0){\n query.fq.push(keyObj);\n }\n // Delete 'fq' if it is now empty.\n if(query.fq.length === 0){\n delete query.fq;\n }\n } else { // CASE: Facet key doesn't exist ADD key AND VALUE.\n query = addQueryFacet(query, key, facet.title);\n }\n\n }\n // Set the query and trigger the refresh.\n updateFacetQuery(query);\n }\n\n /**\n * Sets the facet query and sets start row to beginning.\n * @param {object} query The query object.\n */\n function updateFacetQuery(query){\n query.start = 0;\n URLService.setQuery(query);\n }\n\n /**\n * Determine if a facet is currently active.\n * @param {string} key The key for the facet\n * @param {object} value the facet\n * @return {Boolean} [description]\n */\n function isFacetActive(key, value){\n var query = QueryService.getQueryObject();\n if(!query.hasOwnProperty('fq')){\n return false;\n }\n var keyObj = _.find(query.fq, {key: key, transformer: 'fq:field'});\n if(_.isEmpty(keyObj)){\n return false;\n }\n if(_.isEmpty(_.find(keyObj.values, function(data){return data === value;}))){\n return false;\n }\n return true;\n }\n\n function addQueryFacet(query, key, title){\n if(!query.hasOwnProperty('fq')){\n query.fq = [];\n }\n var keyObj = {\n key: key,\n values: [title],\n transformer: 'fq:field'\n };\n query.fq.push(keyObj);\n return query;\n }\n\n }\n})();\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.components.facetList', ['lucidworksView.services.config'])\n .directive('facetList', facetList);\n\n function facetList() {\n 'ngInject';\n\n return {\n restrict: 'EA',\n templateUrl: 'assets/components/facetList/facetList.html',\n scope: true,\n controller: Controller,\n controllerAs: 'vm',\n bindToController: {}\n };\n }\n\n function Controller(ConfigService, Orwell) {\n 'ngInject';\n var vm = this;\n var resultsObservable = Orwell.getObservable('queryResults');\n vm.facets = [];\n vm.facetNames = {};\n\n resultsObservable.addObserver(function (data) {\n\n if (!data.hasOwnProperty('facet_counts')) {\n return; // Exit early if there are no facets in the response.\n }\n\n _.forEach(data.facet_counts, function (resultFacets, facetType){\n if(_.isEmpty(resultFacets)){\n return; // Return early if no facets exists for type.\n }\n\n var facetFields = Object.keys(resultFacets);\n if (_.isEqual(vm.facetNames[facetType], facetFields)) {\n return; // Keep a list of facet names and only reflow facets based on changes to this list.\n }\n\n vm.facetNames[facetType] = facetFields;\n\n vm.facets = _.concat(vm.facets, facetFields.map(function (value) {\n return {\n name: value,\n type: facetType,\n autoOpen: true,\n label: ConfigService.getFieldLabels()[value] || value\n };\n }));\n });\n });\n\n }\n})();\n", "(function () {\r\n angular.module('lucidworksView.components.field', ['lucidworksView.services.config',\r\n 'lucidworksView.utils.docs'\r\n ])\r\n .directive('field', fieldItem);\r\n\r\n\r\n function fieldItem() {\r\n 'ngInject';\r\n return {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/field/field.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'fc',\r\n bindToController: {\r\n value: '=',\r\n highlight: '=',\r\n hkey: '@', //The Highlight key, used to look up the proper highlighting snippet by name.\r\n maxlength: '='\r\n },\r\n replace: true\r\n };\r\n }\r\n\r\n function Controller() {\r\n 'ngInject';\r\n var fc = this;\r\n\r\n activate();\r\n\r\n ///////////\r\n\r\n function activate() {\r\n fc.value = processField(fc.value, fc.hkey, fc.highlight, fc.maxlength);\r\n }\r\n\r\n function processField(field, highlightKey, highlight, maxlength) {\r\n var result = field;\r\n var hasHighlight = false;\r\n\r\n if (highlight && Object.keys(highlight).length > 0) {\r\n if (highlight[highlightKey]) {\r\n result = highlight[highlightKey];\r\n }\r\n }\r\n // Only shorten if not highlighting, since highlighing in solr can control\r\n // snippet size there and b/c we have a Trusted object and not a plain\r\n // old string.\r\n\r\n // If field is multivalued, join the items before trimming\r\n result = _.isArray(result)?_.join(result, ' '):result;\r\n\r\n if (hasHighlight === false && result && result.length > maxlength) {\r\n // Trim it, ideally on whitespace\r\n var idx = result.lastIndexOf(' ', maxlength);\r\n if (idx !== -1) {\r\n result = result.substring(0, idx);\r\n } else {\r\n // We can't find simple whitespace, so just trim arbitrarily\r\n result = result.substring(0, maxlength);\r\n }\r\n result += '...';\r\n }\r\n return result;\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.landingpage', ['lucidworksView.services.landingPage'])\r\n .directive('landingPage', landingPage);\r\n\r\n function landingPage() {\r\n 'ngInject';\r\n return {\r\n controller: Controller,\r\n templateUrl: 'assets/components/landingPage/landingPage.html',\r\n controllerAs: 'lp',\r\n bindToController: true,\r\n scope: true\r\n };\r\n\r\n }\r\n\r\n function Controller($scope, Orwell, LandingPageService) {\r\n 'ngInject';\r\n var lp = this;\r\n lp.landingPages = false;\r\n\r\n var resultsObservable = Orwell.getObservable('queryResults');\r\n\r\n resultsObservable.addObserver(function (data) {\r\n var landing_pages = LandingPageService.getLandingPagesFromData(data);\r\n if (angular.isArray(landing_pages)) {\r\n lp.landingPages = _.uniq(landing_pages);\r\n } else {\r\n lp.landingPages = false;\r\n }\r\n });\r\n }\r\n\r\n})();\r\n", "(function () {\n 'use strict';\n\n angular\n .module('lucidworksView.components.login', ['lucidworksView.services.auth',\n 'ui.router'\n ])\n .directive('login', login);\n\n function login() {\n 'ngInject';\n return {\n controller: Controller,\n templateUrl: 'assets/components/login/login.html',\n controllerAs: 'vm',\n bindToController: true,\n scope: true\n };\n\n }\n\n function Controller(ConfigService, Orwell, AuthService, $state) {\n 'ngInject';\n var vm = this;\n vm.username = '';\n vm.password = '';\n vm.error = null;\n vm.submitting = false;\n\n vm.submit = submit;\n\n function submit() {\n vm.error = null;\n vm.submitting = true;\n AuthService\n .createSession(vm.username, vm.password)\n .then(success, failure);\n\n function success() {\n vm.submitting = false;\n $state.go('rules');\n }\n\n function failure(err) {\n vm.submitting = false;\n vm.error = err;\n }\n\n }\n }\n})();\n", "(function () {\r\n 'use strict';\r\n // Initialize module.\r\n angular.module('lucidworksView.components.paginate', ['lucidworksView.services.config',\r\n 'lucidworksView.services.url', 'angular-humanize'\r\n ]);\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.paginate')\r\n .directive('paginate', paginate);\r\n\r\n function paginate() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/paginate/paginate.html',\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: true,\r\n scope: true\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n function Controller(Orwell, PaginateService, URLService, $filter) {\r\n 'ngInject';\r\n var vm = this;\r\n vm.page = 0;\r\n vm.totalPages = 0;\r\n vm.getNormalizedPage = getNormalizedPage;\r\n vm.getNormalizedPageFormatted = getNormalizedPageFormatted;\r\n vm.getLastPage = getLastPage;\r\n vm.gotoNextPage = gotoNextPage;\r\n vm.gotoPreviousPage = gotoPreviousPage;\r\n vm.showState = 'next';\r\n\r\n activate();\r\n\r\n /////////////\r\n\r\n function activate() {\r\n var resultsObservable = Orwell.getObservable('queryResults');\r\n\r\n resultsObservable.addObserver(function (data) {\r\n if (data.hasOwnProperty('response')) {\r\n vm.page = PaginateService.getCurrentPage();\r\n vm.totalPages = PaginateService.getTotalPages();\r\n vm.totalPagesFormatted = $filter('humanizeNumberFormat')(vm.totalPages, 0);\r\n vm.showState = pickPaginatorType();\r\n } else {\r\n vm.page = 0;\r\n vm.totalPages = 0;\r\n }\r\n });\r\n }\r\n\r\n function pickPaginatorType(){\r\n if(vm.totalPages < 1) return 'neither';\r\n if(vm.page === 0 && vm.totalPages > 1) return 'next';\r\n if(vm.page === vm.getLastPage() && vm.page > 0) return 'previous';\r\n if(vm.page !== vm.getLastPage()) return 'both';\r\n }\r\n\r\n /**\r\n * Get the page number (normalized for viewers from a 1 base)\r\n * @return {integer} normalized page number\r\n */\r\n function getNormalizedPage() {\r\n return vm.page + 1;\r\n }\r\n\r\n function getNormalizedPageFormatted(){\r\n return $filter('humanizeNumberFormat')(getNormalizedPage(), 0);\r\n }\r\n\r\n /**\r\n * Get the last page (0 start based)\r\n * @return {integer} The last page from 0 base.\r\n */\r\n function getLastPage() {\r\n return vm.totalPages - 1;\r\n }\r\n\r\n /**\r\n * Updates the query parameters to the next page.\r\n */\r\n function gotoNextPage() {\r\n gotoPage(PaginateService.getCurrentPage() + 1);\r\n }\r\n\r\n /**\r\n * Updates the query parameters to the previous page.\r\n */\r\n function gotoPreviousPage() {\r\n gotoPage(PaginateService.getCurrentPage() - 1);\r\n }\r\n\r\n /**\r\n * Actually updates the page to go to.\r\n * @param {integer} page The page to do to\r\n */\r\n function gotoPage(page) {\r\n if (page < 0) return;\r\n if (page > PaginateService.getTotalPages()) return;\r\n if (page === PaginateService.getCurrentPage()) return;\r\n // This will change the query and cause the interface to make an http call.\r\n URLService.setQuery({\r\n start: PaginateService.pageToStartRow(page)\r\n });\r\n }\r\n\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.paginate')\r\n .factory('PaginateService', PaginateService);\r\n\r\n\r\n function PaginateService(Orwell) {\r\n 'ngInject';\r\n var queryObservable, resultsObservable,\r\n service = {\r\n pageToStartRow: pageToStartRow,\r\n getRowsPerPage: getRowsPerPage,\r\n getCurrentPage: getCurrentPage,\r\n getTotalPages: getTotalPages\r\n };\r\n\r\n activate();\r\n\r\n return service;\r\n\r\n ////////////////\r\n\r\n /**\r\n * Activate the service.\r\n */\r\n function activate(){\r\n queryObservable = Orwell.getObservable('query');\r\n resultsObservable = Orwell.getObservable('queryResults');\r\n }\r\n\r\n /**\r\n * Turn a page into a start row.\r\n * @param {integer} page The page index\r\n * @return {integer} The start row\r\n */\r\n function pageToStartRow(page) {\r\n return page * getRowsPerPage();\r\n }\r\n\r\n /**\r\n * Get the number of Rows Per Page\r\n *\r\n * @return {integer} Rows per page\r\n */\r\n function getRowsPerPage() {\r\n var query = queryObservable.getContent();\r\n return query.rows;\r\n }\r\n\r\n /**\r\n * Get the current page\r\n * @return {integer} The page number\r\n */\r\n function getCurrentPage() {\r\n return getPage(getCurrentStartRow());\r\n }\r\n\r\n /**\r\n * Get the total number of pages for the query.\r\n * @return {integer} The number of pages\r\n */\r\n function getTotalPages() {\r\n if (getRowsPerPage() === 0) return 0;\r\n // total pages = CEIL(ALL ROWS / ROWS PER PAGE)\r\n return (getTotalResultRows() > 0) ? (Math.ceil(getTotalResultRows() /\r\n getRowsPerPage())) : 0;\r\n }\r\n\r\n /////////////////////\r\n // Private Methods //\r\n /////////////////////\r\n\r\n /**\r\n * Get the current start row.\r\n * @return {integer} The start row\r\n */\r\n function getCurrentStartRow() {\r\n var query = queryObservable.getContent();\r\n return query.start;\r\n }\r\n\r\n /**\r\n * Get the total number of results rows for the current query.\r\n * @return {integer} Number of result rows.\r\n */\r\n function getTotalResultRows() {\r\n var results = resultsObservable.getContent();\r\n if (results.hasOwnProperty('response')) {\r\n return results.response.numFound;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Get a page given a start row.\r\n * @param {integer} startRow The row to start the page from\r\n * @return {integer} The page number\r\n */\r\n function getPage(startRow){\r\n if (getRowsPerPage() === 0 || startRow === 0) return 0;\r\n return Math.ceil(startRow / getRowsPerPage());\r\n }\r\n\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n // Initialize module.\r\n angular.module('lucidworksView.components.searchbox', [\r\n 'lucidworksView.services.apiBase',\r\n 'lucidworksView.services.config',\r\n 'lucidworksView.services.query',\r\n 'lucidworksView.services.queryData',\r\n 'angucomplete-alt'\r\n ]);\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.searchbox')\r\n .factory('SearchBoxDataService', SearchBoxDataService);\r\n\r\n function SearchBoxDataService($http, $q, ConfigService, ApiBase, QueryBuilder, QueryDataService){\r\n 'ngInject';\r\n\r\n return {\r\n getTypeaheadResults: getTypeaheadResults\r\n };\r\n\r\n ////////////\r\n\r\n function getTypeaheadResults(query){\r\n var deferred = $q.defer();\r\n\r\n var queryString = QueryBuilder.objectToURLString(query);\r\n\r\n var fullUrl = getQueryUrl(ConfigService.getIfQueryProfile()) + '?' + queryString;\r\n\r\n $http\r\n .get(fullUrl)\r\n .then(success)\r\n .catch(failure);\r\n\r\n function success(response) {\r\n deferred.resolve(response.data);\r\n }\r\n\r\n function failure(err) {\r\n deferred.reject(err.data);\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Private function\r\n */\r\n function getQueryUrl(isProfile){\r\n var requestHandler = ConfigService.getTypeaheadRequestHandler();\r\n\r\n var profileUrl = QueryDataService.getProfileEndpoint(ConfigService.getTypeaheadProfile(), requestHandler);\r\n\r\n var pipelineUrl = QueryDataService.getPipelineEndpoint(ConfigService.getTypeaheadPipeline(), requestHandler);\r\n\r\n return isProfile?profileUrl:pipelineUrl;\r\n }\r\n\r\n }\r\n})();\r\n", "(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.searchbox')\r\n .directive('searchBox', searchbox);\r\n\r\n function searchbox() {\r\n 'ngInject';\r\n return {\r\n restrict: 'EA',\r\n controller: Controller,\r\n templateUrl: 'assets/components/searchBox/searchBox.html',\r\n scope: true,\r\n controllerAs: 'ta',\r\n bindToController: {\r\n query: '='\r\n },\r\n require: '^form'\r\n };\r\n }\r\n\r\n function Controller($scope, $q, ConfigService, QueryService,\r\n SearchBoxDataService) {\r\n 'ngInject';\r\n var ta = this;\r\n ta.typeaheadField = ConfigService.getTypeaheadField();\r\n ta.doTypeaheadSearch = doTypeaheadSearch;\r\n ta.selectedSomething = selectedSomething;\r\n ta.updateSearchQuery = updateSearchQuery;\r\n ta.initialValue = _.isArray(ta.query)?ta.query[0]:ta.query;\r\n\r\n function selectedSomething(object) {\r\n if (object) {\r\n var newValue = object.originalObject[ta.typeaheadField];\r\n ta.query = _.isArray(newValue)?newValue[0]:newValue;\r\n }\r\n }\r\n\r\n function updateSearchQuery(inputString) {\r\n ta.query = inputString;\r\n }\r\n\r\n function doTypeaheadSearch(userInputString, timeoutPromise) {\r\n var deferred = $q.defer();\r\n\r\n SearchBoxDataService\r\n .getTypeaheadResults({q: ta.query, wt: 'json'})\r\n .then(function (resp) {\r\n if(resp.hasOwnProperty('response')) {\r\n var objectToResolve = {\r\n data: resp.response.docs\r\n };\r\n deferred.resolve(objectToResolve);\r\n } else {\r\n deferred.reject('No response docs');\r\n }\r\n })\r\n .catch(function (error) {\r\n timeoutPromise.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n\r\n }\r\n\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.sort', [])\r\n .directive('sort', sort);\r\n\r\n function sort() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'E',\r\n templateUrl: 'assets/components/sort/sort.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {}\r\n };\r\n\r\n return directive;\r\n\r\n\r\n }\r\n\r\n function Controller($scope, ConfigService, QueryService, URLService) {\r\n 'ngInject';\r\n var vm = this;\r\n vm.switchSort = switchSort;\r\n\r\n activate();\r\n\r\n /////////////\r\n\r\n function activate() {\r\n createSortList();\r\n\r\n $scope.$watch('vm.selectedSort', handleSelectedSortChange);\r\n }\r\n\r\n function createSortList(){\r\n var sortOptions = [{label:'default sort', type:'default', order:'', active: true}];\r\n _.forEach(ConfigService.config.sort_fields, function(value){\r\n sortOptions.push({label: value, type: 'text', order: 'asc', active: false});\r\n sortOptions.push({label: value, type: 'text', order: 'desc', active: false});\r\n });\r\n vm.sortOptions = sortOptions;\r\n vm.selectedSort = vm.sortOptions[0];\r\n }\r\n\r\n function handleSelectedSortChange(newValue, oldValue){\r\n if(newValue === oldValue) return;\r\n\r\n switchSort(newValue);\r\n }\r\n\r\n function switchSort(sort){\r\n var query = QueryService.getQueryObject();\r\n switch(sort.type) {\r\n case 'text':\r\n if(angular.isUndefined(query.sort)){\r\n query.sort = sort.label+'%20'+sort.order;\r\n URLService.setQuery(query);\r\n }\r\n break;\r\n default:\r\n delete query.sort;\r\n URLService.setQuery(query);\r\n }\r\n }\r\n }\r\n})();\r\n", "(function () {\r\n angular.module('lucidworksView.components.document', ['lucidworksView.services.config',\r\n 'lucidworksView.utils.docs', 'lucidworksView.services.signals'\r\n ])\r\n .directive('documentDefault', documentDefault);\r\n\r\n\r\n function documentDefault() {\r\n 'ngInject';\r\n return {\r\n templateUrl: 'assets/components/document/document_default/document_default.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n },\r\n replace: true\r\n };\r\n }\r\n\r\n function Controller($log, $scope, DocsHelper, ConfigService, SignalsService) {\r\n 'ngInject';\r\n var vm = this;\r\n vm.postSignal = SignalsService.postClickSignal;\r\n\r\n activate();\r\n\r\n ///////////\r\n\r\n function activate() {\r\n vm.doc = processDocument(DocsHelper.concatMultivaluedFields(vm.doc));\r\n }\r\n\r\n /**\r\n * Processes a document prepares fields from the config for display.\r\n * @param {object} doc A single document record\r\n * @return {object} The document record with processed properties.\r\n */\r\n function processDocument(doc) {\r\n\r\n // Populate the additional fields to display\r\n\r\n // Get fields from config service.\r\n var fieldsToDisplay = ConfigService.getFieldsToDisplay();\r\n // Parse any wildcards in the config.\r\n fieldsToDisplay = DocsHelper.parseWildcards(fieldsToDisplay, doc);\r\n // turn fields to display into a list of params.\r\n doc.fieldsToDisplay = DocsHelper.populateFieldLabels(\r\n DocsHelper.selectFields(doc, fieldsToDisplay),\r\n ConfigService.getFieldLabels()\r\n );\r\n\r\n doc.lw_head = getField('head', doc) ?\r\n getField('head', doc) : 'Title Field Not Found';\r\n\r\n doc.lw_subhead = getField('subhead', doc);\r\n\r\n doc.lw_description = getField('description', doc);\r\n\r\n doc.lw_image = getField('image', doc);\r\n\r\n doc.lw_url = getField('head_url', doc);\r\n\r\n return doc;\r\n }\r\n\r\n /**\r\n * Given a field type get the actual field value.\r\n * @param {String} fieldType The Field type.\r\n * @param {object} doc The document object\r\n * @return {String|null} The field value.\r\n */\r\n function getField(fieldType, doc) {\r\n var fieldName = ConfigService.getFields.get(fieldType);\r\n if (doc.hasOwnProperty(fieldName)) {\r\n return doc[fieldName];\r\n }\r\n return null;\r\n }\r\n\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_EXAMPLE', ['lucidworksView.services.signals'])\r\n .directive('documentExample', documentExample);\r\n\r\n function documentExample() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_EXAMPLE/document_EXAMPLE.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n function Controller(SignalsService) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n }\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_file', ['lucidworksView.services.signals', 'angular-humanize'])\r\n .directive('documentFile', documentFile);\r\n\r\n function documentFile() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_file/document_file.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n function Controller(SignalsService, $filter) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n vm.doc = processDocument(vm.doc);\r\n }\r\n\r\n function processDocument(doc) {\r\n doc.length_lFormatted = $filter('humanizeFilesize')(doc.length_l);\r\n doc.lastModified_dtFormatted = $filter('date')(doc.lastModified_dt);\r\n return doc;\r\n }\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_slack', ['lucidworksView.services.signals'])\r\n .directive('documentSlack', documentSlack);\r\n\r\n function documentSlack() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_slack/document_slack.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n\r\n function Controller(SignalsService, $filter) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n vm.doc = processDocument(vm.doc);\r\n }\r\n\r\n function processDocument(doc) {\r\n doc.timestamp_tdtFormatted = $filter('date')(vm.doc.timestamp_tdt, 'M/d/yy h:mm:ss a');\r\n // For multivalued fields\r\n doc.text = _.isArray(doc.text)?_.join(doc.text,' '):doc.text;\r\n return doc;\r\n }\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_jira', ['lucidworksView.services.signals'])\r\n .directive('documentJira', documentJira);\r\n\r\n function documentJira() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_jira/document_jira.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n\r\n function Controller(SignalsService, $filter) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n vm.doc = processDocument(vm.doc);\r\n }\r\n\r\n function processDocument(doc) {\r\n doc.lastModified_dtFormatted = $filter('date')(doc.lastModified_dt);\r\n return doc;\r\n }\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_twitter', ['lucidworksView.services.signals'])\r\n .directive('documentTwitter', documentTwitter);\r\n\r\n function documentTwitter() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_twitter/document_twitter.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n function Controller(SignalsService, $log, $filter) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n vm.doc = processDocument(vm.doc);\r\n }\r\n\r\n function processDocument(doc) {\r\n doc.createdAtFormatted = $filter('date')(doc.createdAt[0]);\r\n return doc;\r\n }\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_web', ['lucidworksView.services.signals'])\r\n .directive('documentWeb', documentWeb);\r\n\r\n function documentWeb() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_web/document_web.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n function Controller(SignalsService) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n }\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_jira')\r\n .directive('jiraIssue', jiraIssue);\r\n\r\n function jiraIssue() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_jira/contentTypes/jiraIssue.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n\r\n function Controller(SignalsService) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n }\r\n\r\n }\r\n})();\r\n", "(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('lucidworksView.components.document_jira')\r\n .directive('jiraProject', jiraProject);\r\n\r\n function jiraProject() {\r\n 'ngInject';\r\n var directive = {\r\n restrict: 'EA',\r\n templateUrl: 'assets/components/document/document_jira/contentTypes/jiraProject.html',\r\n scope: true,\r\n controller: Controller,\r\n controllerAs: 'vm',\r\n bindToController: {\r\n doc: '=',\r\n highlight: '='\r\n }\r\n };\r\n\r\n return directive;\r\n\r\n }\r\n\r\n\r\n function Controller(SignalsService) {\r\n 'ngInject';\r\n var vm = this;\r\n\r\n activate();\r\n\r\n function activate() {\r\n vm.postSignal = SignalsService.postClickSignal;\r\n vm.doc = processDocument(vm.doc);\r\n }\r\n\r\n function processDocument(doc) {\r\n return doc;\r\n }\r\n }\r\n})();\r\n", "angular.module('lucidworksView.components', [\r\n 'lucidworksView.components.document',\r\n 'lucidworksView.components.document_file',\r\n 'lucidworksView.components.document_jira',\r\n 'lucidworksView.components.document_slack',\r\n 'lucidworksView.components.document_twitter',\r\n 'lucidworksView.components.document_web',\r\n 'lucidworksView.components.documentList',\r\n 'lucidworksView.components.facetField',\r\n 'lucidworksView.components.facetList',\r\n 'lucidworksView.components.field',\r\n 'lucidworksView.components.landingpage',\r\n 'lucidworksView.components.login',\r\n 'lucidworksView.components.paginate',\r\n 'lucidworksView.components.searchbox',\r\n 'lucidworksView.components.sort',\r\n 'lucidworksView.components.banner',\r\n 'lucidworksView.components.dragAndDropFile'\r\n]);\r\n"],
"sourceRoot": "/source/"
}