UNPKG

pip-webui

Version:

HTML5 UI for LOB applications

1,378 lines (1,064 loc) 222 kB
/** * @file Registration of WebUI tests * @copyright Digital Living Software Corp. 2014-2015 */ (function () { 'use strict'; var thisModule = angular.module('pipWebuiTests', [ 'pipMocked', 'pipMocked.Users', 'pipMocked.Entry', 'pipMocked.Party', 'pipMocked.Announcements', 'pipMocked.Feedbacks', 'pipMocked.Tips', 'pipMocked.Guides', 'pipMocked.ServersActivities', 'pipMocked.ImageSet', 'pipMocked.Images', 'pipMocked.Avatar', 'pipMocked.Events', 'pipMocked.Nodes', 'pipMocked.Feedbacks', 'pipGenerators', 'pipBasicGeneratorServices', 'pipGenerators.User', 'pipGenerators.PartyAccess', 'pipGenerators.Sessions', 'pipGenerators.Party', 'pipGenerators.Files', 'pipGenerators.Avatars', 'pipGenerators.Settings', 'pipGenerators.Node', 'pipGenerators.Event', 'pipGenerators.Feedback', 'pipTestCollection', 'pipTestDataSet', 'pipTestDataService', // resources 'pipMocked.ImageResources', 'PipResources.Error', 'pipImageResources' ]); thisModule.service('pipWebuiTest', ['pipMockedResource', 'MockedUsersResource', 'MockedCurrentUserResource', 'TruePathResource', 'MockedSigninResource', 'MockedSignupResource', 'MockedSignoutResource', 'MockedSignupValidateResource', 'MockedVerifyEmailResource', 'MockedRecoverPasswordResource', 'MockedResetPasswordResource', 'MockedChangePasswordResource', 'MockedUserSessionsResource', 'MockedTipsResource', 'MockedAnnouncementsResource', 'MockedFeedbacksResource', 'MockedGuidesResource', 'MockedImageSetResource', 'MockedPartyResource', 'MockedServersActivitiesResource', 'MockedAvatarResource', 'MockedImagesResource', 'MockedPartySettingsResource', 'MockedNodeResource', 'MockedEventsResource', 'MockedResource', 'pipTestDataService', 'pipBasicGeneratorServices', function (pipMockedResource, MockedUsersResource, MockedCurrentUserResource, TruePathResource, MockedSigninResource, MockedSignupResource, MockedSignoutResource, MockedSignupValidateResource, MockedVerifyEmailResource, MockedRecoverPasswordResource, MockedResetPasswordResource, MockedChangePasswordResource, MockedUserSessionsResource, MockedTipsResource, MockedAnnouncementsResource, MockedFeedbacksResource, MockedGuidesResource, MockedImageSetResource, MockedPartyResource, MockedServersActivitiesResource, MockedAvatarResource, MockedImagesResource, MockedPartySettingsResource, MockedNodeResource, MockedEventsResource, MockedResource, pipTestDataService, pipBasicGeneratorServices) { return { runFakeServer: runFakeServer }; //------------------------ function runFakeServer(serverUrl) { pipBasicGeneratorServices.serverUrl(serverUrl); MockedResource.fakeUrl = pipBasicGeneratorServices.serverUrl(); MockedResource.setDataset(pipTestDataService.getDataset()); pipMockedResource.addMocks(MockedUsersResource); pipMockedResource.addMocks(MockedCurrentUserResource); pipMockedResource.addMocks(MockedUserSessionsResource); // entry pipMockedResource.addMocks(MockedSigninResource); pipMockedResource.addMocks(MockedSignupResource); pipMockedResource.addMocks(MockedSignoutResource); pipMockedResource.addMocks(MockedSignupValidateResource); pipMockedResource.addMocks(MockedVerifyEmailResource); pipMockedResource.addMocks(MockedRecoverPasswordResource); pipMockedResource.addMocks(MockedResetPasswordResource); pipMockedResource.addMocks(MockedChangePasswordResource); // ---------------- pipMockedResource.addMocks(MockedTipsResource); pipMockedResource.addMocks(MockedAnnouncementsResource); pipMockedResource.addMocks(MockedFeedbacksResource); pipMockedResource.addMocks(MockedGuidesResource); pipMockedResource.addMocks(MockedPartyResource); pipMockedResource.addMocks(MockedPartySettingsResource); pipMockedResource.addMocks(MockedServersActivitiesResource); // files and images pipMockedResource.addMocks(MockedImageSetResource); pipMockedResource.addMocks(MockedAvatarResource); pipMockedResource.addMocks(MockedImagesResource); pipMockedResource.addMocks(MockedEventsResource); pipMockedResource.addMocks(MockedNodeResource); pipMockedResource.addMocks(TruePathResource); pipMockedResource.registerStandardResources(); }; }] ); })(); /** * @file pipTestCollection * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipTestCollection', []); // Collection of test data stored in test dataset thisModule.factory('TestCollection', ['$log', function ($log) { // Define the constructor function. return function (generator, name, size, refs) { if (!generator) { throw new Error('TestCollection: generator is required'); } this.generator = generator; this.size = size ? size : 0; this.refs = getRefs(generator, refs); this.name = getName(generator, name); this.collection = []; this.isInit = false; this.getGeneratorName = getGeneratorName; this.getSize = getSize; this.init = init; this.getAll = getAll; this.getByIndex = getByIndex; this.findById = findById; this.create = create; this.update = update; this.deleteById = deleteById; this.deleteByIndex = deleteByIndex; return this; } function getGeneratorName() { return this.generator.name; } function getSize() { return this.collection.length; } // public init(collection: any[]): void; function init(collection) { if (collection && angular.isArray(collection)) { this.collection = _.cloneDeep(collection); this.size = collection.length; this.isInit = true; return; } if (this.size === 0) { this.collection = []; return } this.collection = this.generator.newObjectList(this.size, this.refs); this.isInit = true; } // public getAll(): any[]; function getAll() { return _.cloneDeep(this.collection); } // public get(index: number): any[]; function getByIndex(index) { var result = null; if (index === undefined || index === null || index < 0 || index > this.collection.length - 1) { return result; } result = _.cloneDeep(this.collection[index]); return result; } // public findById(id: string): any; function findById(id, field) { var result = null, fieldId = field ? field : 'id'; if (id === undefined || id === null) { return result; } result = _.find(this.collection, function(item) { return item[fieldId] == id; }); return result || null; } // public create(obj: any): any; function create(obj) { var result = this.generator.initObject(obj); if (angular.isObject(result)) { this.collection.push(result); } return result; } // public update(id: string, obj: any): any; function update(id, obj, idField) { var result; if (id === undefined || id === null || !angular.isObject(obj)) { throw new Error('pipTestCollection: id parametr misseed in update function.'); } result = this.findById(id, idField); if (angular.isObject(result)) { result = _.assign(result, obj); } else { result = null; } return result; } // public delete(id: string): any; function deleteById(id) { var i, match = false; for (i = 0; i < this.collection.length; i++) { if (this.collection[i].id === id) { match = true; this.collection.splice(i, 1); break; } } return match; } // public delete(id: string): any; function deleteByIndex(index) { if (index === undefined || index === null || index < 0 || index > this.collection.length - 1) { return false; } this.collection.splice(index, 1); return true; } // ---------------------------------- function getRefsCopy(arr) { var result = {}; for (var key in arr) { result[key] = _.cloneDeep(arr[key]); } return result; } function getRefs(generator, refs) { if (refs && angular.isObject(refs)) { return getRefsCopy(refs); } else if (generator.refs && angular.isObject(generator.refs)) { return getRefsCopy(generator.refs); } else { return {}; } } function getName(generator, name) { if (name) { return name; } else { return generator.name; } } }]); })(); /** * @file pipTestDataService * @copyright Digital Living Software Corp. 2014-2016 */ /* global angular */ (function () { 'use strict'; var thisModule = angular.module('pipTestDataService', []); thisModule.factory('pipTestDataService', ['pipTestDataSet', 'pipUserDataGenerator', 'pipPartyAccessDataGenerator', 'pipSessionsDataGenerator', 'pipPartyDataGenerator', 'TestCollection', 'pipNodeDataGenerator', 'pipAvatarsDataGenerator', 'pipEventDataGenerator', 'pipSettingsDataGenerator', 'pipFeedbackDataGenerator', function(pipTestDataSet, pipUserDataGenerator, pipPartyAccessDataGenerator, pipSessionsDataGenerator, pipPartyDataGenerator, TestCollection, pipNodeDataGenerator, pipAvatarsDataGenerator, pipEventDataGenerator, pipSettingsDataGenerator, pipFeedbackDataGenerator) { // Angular service that holds singleton test dataset that is shared across all var dataSet = new pipTestDataSet(); return { getDataset: getDataset, createTestDataset: createTestDataset }; // Get singleton dataset function getDataset() { return dataSet; } // Create test dataset function createTestDataset() { var i, users, parties = [], settings =[], tcPartyAccess, tcSessions, tcUsers, tcParties, tcSettings, tcFeedback, tcNodes, tcEvents, usersRefs = new Array(), eventsRefs = new Array(); // create collection without references tcPartyAccess = new TestCollection(pipPartyAccessDataGenerator, 'PartyAccessTestCollection', 20); tcSessions = new TestCollection(pipSessionsDataGenerator, 'SessionsTestCollection', 20); // init collection tcPartyAccess.init(); tcSessions.init(); // add collection to dataset dataSet.add(tcPartyAccess); dataSet.add(tcSessions); // form references for users collection usersRefs['PartyAccess'] = tcPartyAccess.getAll(); usersRefs['Sessions'] = tcSessions.getAll(); // create users collection tcUsers = new TestCollection(pipUserDataGenerator, 'UsersTestCollection', 20, usersRefs); dataSet.add(tcUsers); // create feedback collection tcFeedback = new TestCollection(pipFeedbackDataGenerator, 'FeedbacksTestCollection', 20); dataSet.add(tcFeedback); // create collection without references tcNodes = new TestCollection(pipNodeDataGenerator, 'NodesTestCollection', 20); // init collection tcNodes.init(); // add collection to dataset dataSet.add(tcNodes); // form references for users collection eventsRefs['Nodes'] = _.cloneDeep(tcNodes.getAll()); // create events collection tcEvents = new TestCollection(pipEventDataGenerator, 'EventsTestCollection', 100, eventsRefs); dataSet.add(tcEvents); // init collection dataSet.init(); tcUsers = dataSet.get('UsersTestCollection'); // create default user name tcUsers.create({name: 'Sample User', email: 'test@sample.net', id: 'q1w2e3r4t5y6u7i8o9p0a1s2', theme: 'navy'}); users = tcUsers.getAll(); // generate party and settings for each user for (i = 0; i < users.length; i ++) { var party = pipPartyDataGenerator.initObject({ name: users[i].name, email: users[i].email, id: users[i].id, updated: users[i].updated, created: users[i].created }); parties.push(party); var setting = { party_id: party.id, creator_id: party.id }; settings.push(setting); } tcParties = new TestCollection(pipPartyDataGenerator, 'PartiesTestCollection', parties.length); tcParties.init(parties); dataSet.add(tcParties); tcSettings = new TestCollection(pipSettingsDataGenerator, 'SettingsTestCollection', settings.length); tcSettings.init(settings); dataSet.add(tcSettings); var sampleAvatar = 'http://www.flooringvillage.co.uk/ekmps/shops/flooringvillage/images/request-a-sample--547-p.jpg'; var tcAvatars = new TestCollection(pipAvatarsDataGenerator, 'AvatarsTestCollection', 1); var avatars = []; avatars.push(pipAvatarsDataGenerator.initObject({ name: 'request-a-sample--547-p.jpg', url: sampleAvatar })); tcAvatars.init(avatars); return dataSet; } }] ); })(); /** * @file pipTestDataSet * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipTestDataSet', []); // Test dataset, that can be used to hold state of rest api thisModule.factory('pipTestDataSet', ['$log', function ($log) { // Define the constructor function. return function () { this.currentUser = null; this.currentParty = null; this.dataSet = {}; this.init = init; this.add = add; this.get = get; this.getCurrentUser = getCurrentUser; this.setCurrentUser = setCurrentUser; this.clearCurrentUser = clearCurrentUser; this.setCurrentParty = setCurrentParty; this.getCurrentParty = getCurrentParty; return this; } // Initializes all registered collectons function init() { var i; for (i in this.dataSet) { if (this.dataSet[i] && this.dataSet[i].isInit === false) { this.dataSet[i].init(); } } } // Registers a new collection function add(collection) { var name; if (collection && angular.isObject(collection) && collection.name) { name = collection.name; this.dataSet[name] = _.cloneDeep(collection); } else { throw new Error('pipTestDataSet: collection is required'); } } // Gets registered collection by its name function get(name) { if (name && angular.isString(name)) { return this.dataSet[name]; } else { throw new Error('pipTestDataSet: name must be a string'); } } // --------------------------- function setCurrentUser(user) { if (user && angular.isObject(user) && user.id) { this.currentUser = _.cloneDeep(user); } else { throw new Error('pipTestDataSet: currentUser must be a object'); } } function getCurrentUser() { return this.currentUser; } function clearCurrentUser() { this.currentUser = null; } function setCurrentParty(party) { if (party && angular.isObject(party) && party.id) { this.currentParty = _.cloneDeep(party); } else { throw new Error('pipTestDataSet: currentParty must be a object'); } } function getCurrentParty() { return this.currentParty; } }]); })(); /** * @file pipAvatarsDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Avatars', []); thisModule.factory('pipAvatarsDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', 'pipImageResources', '$log', function (pipDataGenerator, pipBasicGeneratorServices, pipImageResources, $log) { var child = new pipDataGenerator('Avatars', []); child.defaultContentType = 'image/jpeg'; child.generateObj = function generateObj() { var image = pipImageResources.getImage(), imageName = pipBasicGeneratorServices.getFileName(image.link), imageExt = pipBasicGeneratorServices.getFileExt(imageName), imageContentType = pipBasicGeneratorServices.getContentType(imageExt), obj = { id: pipBasicGeneratorServices.getObjectId(), name: imageName, content_type: imageContentType, length: chance.integer({min: 10000, max: 1000000}), creator_id: pipBasicGeneratorServices.getObjectId(), created: chance.date({year: 2015}).toJSON(), refs: [ ], url: image.link }; return obj; } return child; }]); })(); /** * @file pipDataGenerators * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators', []); thisModule.factory('pipDataGenerator', ['$log', function ($log) { var dataGenerator = function(name, refs) { // Collection name this.name = name; // List of references collection this.refs = refs; // Initializes object with default fields this.initObject = function (obj) { var result = this.newObject(); if (obj) { result = _.assign(result, obj); } return result; } // Create a new random object this.newObject = function (refs) { var objRefs = refs ? refs : this.refs, result = this.generateObj(objRefs); return result; } this.newObjectList = function (count, refs) { var i, obj, result = []; if (count > 0) { for (i = 0; i < count; i++) { obj = this.newObject(refs); result.push(obj); } } return result; } this.initObjectList = function (obj) { var i, newObj, result = []; if (count > 0) { for (i = 0; i < count; i++) { newObj = this.newObject(); result.push(_.assign(newObj, obj)); } } return result; } this.updateObject = function (obj, refs) { var result = this.newObject(refs); if (obj) { result = _.assign(result, obj); return result; } else { return null } } this.generateObj = function generateObj(refs) { return {}; } } return dataGenerator; }]); })(); /** * @file pipEventDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Event', []); thisModule.factory('pipEventDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', 'pipNodeDataGenerator', '$log', function (pipDataGenerator, pipBasicGeneratorServices, pipNodeDataGenerator, $log) { var refsDefault = {}, child, eventIcon = { 'danger': 'warn-circle', 'info': 'info-circle-outline', 'warn': 'warn-triangle' }; refsDefault['Nodes'] = pipNodeDataGenerator.newObjectList(10); child = new pipDataGenerator('Events', refsDefault); child.generateObj = function generateObj(refs) { var temperature = chance.integer({min: -40, max: 50}), radiation_level = chance.bool({likelihood: 70}) ? chance.floating({fixed: 2, min: 0, max: 5}) : chance.floating({fixed: 2, min: 0, max: 22}), node, nodes, event; if (refs && angular.isObject(refs)) { nodes = refs['Nodes'] || []; } else { nodes = refsDefault['Nodes'] || []; } node = getOne(nodes); event = { id: pipBasicGeneratorServices.getObjectId(), node_id: getNodeId(node), node_name: getNodeName(node), description: getDesciption(temperature, radiation_level), temperature: temperature, rad_level: radiation_level, icon: getIcon(temperature, radiation_level) }; return event; } return child; function getNodeId(node) { var id; if (node && node.id) { id = node.id; } else { id = pipBasicGeneratorServices.getObjectId(); } return id; }; function getNodeName(node) { var name; if (node && node.name) { name = node.name; } else { name = chance.name(); } return name; }; function getIcon(temperature, radiation_level) { var type = pipNodeDataGenerator.getNodeType(temperature, radiation_level); return eventIcon[type] || eventIcon['info']; }; function getDesciption(temperature, radiation_level) { var radiation_hi = 5, radiation_middle = 2, temperature_hi = 45, temperature_middle = 36, temperature_low = -25, temperature_lower = -15, resultTemp, resultRad; if (temperature > temperature_hi) { resultTemp = pipBasicGeneratorServices.getOne(['Thermal shock.', 'Eruption.']); } else if (temperature > temperature_middle) { resultTemp = pipBasicGeneratorServices.getOne(['Temperature change.', 'Temperature increase.', 'Temperature decrease.']); } else if (temperature < temperature_low) { resultTemp = pipBasicGeneratorServices.getOne(['Temperature dropped significantly.', 'Thermal shock.']); } else if (temperature < temperature_lower) { resultTemp = pipBasicGeneratorServices.getOne(['Temperature change.', 'Temperature increase.', 'Temperature decrease.']); } else { resultTemp = pipBasicGeneratorServices.getOne(['Temperature change.', 'Temperature increase.', 'Temperature decrease.']); } if (radiation_level > radiation_hi) { resultRad = pipBasicGeneratorServices.getOne(['Radioactive emission.', 'Reactor explosion.', 'Nuclear tests.']); } else if (radiation_level > radiation_middle) { resultRad = pipBasicGeneratorServices.getOne(['Radiation level increase.', 'Radiation level decrease.', 'Radioactive emission.']); } else { resultRad = pipBasicGeneratorServices.getOne(['Radiation level decrease.', 'Radiation levels normal.']); } return resultTemp + ' ' + resultRad; }; function getOne(collection) { var index, count; count = collection.length; index = _.random(count - 1); return _.cloneDeep(collection[index]); } }]); })(); /** * @file pipFeedbackDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Feedback', []); thisModule.factory('pipFeedbackDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', 'pipUserDataGenerator', '$log', 'pipFilesDataGenerator', function (pipDataGenerator, pipBasicGeneratorServices, pipUserDataGenerator, $log, pipFilesDataGenerator) { var refsDefault = {}, child; refsDefault['Users'] = pipUserDataGenerator.newObjectList(10); refsDefault['Files'] = pipFilesDataGenerator.newObjectList(30); refsDefault['Pictures'] = pipFilesDataGenerator.newObjectList(30); child = new pipDataGenerator('Feedback', refsDefault); child.generateObj = function generateObj(refs) { var feedback, files, pictures, users, user, date = chance.timestamp(); if (refs && angular.isObject(refs)) { users = refs['Users'] || []; files = refs['Files'] || []; pictures = refs['Pictures'] || []; } else { users = refsDefault['Users'] || []; files = refsDefault['Files'] || []; pictures = refsDefault['Pictures'] || []; } user = getOne(users); if (!user || !user.id) { user = pipUserDataGenerator.newObject(); } feedback = { id: pipBasicGeneratorServices.getObjectId(), sender_id: user.id, sender_name: user.name, sender_email: user.email, type: pipBasicGeneratorServices.getOne(['support', 'feedback', 'copyright', 'business', 'advertising']), title: chance.sentence(), content: chance.paragraph(), docs: getDocs(files), pic_ids: getPictures(pictures), sent: new Date(date).toJSON() }; return feedback; } return child; function getOne(collection) { var index, count; count = collection.length; index = _.random(count - 1); return _.cloneDeep(collection[index]); } function getDocs(collection) { var docs, result = [], i; docs = pipBasicGeneratorServices.getMany(collection, chance.integer({min: 0, max: 5})); for (i = 0; i < docs.length; i++) { result.push({ file_id: docs[i].id, file_name: docs[i].name }); } return result; } function getPictures(collection) { var pics, result = [], i; pics = pipBasicGeneratorServices.getMany(collection, chance.integer({min: 0, max: 5})); for (i = 0; i < pics.length; i++) { result.push(pics[i].id); } return result; } }]); })(); /** * @file pipFilesDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Files', []); thisModule.factory('pipFilesDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', 'pipImageResources', '$log', function (pipDataGenerator, pipBasicGeneratorServices, pipImageResources, $log) { var child = new pipDataGenerator('Files', []); child.generateObj = function generateObj() { var image = pipImageResources.getImage(), imageName = pipBasicGeneratorServices.getFileName(image.link), imageExt = pipBasicGeneratorServices.getFileExt(imageName), imageContentType = pipBasicGeneratorServices.getContentType(imageExt), creatorId = pipBasicGeneratorServices.getObjectId(), obj = { id: pipBasicGeneratorServices.getObjectId(), name: imageName, content_type: imageContentType, length: chance.integer({min: 10000, max: 1000000}), party_id: creatorId, creator_id: creatorId, created: chance.date({year: 2015}).toJSON(), refs: [], url: image.link }; return obj; } return child; }]); })(); /** * @file Service provide utils * @copyright Digital Living Software Corp. 2014-2015 */ (function () { 'use strict'; var thisModule = angular.module('pipBasicGeneratorServices', []); thisModule.service('pipBasicGeneratorServices', function () { var ABCD = 'abcdefghijklmnopqrstuvwxyz', ABCD_CAPITALIZE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', DIGIT = '0123456789', SIGN = ' .,;:-!?', CONTENT_TYPES = { 'jpg': 'image/jpg', 'jpeg': 'image/jpeg', 'gif': 'image/gif', 'png': 'image/png' }, SERVER_URL = 'http://alpha.pipservices.net'; return { ABCD: ABCD, ABCD_CAPITALIZE: ABCD_CAPITALIZE, DIGIT: DIGIT, SIGN: SIGN, getObjectId: getObjectId, getOneWord: getOneWord, getPassword: getPassword, getEmail: getEmail, serverUrl:serverUrl, getName: getName, getOne: getOne, getMany: getMany, getFileName: getFileName, getFileExt: getFileExt, getContentType: getContentType }; // Returns random ID function getObjectId(n, allowedChars) { var poolObjectId = ABCD + DIGIT, length = n || 24, pool = allowedChars || poolObjectId; return chance.string({length: length, pool: pool}); } function getEmail() { return chance.email(); } function getPassword() { return getOneWord(8); } // Returns random one from the passed asset function getOne(arr) { return _.sample(arr); } // Returns random one from the passed asset function getMany(arr, count) { var number = count ? count : Math.floor(Math.random() * arr.length); return _.sampleSize(arr, number); } function serverUrl(serverUrl) { if (serverUrl) { SERVER_URL = serverUrl; } return SERVER_URL; } // Returns random word function getOneWord(n) { var length = n && n > 0 ? Math.floor(Math.random() * n) : null, poolWord = ABCD + ABCD_CAPITALIZE; return chance.word({length: length, pool: poolWord}); } function getName() { var name = chance.first() + ' ' + chance.name(); return name; } function getFileName(url) { var name = url.slice(url.lastIndexOf('/') + 1, url.length).split('?')[0]; return name; } function getFileExt(name) { var ext = name.slice(name.lastIndexOf('.') + 1, name.length).split('?')[0]; return ext; } function getContentType(fileExt) { var default_CT = 'image/jpg', result; result = CONTENT_TYPES[fileExt]; if (!result) { result = default_CT; } return result; } }); })(); /** * @file pipNodeDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Node', []); thisModule.factory('pipNodeDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', '$log', function (pipDataGenerator, pipBasicGeneratorServices, $log) { var child = new pipDataGenerator('Nodes', []), pointCollors = { 'danger': '#EF5350', 'info': '#8BC34A', 'warn': '#FFD54F' }; child.getNodeType = getNodeType; child.generateObj = function generateObj() { var temperature = chance.integer({min: -40, max: 50}), radiation_level = chance.bool({likelihood: 70}) ? chance.floating({fixed: 2, min: 0, max: 5}) : chance.floating({fixed: 2, min: 0, max: 22}), type = getNodeType(temperature, radiation_level), node = { id: pipBasicGeneratorServices.getObjectId(), name: chance.name(), temperature: temperature, radiation_level: radiation_level, type: type, location_points: { type: 'Point', coordinates: [ chance.floating({min: 32, max: 42}), chance.floating({min: -121, max: -70}) ], fill: getNodeColor(type) }, }; return node; } return child; function getNodeColor(type) { return pointCollors[type]; } function getNodeType(temperature, radiation_level) { var hi = 10, low = 4, level_denger = 8, level_warn = 4, radiation_hi = 5, radiation_middle = 2, temperature_hi = 45, temperature_middle = 36, temperature_low = -25, temperature_lower = -15, level = 0; if (temperature > temperature_hi || temperature < temperature_low) { level += hi; } else if (temperature > temperature_middle || temperature < temperature_lower) { level += low; } if (radiation_level > radiation_hi) { level += hi; } else if (radiation_level > radiation_middle) { level += low; } if (level >= level_denger) { return 'danger'; } else if (level >= level_warn) { return 'warn'; } else { return 'info'; } }; }]); })(); /** * @file pipPartyAccessDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.PartyAccess', []); thisModule.factory('pipPartyAccessDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', '$log', function (pipDataGenerator, pipBasicGeneratorServices, $log) { var child = new pipDataGenerator('PartyAccess', []); child.isContributorChance = 30; child.isManagerChance = 30; child.defaultShareLevel = 0; child.defaultType = 'partner'; child.generateObj = function generateObj() { var isContributor = chance.bool({likelihood: child.isContributorChance}), obj = { share_level: child.defaultShareLevel, type: child.defaultType, party_name: chance.first() + ' ' + chance.name(), party_id: pipBasicGeneratorServices.getObjectId(), contributor: chance.bool({likelihood: child.isContributorChance}), manager: isContributor ? chance.bool({likelihood: child.isManagerChance}) : false, id: pipBasicGeneratorServices.getObjectId() }; return obj; } return child; }]); })(); /** * @file pipPartyDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Party', []); thisModule.factory('pipPartyDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', '$log', function (pipDataGenerator, pipBasicGeneratorServices, $log) { var child = new pipDataGenerator('Parties', []); child.defaultType = 'person'; child.defaultJoin = 'approve'; child.generateObj = function generateObj() { var date1 = chance.timestamp(), date2 = chance.timestamp(), party = { name: chance.first() + ' ' + chance.name(), email: chance.email(), type: child.defaultType, gender: chance.gender().toLowerCase(), loc_name: chance.address(), loc_pos: { type: 'Point', coordinates: [ chance.floating({min: 32, max: 40}), chance.floating({min: -110, max: -90}) ] }, join: child.defaultJoin, updated: date1 > date2 ? new Date(date1).toJSON() : new Date(date2).toJSON(), created: date1 > date2 ? new Date(date2).toJSON() : new Date(date1).toJSON(), id: pipBasicGeneratorServices.getObjectId() }; return party; } return child; }]); })(); /** * @file pipSessionsDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Sessions', []); thisModule.factory('pipSessionsDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', '$log', function (pipDataGenerator, pipBasicGeneratorServices, $log) { var child = new pipDataGenerator('Sessions', []); child.generateObj = function generateObj() { var date = new Date(chance.timestamp()), session = { address: chance.ip(), client: pipBasicGeneratorServices.getOne(['chrome', 'mozilla', 'explorer']), platform: pipBasicGeneratorServices.getOne(['windows 8', 'windows 7', 'linux']), last_req: date.toJSON(), opened: date.toJSON(), id: pipBasicGeneratorServices.getObjectId() }; return session; } return child; }]); })(); /** * @file pipSettingsDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.Settings', []); thisModule.factory('pipSettingsDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', '$log', function (pipDataGenerator, pipBasicGeneratorServices, $log) { var child = new pipDataGenerator('Settings', []); child.generateObj = function generateObj() { var id = pipBasicGeneratorServices.getObjectId(), date = chance.timestamp(), setting = { settings: { party_id: id, creator_id: id, goals: {}, areas: {}, intro: {} }, updated: new Date(date).toJSON() }; return setting; } return child; }]); })(); /** * @file pipUserDataGenerator * @copyright Digital Living Software Corp. 2014-2016 */ (function () { 'use strict'; var thisModule = angular.module('pipGenerators.User', []); thisModule.factory('pipUserDataGenerator', ['pipDataGenerator', 'pipBasicGeneratorServices', '$log', 'pipPartyAccessDataGenerator', 'pipSessionsDataGenerator', function (pipDataGenerator, pipBasicGeneratorServices, $log, pipPartyAccessDataGenerator, pipSessionsDataGenerator) { var refsDefault = {}; refsDefault['PartyAccess'] = pipPartyAccessDataGenerator.newObjectList(10); refsDefault['Sessions'] = pipSessionsDataGenerator.newObjectList(10); var child = new pipDataGenerator('User', refsDefault); child.generateObj = function generateObj(refs) { var date1 = chance.timestamp(), date2 = chance.timestamp(), nowDate = new Date(), user, PartyAccess = [], Sessions = [], currentSession = pipSessionsDataGenerator.initObject({ last_req: nowDate.toJSON(), opened: nowDate.toJSON(), }); if (refs && angular.isObject(refs)) { PartyAccess = refs['PartyAccess'] || []; Sessions = refs['Sessions'] || []; } else { PartyAccess = refsDefault['PartyAccess'] || []; Sessions = refsDefault['Sessions'] || []; } user = { pwd_last_fail: null, pwd_fail_count: 0, name: pipBasicGeneratorServices.getName(), email: chance.email(), language: pipBasicGeneratorServices.getOne(['en', 'ru']), paid: chance.bool({likelihood: 30}), admin: false, party_access: pipBasicGeneratorServices.getMany(PartyAccess), sessions: pipBasicGeneratorServices.getMany(Sessions), signin: date1 > date2 ? new Date(date1).toJSON() : new Date(date2).toJSON(), signup: date1 > date2 ? new Date(date2).toJSON() : new Date(date1).toJSON(), active: true, lock: false, email_ver: false, id: pipBasicGeneratorServices.getObjectId(), last_session_id: currentSession.id, theme: pipBasicGeneratorServices.getOne(['navy', 'blue', 'amber', 'grey', 'orange']), }; user.sessions.push(currentSession); return user; } return child; }]); })(); /** * @file Image resources for samples * @copyright Digital Living Software Corp. 2014-2016 */ /* global angular */ (function () { 'use strict'; var thisModule = angular.module('pipMocked.ImageResources', ['pipImageResources']); thisModule.config(['pipImageResourcesProvider', function (pipImageResourcesProvider) { // Set translation strings for the module pipImageResourcesProvider.setImages([ { "title": "Cat Rejected By 5 Previous Owners Finally Finds A Human That Loves ...", "link": "http://static.boredpanda.com/blog/wp-content/uploads/2016/04/beautiful-fluffy-cat-british-longhair-thumb.jpg", "thumbnail": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRnJBZq_2tq5ZQY5q_ffHasWSjp84ULC0DqoTVd0F4sWDJgrEoLcDqXqw" }, { "title": "Your Cat | Cat Advice", "link": "http://www.yourcat.co.uk/images/catimages/module_graphics/cat_health.jpg", "thumbnail": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQfLMZenYeTxvvX3e-LnvmKGDizm1TyscgCUJty6jAUCsfuGE5tuRYVDQ" }, { "title": "Cat Nutrition Tips | ASPCA", "link": "http://www.aspca.org/sites/default/files/cat-care_cat-nutrition-tips_overweight_body4_left.jpg", "thumbnail": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSAW7vaQfr_iluqnX3DQYbZ3NrdCLjiMDuva3FCjYKTBxzcY2GcKIH67c4W" }, { "title": "Cat - Wikipedia, the free encyclopedia", "link": "https://upload.wikimedia.org/wikipedia/commons/7/75/Cat_eating_a_rabbit.jpeg", "thumbnail": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSK3sbzKkaY5NAFGyO6xD3mHHpdaJ_I2TB-AUUZ6vt8oQEZHcsv_qfIvmnr" }, {