pageDecorators.recentAssetsOfActivatedTypes = function(ctx, page) { var app = require('rxt').app; var asset = require('rxt').asset; var permissions = require('rxt').permissions; var assetAPI = require('/modules/asset-api.js').api; var assets = {}; var items = []; var pcItems = []; var pcTypeDetails = []; var pcAssets = []; var assetsByType = []; var am; var type; var rxtDetails; var assetMap = {}; var bookmarkable; var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session); var tenantAssetResources; // Supporting cross tenant views ctx = tenantAppResources.context; types = app.getUIActivatedAssets(ctx.tenantId); var typeDetails; var ratingApi = require('/modules/rating-api.js').api; var q = page.assetMeta.q; var query = buildRecentAssetQuery(q); var username = ctx.username || null; var tenantId = ctx.tenantId; var canBookmark = function(type) { return permissions.hasAssetPermission(permissions.ASSET_BOOKMARK, type, tenantId, username); }; var bookmarkPerms = {}; if (query) { items = asset.advanceSearch(query, null, session, ctx.tenantId)||[]; ratingApi.addRatings(items, am, ctx.tenantId, ctx.username); assetMap = {}; var template; //Sort the results by type items.forEach(function(item){ var type = item.type; if(!assetMap[type]){ assetMap[type] = []; } bookmarkable = bookmarkPerms[type]; if (bookmarkable === undefined) { bookmarkable = (bookmarkPerms[type] = canBookmark(type)); } item.bookmarkable = bookmarkable; assetMap[type].push(item); }); //Collect the asset result set along with the rxt definition for(var key in assetMap){ template = ctx.rxtManager.getRxtTypeDetails(key); assetsByType.push({ assets:assetMap[key], rxt:template }); } } else { for (var index in types) { typeDetails = ctx.rxtManager.getRxtTypeDetails(types[index]); type = typeDetails.shortName; tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, { type: type }); bookmarkable = bookmarkPerms[type]; if(bookmarkable === undefined) { bookmarkable = (bookmarkPerms[type] = canBookmark(type)); } am = tenantAssetResources.am; if (permissionsAPI.hasAssetPermission(permissionsAPI.ASSET_LIST, type, ctx.tenantId, ctx.username)) { assets = am.recentAssets(); if (assets.length > 0) { //Add subscription details if this is not an anon context if (!ctx.isAnonContext) { addSubscriptionDetails(assets, am, ctx.session, bookmarkable); } ratingApi.addRatings(assets, am, ctx.tenantId, ctx.username); items = items.concat(assets); assetsByType.push({ assets: assets, rxt: typeDetails }); } } } } // Display only process type assets for recent assets for(var i = 0; i <items.length; i++){ if(items[i].type == "process"){ log.debug("Found Process type assets"+ i); var pcCurrentType =ctx.rxtManager.getRxtTypeDetails(items[i].type); pcTypeDetails = pcCurrentType ; pcItems.push(items[i]); } } pcAssets.push({ assets:pcItems, rxt:pcTypeDetails }); page.recentAssets = pcItems; page.recentAssetsByType = pcAssets; };
api.genericAdvanceSearch = function(options,req,res,session){ var asset = require('rxt').asset; var server = require('store').server; var userDetails = server.current(session); var assetManager = null; var domain = options.domain || carbon.server.superTenant.domain; var ratingApi = require('/modules/rating-api.js').api; var tenantId = carbon.server.tenantId({ domain: domain }); var rxtModule = require('rxt'); var rxtManager = rxtModule.core.rxtManager(tenantId); var sort = (request.getParameter("sort") || ''); var sortOrder = DEFAULT_PAGIN.sortOrder; if (sort) { var order = sort.charAt(0); if (order == '+' || order == ' ') { sortOrder = 'ASC'; sort = sort.slice(1); } else if (order == '-') { sortOrder = 'DESC'; sort = sort.slice(1); } else { sortOrder = DEFAULT_PAGIN.sortOrder; } } var sortBy = (sort || DEFAULT_PAGIN.sortBy); var count = (request.getParameter("count") || DEFAULT_PAGIN.count); var start = (request.getParameter("start") || DEFAULT_PAGIN.start); var paginationLimit = (request.getParameter("paginationLimit") || DEFAULT_PAGIN.paginationLimit); var paging = { 'start': start, 'count': count, 'sortOrder': sortOrder, 'sortBy': sortBy, 'paginationLimit': paginationLimit }; var q = (request.getParameter("q") || ''); try { if (q) { var qString = '{' + q + '}'; var query = validateQuery(qString); //query = replaceCategoryQuery(query, rxtManager, options.type); //query = replaceNameQuery(query, rxtManager, options.type); if (log.isDebugEnabled) { //Need to log this as we perform some processing on the name and //category values log.debug('processed query used for searching: ' + stringify(query)); } //Note: Advance generic searches will not support grouping as it can //be enabled/disabled per asset type var assets = asset.advanceSearch(query,paging,session,tenantId); } else { log.error('Unable to perform a bulk asset retrieval without a type been specified'); throw 'Unable to perform a bulk asset retrieval without a type been specified'; } var expansionFields = (request.getParameter('fields') || ''); if (expansionFields) { options.fields = expansionFields.split(','); options.assets = assets; result = fieldExpansion(options, req, res, session); //return; } else { result = assets; } //res = responseProcessor.buildSuccessResponse(res,200,result); } catch (e) { //res = responseProcessor.buildErrorResponse(400, "Your request is malformed"); //print(); result = null; log.error(e); } ratingApi.addRatings(result); return result; };