diff --git a/.DS_Store b/.DS_Store index c61c9d3..fd81e22 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/app.js b/app.js index 899d480..1c2fce9 100755 --- a/app.js +++ b/app.js @@ -13,7 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. This code is written by Prateek Reddy Yammanuru, Shiva Manognya Kandikuppa, Uday Kumar Mydam, Nirup TNL, Sandeep Reddy G, Deepak Kumar - and updated by Ashish Gupta, Tarun Mohandas, Suriya Prakash, Srinivasa Burli, Jishnu Surendran and Bhairavi Balakrishnan*/ + and updated by Ashish Gupta, Tarun Mohandas, Suriya Prakash, Srinivasa Burli, Jishnu Surendran and Bhairavi Balakrishnan, + enhanced by wave 4 team - Baskaran,Neel,Pallabee,Rahil,Shefali*/ //var mongoose = require('./mongoose'); //var db = mongoose(); @@ -66,8 +67,6 @@ var dimensionRouter = require('./routes/defineData/dimensions'); var measuresRouter = require('./routes/defineData/measures'); var namespaceRouter = require('./routes/defineData/logdata'); var expressions=require('./routes/realTimeLogs/queryBuilder/expressions.js') -// wave 4 code starts here -//require('./database'); var saveQuery = require('./routes/queryBuilder/saveQuery'); // wave 4 code ends here diff --git a/bin/www b/bin/www index e2426ea..21e0a58 100755 --- a/bin/www +++ b/bin/www @@ -19,7 +19,7 @@ var app = require('../app'); var debug = require('debug')('LogAggregatorExpress:server'); var http = require('http'); -var port = normalizePort(process.env.PORT || '8686') +var port = normalizePort(process.env.PORT || '8585') app.set('port', port); var server = http.createServer(app); diff --git a/components/RTdatamapper/RTdatamapper.js b/components/RTdatamapper/RTdatamapper.js index 0a2a5e4..0f810f7 100644 --- a/components/RTdatamapper/RTdatamapper.js +++ b/components/RTdatamapper/RTdatamapper.js @@ -4,55 +4,68 @@ var WebSocketClient = require('websocket').client; var WebSocketServer = require('ws').Server; // var wss = new WebSocketServer({port: 8484}); var WebSocket1 = new WebSocketClient(); +var sift = require('sift'); var wss = new WebSocketServer({ port: 5050 }); var serverWs; wss.on('connection', function(ws) { console.log('CONNECTED'); - ws.send('Connected'); + // ws.send('Connected'); serverWs = ws; - //ws.setMaxListeners(ws.getMaxListeners() + 1); }); - -module.exports = function(namespaceId, measures) { - console.log("inside component", measures); - - WebSocket1.on('connect', function(connection) { - console.log("Connected..Waiting for some message"); - var streamData = {}; - _('message', connection).map(function(msg) { +var measures = []; +var source; +// var forwardPort; +module.exports = function(namespaceId,Namespace) { + Namespace.findNamespace(namespaceId, function(err, namespace) { + if (namespace != null) { + // console.log("routes",namespace.dimensions); + // res.send(namespace.dimensions); + measures = []; + measures = namespace.measures; + source = namespace.source; + //console.log(measures); + console.log("called --------------------------------------------------------------------------------------------------------------"); + } + }); +}; +console.log("inside component", measures); +WebSocket1.on('connect', function(connection) { + console.log("Connected..Waiting for some message"); + streamData = {}; + _('message', connection).map(function(msg) { + var sourceData = JSON.parse(msg.utf8Data)[0]; + if (source === sourceData) { streamData = JSON.parse(msg.utf8Data)[2]; - var keys = Object.keys(streamData); //array of keys in the streaming data - for (var k = 0; k < measures.length; k++) { - for (var i = 0; i < keys.length; i++) { - if (keys[i] === measures[k].eventField) { - var keyValue = keys[i]; - if (measures[k].measureType === "radioField") { - var displayValue = measures[k].displayName; - streamData[displayValue] = true; - } else { - if (streamData[keyValue] === measures[k].eventValue) { - var displayValue = measures[k].displayName; - streamData[displayValue] = true; - } else { - var displayValue = measures[k].displayName; - streamData[displayValue] = false; - } - } - } + console.log(streamData); + // var keys = Object.keys(streamData); //array of keys in the streaming data + var condition; + var sifter; + for (var k = 0; k < measures.length; k++) + { + var displayValue=measures[k].displayName; + // streamdata, keys + if(measures[k].measureType === "fieldMeasure") { + condition = {}; + + condition[measures[k].eventField] = {$exists: true}; + sifter = sift(condition); + streamData[displayValue] = sifter(streamData) ? streamData[measures[k].eventField] : 0 + } else { + condition = {}; + condition[measures[k].eventField] = measures[k].eventValue; + sifter = sift(condition); + streamData[displayValue] = sifter(streamData) ? 1 : 0; } } if (serverWs) { serverWs.send(JSON.stringify(streamData)); } - console.log(streamData); - }).done(function() { - console.log('Done'); - }); + } + // console.log(streamData); + }).done(function() { + console.log('Done'); }); - WebSocket1.connect('ws://172.23.238.253:7070'); - - // function msg - /* ending of program*/ -} +}); +WebSocket1.connect('ws://172.23.238.253:7070'); diff --git a/components/aggregator/avg-aggregator.js b/components/aggregator/avg-aggregator.js index ee6c0a4..45cc0c2 100644 --- a/components/aggregator/avg-aggregator.js +++ b/components/aggregator/avg-aggregator.js @@ -3,9 +3,11 @@ module.exports=function (arr){ var i=0; var sum=0; var avg=0; + for(i=0;i>> '+variable); + // } + stream.end(function() { + console.log('after stream destroyed'); + bootstrapStream(); + }); + console.log('after stream destroyed'); + } +else{ + WebSocket1.on('connect', function(connection) { + isClientConnected = true; + console.log(" Connected..Waiting for some message inQuery"); + var streamData = {}; + connection.on('close', function() { + console.log('connection closed ***'); + }); + con=connection; + bootstrapStream(); +// connection.setMaxListeners(connection.getMaxListeners() + 1); + }); + WebSocket1.connect('ws://localhost:5050'); + } } diff --git a/components/queryexecutor/query-executor.js b/components/queryexecutor/query-executor.js index 81fe07b..6012f51 100644 --- a/components/queryexecutor/query-executor.js +++ b/components/queryexecutor/query-executor.js @@ -1,36 +1,70 @@ -var sift = require('sift'); -var _ = require('highland'); -var rollingCount=require('../rollingCount/index'); -var QueryExecutor = function(query) { + var sift = require('sift'); + var _ = require('highland'); + var rollingCount=require('../rollingCount/AccumulateOverCount.js'); + var sum = require('../aggregator/sum-aggregator'); + var count = require('../aggregator/count-aggregator'); + var average = require('../aggregator/avg-aggregator'); + var min = require('../aggregator/min-aggregator'); + var max = require('../aggregator/max-aggregator'); + var rollingTime=require('../rollingTime/time-accumulator.js') + + function getAggregator(aggregator) { + + switch (aggregator) { + case 'average': + return average; + break; + case 'min': + return min; + break; + case 'max': + return max; + break; + case 'average': + return average; + break; + case 'count': + return count; + break; + case 'sum': + return sum; + break; + default: + + } + } + + var QueryExecutor = function(query) { var self = this; self.query = query; - var RC=new Array(); - var RT=new Array(); - self.getPipeline = function() { - return self.createPipeline(self.query); + var RC=new Array(); + var RT=new Array(); + + if(query.eval.val1.rolling.over.time){ + RT.push(new rollingTime(query.eval.val1.rolling.over.time,getAggregator(query.eval.val1.rolling.evaluate))); //rollingTime not available + } + else { + RC.push(new rollingCount(query.eval.val1.rolling.over.count,getAggregator(query.eval.val1.rolling.evaluate)));//assume every computation is either rollingTime or rollingCount + } + if(query.eval.val2.rolling.over.count){ + RC.push(new rollingCount(query.eval.val2.rolling.over.count,getAggregator(query.eval.val2.rolling.evaluate))); + } + else { + RT.push(new rollingTime(query.eval.val2.rolling.over.time,getAggregator(query.eval.val2.rolling.evaluate))); //assume every computation is either rollingTime or rollingCount } + self.getPipeline = function() { + return self.createPipeline(self.query); + } self.createPipeline = function(query) { + // console.log("$$$$$$$$$$4 "+JSON.stringify(query)); var pipeline = []; - if(query.hasOwnProperty('from') && query.from.hasOwnProperty('where')) { - var sifter = sift(query.from.where); - pipeline.push(_.filter(sifter)); + var sifter = sift(query.from.where); + pipeline.push(_.filter(sifter)); } pipeline.push(_.map(function(obj) { - // console.log('in query exec '); - if(query.eval.val1.rolling.over.time){ - RT.push(new rollingTime(query.eval.val1.rolling.over.time)); //rollingTime not available - } - else { - RC.push(new rollingCount(query.eval.val1.rolling.over.count));//assume every computation is either rollingTime or rollingCount - } - if(query.eval.val2.rolling.over.count){ - RC.push(new rollingCount(query.eval.val1.rolling.over.count)); - } - else { - RT.push(new rollingTime(query.eval.val1.rolling.over.time)); //assume every computation is either rollingTime or rollingCount - } + var siftobj=new Object(); expkeys=query.select; siftobj.filter=function(value) { @@ -41,17 +75,20 @@ var QueryExecutor = function(query) { var RTCount=0, RCCount=0; if(query.eval.val1.rolling.over.time){ - temp.val1=RT[RTCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]); //rollingTime not available + temp.val1=RT[RTCount++].evaluate(value[query.eval.val1.rolling.on]); + console.log("over time is "+temp.val1 +'and actual value passed is '+value[query.eval.val1.rolling.on]); } else { - temp.val1=RC[RCCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount + temp.val1=RC[RCCount++].evaluate(value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount } - if(query.eval.val1.rolling.over.count){ - temp.val2=RC[RCCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]); //rollingTime not available + if(query.eval.val2.rolling.over.count){ + temp.val2=RC[RCCount++].evaluate(value[query.eval.val2.rolling.on]); //rollingTime not available } else { - temp.val2=RT[RTCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount + temp.val2=RT[RTCount++].evaluate(value[query.eval.val2.rolling.on]);//assume every computation is either rollingTime or rollingCount + console.log("over time is "+temp.val2 +'and actual value passed is '+value[query.eval.val2.rolling.on]); } + // console.log("in pipe############### "+JSON.stringify(query)); return temp; } var data={ @@ -64,8 +101,13 @@ var QueryExecutor = function(query) { condition=condition.replace('val2','tempdata.val2') //filter that returns true/false depending on query condition //{val1: {$gte: '$val2'}}//query.project.$highlight.$condition - tempdata.highlight=eval(condition) //highlight set to true/false depending on val1 and val2 - console.log(tempdata); + //highlight set to true/false depending on val1 and val2 + if(tempdata.val1 && tempdata.val2){ + tempdata.highlight=eval(condition) + } + else { + tempdata.highlight=false; + } return tempdata; //object with select parameters and highlight })); return _.pipeline.apply(this, pipeline); diff --git a/components/queryexecutor/query-executor.js.org b/components/queryexecutor/query-executor.js.org new file mode 100644 index 0000000..311f95f --- /dev/null +++ b/components/queryexecutor/query-executor.js.org @@ -0,0 +1,81 @@ +var sift = require('sift'); +var _ = require('highland'); +var rollingCount=require('../rollingCount/index'); +var QueryExecutor = function(query) { + var self = this; + self.query = query; + var RC=new Array(); + var RT=new Array(); + self.getPipeline = function() { + return self.createPipeline(self.query); + } + + self.createPipeline = function(query) { + var pipeline = []; + + if(query.hasOwnProperty('from') && query.from.hasOwnProperty('where')) { + var sifter = sift(query.from.where); + pipeline.push(_.filter(sifter)); + } + pipeline.push(_.map(function(obj) { + // console.log('in query exec '); + if(query.eval.val1.rolling.over.time){ + RT.push(new rollingTime(query.eval.val1.rolling.over.time)); //rollingTime not available + } + else { + RC.push(new rollingCount(query.eval.val1.rolling.over.count));//assume every computation is either rollingTime or rollingCount + } + if(query.eval.val2.rolling.over.count){ + RC.push(new rollingCount(query.eval.val1.rolling.over.count)); + } + else { + RT.push(new rollingTime(query.eval.val1.rolling.over.time)); //assume every computation is either rollingTime or rollingCount + } + var siftobj=new Object(); + expkeys=query.select; + siftobj.filter=function(value) { + var temp=new Object(); + for (var i = 0; i < expkeys.length; i++) { + temp[expkeys[i]]=value[expkeys[i]]; + } + var RTCount=0, + RCCount=0; + if(query.eval.val1.rolling.over.time){ + temp.val1=RT[RTCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]); //rollingTime not available + } + else { + temp.val1=RC[RCCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount + } + if(query.eval.val1.rolling.over.count){ + temp.val2=RC[RCCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]); //rollingTime not available + } + else { + temp.val2=RT[RTCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount + } + return temp; + } + var data={ + filter:obj + }; + var testQuery=sift(siftobj); + var tempdata=testQuery(data); //testQuery returns object with val1 and val2 set + var condition=query.project.$highlight.$condition; + condition=condition.replace('val1','tempdata.val1'); + condition=condition.replace('val2','tempdata.val2') + //filter that returns true/false depending on query condition + //{val1: {$gte: '$val2'}}//query.project.$highlight.$condition + //highlight set to true/false depending on val1 and val2 + if(tempdata.val1 && tempdata.val2){ + tempdata.highlight=eval(condition) + } + else { + tempdata.highlight=false; + } + // console.log(tempdata); + return tempdata; //object with select parameters and highlight + })); + return _.pipeline.apply(this, pipeline); + }; +}; + +exports = module.exports = QueryExecutor; diff --git a/components/queryexecutor/query-executor.js.org.latest b/components/queryexecutor/query-executor.js.org.latest new file mode 100644 index 0000000..4f7e0f0 --- /dev/null +++ b/components/queryexecutor/query-executor.js.org.latest @@ -0,0 +1,89 @@ +var sift = require('sift'); +var _ = require('highland'); +var rollingCount=require('../rollingCount/index.js'); +var sum = require('../aggregator/sum-aggregator'); +var count = require('../aggregator/count-aggregator'); +var average = require('../aggregator/avg-aggregator'); +var min = require('../aggregator/min-aggregator'); +var max = require('../aggregator/max-aggregator'); +var rollingTime=require('../rollingTime/time-accumulator.js') + + +var QueryExecutor = function(query) { +var self = this; +self.query = query; +var RC=new Array(); +var RT=new Array(); + +if(query.eval.val1.rolling.over.time){ +RT.push(new rollingTime(query.eval.val1.rolling.over.time,average)); //rollingTime not available +} +else { +RC.push(new rollingCount(query.eval.val1.rolling.over.count));//assume every computation is either rollingTime or rollingCount +} +if(query.eval.val2.rolling.over.count){ +RC.push(new rollingCount(query.eval.val1.rolling.over.count)); +} +else { +RT.push(new rollingTime(query.eval.val1.rolling.over.time,average)); //assume every computation is either rollingTime or rollingCount +} + +self.getPipeline = function() { +return self.createPipeline(self.query); +} +self.createPipeline = function(query) { + var pipeline = []; + if(query.hasOwnProperty('from') && query.from.hasOwnProperty('where')) { + var sifter = sift(query.from.where); + pipeline.push(_.filter(sifter)); + } + pipeline.push(_.map(function(obj) { + // console.log('in query exec '); + var siftobj=new Object(); + expkeys=query.select; + siftobj.filter=function(value) { + var temp=new Object(); + for (var i = 0; i < expkeys.length; i++) { + temp[expkeys[i]]=value[expkeys[i]]; + } + var RTCount=0, + RCCount=0; + if(query.eval.val1.rolling.over.time){ + temp.val1=RT[RTCount++][evaluate](value[query.eval.val1.rolling.on]); //rollingTime not available + } + else { + temp.val1=RC[RCCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount + } + if(query.eval.val1.rolling.over.count){ + temp.val2=RC[RCCount++][query.eval.val1.rolling.evaluate](value[query.eval.val1.rolling.on]); //rollingTime not available + } + else { + temp.val2=RT[RTCount++][evaluate](value[query.eval.val1.rolling.on]);//assume every computation is either rollingTime or rollingCount + } + return temp; + } + var data={ + filter:obj + }; + var testQuery=sift(siftobj); + var tempdata=testQuery(data); //testQuery returns object with val1 and val2 set + var condition=query.project.$highlight.$condition; + condition=condition.replace('val1','tempdata.val1'); + condition=condition.replace('val2','tempdata.val2') + //filter that returns true/false depending on query condition + //{val1: {$gte: '$val2'}}//query.project.$highlight.$condition + //highlight set to true/false depending on val1 and val2 + if(tempdata.val1 && tempdata.val2){ + tempdata.highlight=eval(condition) + } + else { + tempdata.highlight=false; + } + // console.log(tempdata); + return tempdata; //object with select parameters and highlight + })); + return _.pipeline.apply(this, pipeline); +}; +}; + +exports = module.exports = QueryExecutor; diff --git a/components/rollingCount/accumulateOverCount.js b/components/rollingCount/accumulateOverCount.js index 1e000a1..1b4f98c 100644 --- a/components/rollingCount/accumulateOverCount.js +++ b/components/rollingCount/accumulateOverCount.js @@ -2,21 +2,21 @@ module.exports=function AccumulateOverCount(count, evalFunc) { // var self = this; - console.log('evalFunc1: ' + this.evalFunc); this.count = count; this.evalFunc = evalFunc; + // console.log('evalFunc1: ' + this.evalFunc); var fn=evalFunc; arr= new Array(count); var counter=0; - this.eval = function(line) { + this.evaluate = function(line) { if(counter= 100) { + } else if (diffMs >= parseInt(this.windowDuration)) { //window active now console.log('active now'); pastDate = new Date(); @@ -51,7 +59,7 @@ module.exports = function(time, evalFunc) { break; } } - //console.log(dataArr); + console.log('data arrayyyyyyy '+dataArr); return this.evalFunc(dataArr); } } diff --git a/models/expression.js b/models/expression.js index a7c1995..1dbbadb 100644 --- a/models/expression.js +++ b/models/expression.js @@ -12,6 +12,7 @@ obj.save(function(err,doc) { if (err) { console.error(err); cb(err,null); + } else { console.log(doc); @@ -33,7 +34,7 @@ expSchema.statics.searchQuery=function searchQuery(searchquery,cb) { // // expschema.post('save',function(query) { // mainquery(query); -// }) +// }) diff --git a/models/namespaceSchema.js b/models/namespaceSchema.js index 49cb9d2..51672df 100644 --- a/models/namespaceSchema.js +++ b/models/namespaceSchema.js @@ -1,5 +1,5 @@ var mongoose = require('mongoose'); -var RTdatamapper = require('../components/RTdatamapper/RTdatamapper'); +var getMeasure = require('../components/RTdatamapper/RTdatamapper'); var namespaceSchema = new mongoose.Schema({ name:String, @@ -35,17 +35,25 @@ namespaceSchema.statics.findNamespace=function(name,cb){ }); }; - namespaceSchema.post('save',function (namespace) { - // if (!err){ - console.log('nid' +namespace._id + '||' +namespace.measures); - RTdatamapper(namespace._id,namespace.measures); + namespaceSchema.statics.findNamespaceName=function(name,cb){ + this.findOne( + {name : name}) + .exec(function(err,namespace){ + if(!err) + { + cb(null,namespace); + } + else + { + cb(err,null); + } + }); + }; - // log.info('post saving...', this); - // } - // else{ - // console.log('error occured in hook' + err); - // } - }); + // namespaceSchema.post('save',function (namespace) { + // // console.log('nid' +namespace._id + '||' +namespace.measures); + // getMeasure(namespace.measures); + // }); module.exports=namespaceSchema; diff --git a/npm-debug.log.a1d4e2a4f569f81c5ad4fa417425f8f6 b/npm-debug.log.a1d4e2a4f569f81c5ad4fa417425f8f6 new file mode 100644 index 0000000..af79148 --- /dev/null +++ b/npm-debug.log.a1d4e2a4f569f81c5ad4fa417425f8f6 @@ -0,0 +1,36 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'start' ] +2 info using npm@2.11.3 +3 info using node@v0.12.7 +4 verbose node symlink /usr/bin/node +5 verbose run-script [ 'prestart', 'start', 'poststart' ] +6 info prestart LogAggregatorExpress@0.0.0 +7 info start LogAggregatorExpress@0.0.0 +8 verbose unsafe-perm in lifecycle true +9 info LogAggregatorExpress@0.0.0 Failed to exec start script +10 verbose stack Error: LogAggregatorExpress@0.0.0 start: `node ./bin/www` +10 verbose stack Exit status 1 +10 verbose stack at EventEmitter. (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:213:16) +10 verbose stack at EventEmitter.emit (events.js:110:17) +10 verbose stack at ChildProcess. (/usr/lib/node_modules/npm/lib/utils/spawn.js:24:14) +10 verbose stack at ChildProcess.emit (events.js:110:17) +10 verbose stack at maybeClose (child_process.js:1015:16) +10 verbose stack at Process.ChildProcess._handle.onexit (child_process.js:1087:5) +11 verbose pkgid LogAggregatorExpress@0.0.0 +12 verbose cwd /vagrant +13 error Linux 3.13.0-65-generic +14 error argv "/usr/bin/node" "/usr/bin/npm" "start" +15 error node v0.12.7 +16 error npm v2.11.3 +17 error code ELIFECYCLE +18 error LogAggregatorExpress@0.0.0 start: `node ./bin/www` +18 error Exit status 1 +19 error Failed at the LogAggregatorExpress@0.0.0 start script 'node ./bin/www'. +19 error This is most likely a problem with the LogAggregatorExpress package, +19 error not with npm itself. +19 error Tell the author that this fails on your system: +19 error node ./bin/www +19 error You can get their info via: +19 error npm owner ls LogAggregatorExpress +19 error There is likely additional logging output above. +20 verbose exit [ 1, true ] diff --git a/package.json b/package.json index 92c6037..d3ae0bc 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "formidable": "^1.0.17", "highland": "^2.7.4", "method-override": "~2.2.0", - "mongoose": "^3.9.7", + "mongoose": "~3.8.0", "morgan": "~1.6.1", "passport": "^0.3.2", "passport-local": "^1.0.0", diff --git a/public/.DS_Store b/public/.DS_Store index e63f0ed..b48710d 100644 Binary files a/public/.DS_Store and b/public/.DS_Store differ diff --git a/public/controllers/gitLog/controllers/indexController.js b/public/controllers/gitLog/controllers/indexController.js index daf2081..71b7dd0 100644 --- a/public/controllers/gitLog/controllers/indexController.js +++ b/public/controllers/gitLog/controllers/indexController.js @@ -591,12 +591,10 @@ app.controller('myController', function($scope, $http) { } $scope.groupedby = " groupedby " + column_details; } -<<<<<<< HEAD +// HEAD else{ $scope.groupedby = ""; } -======= ->>>>>>> d44739083ddbc064be8db6dc69eaeb8b51da203b if(obj.filters !== undefined && obj.filters.length !== 0){ @@ -610,7 +608,6 @@ app.controller('myController', function($scope, $http) { console.log("filter_details",filter_details); } -<<<<<<< HEAD $scope.filteredby = "and filtered by " + filter_details; } else{ @@ -631,14 +628,6 @@ app.controller('myController', function($scope, $http) { -======= - $scope.filteredby = " filteredBy " + filter_details; - } - - //column_details = "&" + column_details; - $scope.description_data= "This graph in plotted between " + obj["row"]["displayName"] + " and " + obj["measure"]["primary"]["displayName"]; ->>>>>>> d44739083ddbc064be8db6dc69eaeb8b51da203b - console.log("description_data",$scope.description_data); console.log("we are in getgit data function"); diff --git a/public/controllers/realTimeLogs/defineData/defineDataController.js b/public/controllers/realTimeLogs/defineData/defineDataController.js index 664dcbc..142bd28 100644 --- a/public/controllers/realTimeLogs/defineData/defineDataController.js +++ b/public/controllers/realTimeLogs/defineData/defineDataController.js @@ -1,7 +1,14 @@ -angular.module('logAggregator').controller('defineDataController', ['$scope','$http', 'defineDataService', - function($scope,$http, defineDataService) { +angular.module('logAggregator').controller('defineDataController', ['$scope', '$http', 'defineDataService', + function($scope, $http, defineDataService) { $scope.dimensionList = []; $scope.measureList = []; + $scope.displayDimError = false; + $scope.displayMeasError = false; + $scope.namespaceName = "Create namespace"; + + $scope.showContent = function($fileContent) { + $scope.content = $fileContent; + }; $scope.hoverIn = function() { this.hoverEdit = true; @@ -13,94 +20,215 @@ angular.module('logAggregator').controller('defineDataController', ['$scope','$h $scope.selectedDim = function(val) { if (!val) { - return ; + return; } $scope.dimVal = val; } - $scope.submitDimension=function() { - dimobj={ - displayName:$scope.displayname, - fieldname:$scope.dimVal + $scope.submitDimension = function() { + if($scope.addDimForm.$invalid) + { + console.log("ERROR"); + return; + } + dimobj = { + displayName: $scope.displayname, + fieldname: $scope.dimVal, + namespaceName :$scope.namespaceName + } + if ($scope.displayname === $scope.dimVal) { + $scope.displayDimError = true; + } else { + $scope.displayDimError = false; + console.log("post", dimobj); + $http({ + method: 'Post', + url: '/dimensions/addDimension', + data: { + data: dimobj + } + }). + success(function(data, status, headers, config) { + console.log("Successful"); + console.log(data); + }); + console.log(dimobj.displayName); + $scope.dimensionList.push(dimobj.displayName); + } + } + + $scope.submitMeasure = function() { + if($scope.addMeasForm.$invalid) + { + console.log("ERROR"); + return; + } + measobj = { + displaymeasurename: $scope.displaymeasurename, + measureFieldSelector: $scope.measureFieldSelector, + measure: $scope.measure, + measField: $scope.measField, + measValue: $scope.measValue, + namespaceName :$scope.namespaceName } - console.log("post",dimobj); - $http({method: 'Post', url: '/dimensions/addDimension',data:{data:dimobj}}). + if ($scope.displaymeasurename === $scope.measureFieldSelector || $scope.displaymeasurename === $scope.measField) { + $scope.displayMeasError = true; + } else { + $scope.displayMeasError = false; + console.log("post", measobj); + $http({ + method: 'Post', + url: '/measures/addMeasure', + data: { + data: measobj + } + }). + success(function(data, status, headers, config) { + console.log("Successful"); + console.log(data); + }); + $scope.measureList.push(measobj.displaymeasurename); + } + } + + + $scope.deleteDimension = function(dim) { + //console.log("final array ", $scope.dimensionList); + for (var i = 0; i < $scope.dimensionList.length; i++) { + if ($scope.dimensionList[i] === dim) { + deleteDim={ + namespaceName :$scope.namespaceName, + dimName:dim + } + $scope.dimensionList.pop($scope.dimensionList[i]); + } + } + $http({method: 'Post', url: '/dimensions/delete',data:{data:deleteDim}}). success(function(data, status, headers, config) { console.log("Successful"); console.log(data); }); - console.log(dimobj.displayName); - $scope.dimensionList.push(dimobj.displayName); } - $scope.submitMeasure=function() { - measobj={ - displaymeasurename:$scope.displaymeasurename, - measureFieldSelector:$scope.measureFieldSelector, - measure:$scope.measure, - measField:$scope.measField, - measValue:$scope.measValue - } - console.log("post",measobj); - $http({method: 'Post', url: '/measures/addMeasure',data:{data:measobj}}). + $scope.deleteMeasure = function(measure) { + for (var i = 0; i < $scope.measureList.length; i++) { + if ($scope.measureList[i] === measure) { + deletemeasureList={ + namespaceName :$scope.namespaceName, + measName:measure + } + $scope.measureList.pop($scope.measureList[i]); + } + } + $http({method: 'Post', url: '/measures/delete',data:{data:deletemeasureList}}). success(function(data, status, headers, config) { console.log("Successful"); console.log(data); }); - //console.log(dimobj.displayName); - $scope.measureList.push(measobj.displaymeasurename); - // $scope.dimensionList.push(dimobj.displayName); - } - - + } - $scope.selectedMeas = function(key,val) { + $scope.selectedMeas = function(key, val) { if (!key) { - return ; + return; } $scope.measField = key; $scope.measValue = val; } + $scope.createMapFromJSON = function(obj) { + var newObject = {} + for(var key in obj) { + if(typeof obj[key] === 'object') { + Object.keys(obj[key]).map(function(s) { + newObject[key+'.'+s] = obj[key][s]; + }); + } else { + newObject[key] = obj[key]; + } + } + return newObject; + }; + $scope.getKeys = function(obj) { if (!obj) { return []; } - //console.log(Object.keys(obj)); return Object.keys(obj); } $scope.rowSelected = function(obj) { if (!obj) { return {}; } - $scope.selectedRow = obj; + $scope.selectedRow = $scope.createMapFromJSON(obj); } - defineDataService.getDimensionData().then(function(response) { - var dimArr = response.data; - console.log("array",dimArr); - if (dimArr.length > 0) { - for (var i = 0; i < dimArr.length; i++) { - //console.log("inside loop", dimArr[i].dispName); - $scope.dimensionList.push(dimArr[i].displayName); - } + //get namespace streaming + $scope.getData = function() { + if($scope.namespaceForm.$invalid) + { + console.log("ERROR"); + return; } - //console.log("scope",$scope.dimensionList); - }); - defineDataService.getMeasureData().then(function(response) { - var mArr = response.data; - console.log(mArr); - if (mArr.length > 0) { - for (var i = 0; i < mArr.length; i++) { - $scope.measureList.push(mArr[i].displayName); - } + $('#myModal').modal('hide'); + namespaceObj = { + name: $scope.namespace, + description: $scope.desc, + createdOn: Date.now(), + source: $scope.source } - }); - defineDataService.getLogData().then(function(response) { - $scope.namespaceName=response.data.namespaceName; - $scope.logdataList = response.data.filedata; - //console.log($scope.logdataList); - $scope.cols = Object.keys($scope.logdataList[0]); - - }); + console.log("post", namespaceObj); + $scope.namespaceName = $scope.namespace; + $scope.cols = []; + $scope.logdataList = []; + $scope.dimensionList = []; + $scope.measureList = []; + $scope.displayname = ""; + $scope.dimVal = ""; + $scope.displaymeasurename = ""; + $scope.measField = ""; + $scope.measValue = ""; + $scope.selectedRow = {}; + if ($scope.namespace1 === "radioFile") { + $scope.logdataList = JSON.parse($scope.content); + $scope.cols = Object.keys($scope.logdataList[0]); + console.log("data fro uplaod", $scope.logdataList); + } else { + var ws = new WebSocket("ws://172.23.238.253:7070"); + var count = 0; + ws.onmessage = function(evt) { + $scope.$apply(function() { + var received_msg = JSON.parse(evt.data); + var sourceData = received_msg[0]; + if ($scope.source === sourceData && count < 10) { + var data = received_msg[2]; + count++; + $scope.logdataList.push(data); + console.log("lenght",$scope.cols.length); + if ($scope.cols.length <= 0) { + for (var key in data) { + $scope.cols.push(key); + } + } + } + if (count >= 10) { + ws.close(); + ws.onclose = function() { + console.log("close"); + } + } + }); + }; + } + $http({ + method: 'Post', + url: '/logdata', + data: { + data: namespaceObj + } + }). + success(function(data, status, headers, config) { + console.log("Successful"); + console.log(data); + }); + }; } ]); diff --git a/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js b/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js index 44c37af..f33d1d3 100644 --- a/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js +++ b/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js @@ -1,33 +1,93 @@ var app = angular.module('logAggregator'); var kk=0; -app.controller('liveQueryController', ['$scope', function ($scope) { +var str2=""; +var pid ; +var addConditionCount=0; +app.controller('liveQueryController', ['$scope','$http', '$compile','$sce',function ($scope,$http,$compile,$sce) { + + + var dimensionMap= new Map(); + var measureMap = new Map(); + var visitedMap= new Map(); + $scope.iter=1; + $scope.iter2=1; + + + + var data = '{"group": {"operator": "OR","rules": []}}'; + $scope.flag=false; + + $scope.aggfn = ["average", "count", "max","min","sum"]; + $scope.accumfn = ["time", "count"]; + $scope.operators = [">", "<", "==",">=","=<"]; + //$scope.operators = [">", "<", "==",">=","=<"]; + + +// console.log($scope.selectedAccumFn2); + + function htmlEntities(str) { return String(str).replace(//g, '>'); + } + + + + $scope.submitQuery = function () { + + + + // console.log("pid----------------------->>>>>>>>>>>"+pid); + + $http({method: 'Post', url: '/exp/stream',data:{data:pid}}). + success(function(data, status, headers, config) { + console.log("Successful"); + console.log(data); + }); + query=JSON.parse(str2); + // query=str2; + // console.log("Answer String") + console.log(str2); + // $scope.answer=str2; + $http({method: 'Post', url: '/exp/save',data:{data:query}}). + success(function(data, status, headers, config) { + console.log("Successful"); + console.log(data); + }); + + window.location="#rtWizard"; + + + }; + + + + function computed(group) { if (!group) return ""; for (var str = "(", i = 0; i < group.rules.length; i++) { - console.log("aaaaa") - console.log($scope.select1); - console.log("len----"+ group.rules.length); +// console.log("aaaaa") + // console.log($scope.select1); +// console.log("len----"+ group.rules.length); - console.log(group.rules[i]); + // console.log(group.rules[i]); i > 0 && (str += " "+group.operator+" "); kk++; str += group.rules[i].group ? computed(group.rules[i].group) : - group.rules[i].field + " " + htmlEntities(group.rules[i].condition) + " " + group.rules[i].data + " Over " + group.rules[i].accumulator +" " +group.rules[i].value ; + group.rules[i].field + " " + htmlEntities(group.rules[i].condition) + " " + group.rules[i].data + " Over " + group.rules[i].accumulator +" " +group.rules[i].value ; //if(kk>0) //{ // str += group.rules[i].group ? // computed(group.rules[i].group) : - // + // //} + return "asddddddddddddddddddd"; } @@ -36,131 +96,245 @@ app.controller('liveQueryController', ['$scope', function ($scope) { } - function computeJson(group){ - if(!group) return ""; - var str2="{from: {stream: "+$scope.stream+",where: {server-name: {$regex: '/$server.*/' }}},select: ['dimension1', 'dimension2','measure3','measure4'],eval: {" - for ( i = 0; i < group.rules.length; i++) { - console.log("aaaaa") - console.log($scope.select1); - console.log("len----"+ group.rules.length); - console.log("STR----"+i+"-----"+str2); - i > 0 && (str2 += ","); - kk++; + $scope.computeJson=function (){ - str2 += group.rules[i].group ? - computeJson(group.rules[i].group) : - "val"+i+": {$rolling: { evaluate:"+group.rules[i].field+",over: {"+group.rules[i].accumulator+": "+group.rules[i].value+"},on:"+group.rules[i].data+"}}"; - //if(kk>0) - //{ - // str += group.rules[i].group ? - // computed(group.rules[i].group) : - // - //} + str2="{\"select\":["; + var str3="],\"eval\": {"; + + var strng=$scope.select1; + + var dummy=""; + var stringA=""; + var count=0; + var cn=0; + for(var j=0;j 0) { + for (var i = 0; i < dimArr.length; i++) { + console.log("inside loop"+ dimArr[i].dispName); + var newObj=dimArr[i]; + // console.log("name-------------"+newObj); + + $scope.nameSpaceList.push(newObj); + var objId=dimArr[i]._id; + var dimensionArr=dimArr[i].dimensions; + var measureArr=dimArr[i].measures; + dimensionMap.set(objId,dimensionArr); + measureMap.set(objId,measureArr); + + } + console.log("jajajajaja") + //console.log($scope.nameSpaceList); + } + + }); + + } + + + // ( function () { + // $http({method: 'GET', url: '/logdata/namespaceList'}). + // then(function(response) { + // console.log("respose--------------------------"); + // console.log(response.data); + // console.log("resposeData--------------------------"); + // + // + // dimArr = response.data; + // var dimArrLength=dimArr.length; + // console.log("length-----------"+dimArrLength); + // console.log("array",dimArr); + // + // if (dimArr.length > 0) { + // for (var i = 0; i < dimArr.length; i++) { + // //console.log("inside loop", dimArr[i].dispName); + // var newObj=dimArr[i]; + // console.log("name-------------"+newObj); + // + // $scope.nameSpaceList.push(newObj); + // var objId=dimArr[i]._id; + // var dimensionArr=dimArr[i].dimensions; + // var measureArr=dimArr[i].measures; + // dimensionMap.set(objId,dimensionArr); + // measureMap.set(objId,measureArr); + // + // } + // console.log("jajajajaja") + // console.log($scope.nameSpaceList); + // } + // + // }); + // + // }()); + + + + + + $scope.getDimensionAndMeasure=function (id) { + + + + console.log("qqqqqqqqqqqqqqqqqq") + + + $scope.dimensionList=[]; + $scope.measureList=[]; + + + pid=id; + var visitedValue=visitedMap.get(id); + console.log("visited value -----"+visitedValue); + + if(visitedValue!=1) + { + + visitedMap.set(id,1); +// console.log("get dimension clicked. ID: " + id); + + var arrayDim = dimensionMap.get(id); + console.log("Dimension Map"); + console.log(dimensionMap) + console.log("array dim ---------------->>>>>>>>>>>>>>>>>>"); + console.log(arrayDim); + var arrayMeas = measureMap.get(id); + //console.log(measureMap) + //console.log("hihihi"); + //console.log("array dim ka length ---------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+arrayDim.length); + + + for (var j = 0; j < arrayDim.length; j++) { + $scope.dimensionList[j] = arrayDim[j].fieldName; + + } + + for (var j = 0; j < arrayMeas.length; j++) { + // $scope.dimensionList[j]=arrayDim[j].fieldName; + $scope.measureList[j] = arrayMeas[j].displayName; + + } + + + //console.log("measure list"); + //console.log($scope.measureList); + + var btnhtml = '
  •        a) Dimensions
    • '; + var i = 0; + for (i = 0; i < $scope.dimensionList.length; i++) { + btnhtml = btnhtml + "
    •      " +$scope.iter2+". "+ $scope.dimensionList[i] + "
    • " + $scope.iter2++; + } + btnhtml = btnhtml + "
  •        b) Measures
    • "; + // btnhtml = btnhtml + "
  •        Measures
    • "; + + var i = 0; + for (i = 0; i < $scope.measureList.length; i++) { + + + btnhtml = btnhtml + "
    •      " +$scope.iter+". "+ $scope.measureList[i] + "
    • " + $scope.iter++; + } + btnhtml = btnhtml + "
    "; + +// console.log(btnhtml); + var temp = $compile(btnhtml)($scope); + angular.element(document.getElementById(id)).append(temp); + + + } + + + + } + $scope.output2 = "sadasdadaasdasdsa"; + + $scope.aggregatorList=["average", "mean", "max","standard deviation"]; $scope.json = null; $scope.filter = JSON.parse(data); $scope.$watch('filter', function (newValue) { $scope.json = JSON.stringify(newValue, null, 2); - $scope.output = computed(newValue.group); - $scope.jsonOutput=computeJson(newValue.group); + $scope.output2 = "sadasdadaasdasdsa"; + // console.log("output value"+$scope.output2); + //$scope.jsonOutput=computeJson(newValue.group); }, true); }]); - -//var queryBuilder = angular.module('queryBuilder', []); -app.directive('queryBuilder', ['$compile','$http', function ($compile,$http) { - return { - restrict: 'E', - scope: { - group: '=' - }, - templateUrl: '/queryBuilderDirective.html', - compile: function (element, attrs) { - var content, directive; - content = element.contents().remove(); - return function (scope, element, attrs) { - scope.operators = [ - { name: 'AND' }, - { name: 'OR' } - ]; - - scope.fields = [ - { name: 'Average' }, - { name: 'Standard Deviation' }, - { name: 'Count' }, - { name: 'Mean' }, - { name: 'Max' } - ]; - - scope.accumulators = [ - { name: 'Count' }, - { name: 'Time' } - - ]; - - scope.conditions = [ - { name: '=' }, - { name: '<>' }, - { name: '<' }, - { name: '<=' }, - { name: '>' }, - { name: '>=' } - ]; - - scope.addCondition = function () { - scope.group.rules.push({ - condition: 'of', - field: 'Firstname', - data: '', - accumulator:'', - value:'' - }); - }; - - scope.removeCondition = function (index) { - scope.group.rules.splice(index, 1); - }; - - scope.addGroup = function () { - scope.group.rules.push({ - group: { - operator: 'AND', - rules: [] - } - }); - }; - - scope.removeGroup = function () { - "group" in scope.$parent && scope.$parent.group.rules.splice(scope.$parent.$index, 1); - }; - scope.submitQuery = function () { - query="select * from somthing" - $http({method: 'Post', url: '/exp/save',data:{data:query}}). - success(function(data, status, headers, config) { - console.log("Successful"); - console.log(data); - }); - - }; - - directive || (directive = $compile(content)); - - element.append(directive(scope, function ($compile) { - return $compile; - })); - } - } - } -}]); diff --git a/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js.orig b/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js.orig new file mode 100644 index 0000000..44c37af --- /dev/null +++ b/public/controllers/realTimeLogs/queryBuilder/queryBuilderController.js.orig @@ -0,0 +1,166 @@ +var app = angular.module('logAggregator'); +var kk=0; +app.controller('liveQueryController', ['$scope', function ($scope) { + var data = '{"group": {"operator": "OR","rules": []}}'; + + function htmlEntities(str) { + return String(str).replace(//g, '>'); + } + + function computed(group) { + if (!group) return ""; + for (var str = "(", i = 0; i < group.rules.length; i++) { + console.log("aaaaa") + console.log($scope.select1); + console.log("len----"+ group.rules.length); + + console.log(group.rules[i]); + i > 0 && (str += " "+group.operator+" "); + kk++; + + str += group.rules[i].group ? + computed(group.rules[i].group) : + group.rules[i].field + " " + htmlEntities(group.rules[i].condition) + " " + group.rules[i].data + " Over " + group.rules[i].accumulator +" " +group.rules[i].value ; + + //if(kk>0) + //{ + // str += group.rules[i].group ? + // computed(group.rules[i].group) : + // + //} + + } + + return " Select "+$scope.select1 + " from " +$scope.stream + " where "+ str + ")"; + + } + + + function computeJson(group){ + if(!group) return ""; + + + var str2="{from: {stream: "+$scope.stream+",where: {server-name: {$regex: '/$server.*/' }}},select: ['dimension1', 'dimension2','measure3','measure4'],eval: {" + + for ( i = 0; i < group.rules.length; i++) { + console.log("aaaaa") + console.log($scope.select1); + console.log("len----"+ group.rules.length); + console.log("STR----"+i+"-----"+str2); + i > 0 && (str2 += ","); + kk++; + + str2 += group.rules[i].group ? + computeJson(group.rules[i].group) : + "val"+i+": {$rolling: { evaluate:"+group.rules[i].field+",over: {"+group.rules[i].accumulator+": "+group.rules[i].value+"},on:"+group.rules[i].data+"}}"; + + //if(kk>0) + //{ + // str += group.rules[i].group ? + // computed(group.rules[i].group) : + // + //} + + } + + + return str2; + + } + + $scope.json = null; + + $scope.filter = JSON.parse(data); + + $scope.$watch('filter', function (newValue) { + $scope.json = JSON.stringify(newValue, null, 2); + $scope.output = computed(newValue.group); + $scope.jsonOutput=computeJson(newValue.group); + }, true); +}]); + +//var queryBuilder = angular.module('queryBuilder', []); +app.directive('queryBuilder', ['$compile','$http', function ($compile,$http) { + return { + restrict: 'E', + scope: { + group: '=' + }, + templateUrl: '/queryBuilderDirective.html', + compile: function (element, attrs) { + var content, directive; + content = element.contents().remove(); + return function (scope, element, attrs) { + scope.operators = [ + { name: 'AND' }, + { name: 'OR' } + ]; + + scope.fields = [ + { name: 'Average' }, + { name: 'Standard Deviation' }, + { name: 'Count' }, + { name: 'Mean' }, + { name: 'Max' } + ]; + + scope.accumulators = [ + { name: 'Count' }, + { name: 'Time' } + + ]; + + scope.conditions = [ + { name: '=' }, + { name: '<>' }, + { name: '<' }, + { name: '<=' }, + { name: '>' }, + { name: '>=' } + ]; + + scope.addCondition = function () { + scope.group.rules.push({ + condition: 'of', + field: 'Firstname', + data: '', + accumulator:'', + value:'' + }); + }; + + scope.removeCondition = function (index) { + scope.group.rules.splice(index, 1); + }; + + scope.addGroup = function () { + scope.group.rules.push({ + group: { + operator: 'AND', + rules: [] + } + }); + }; + + scope.removeGroup = function () { + "group" in scope.$parent && scope.$parent.group.rules.splice(scope.$parent.$index, 1); + }; + scope.submitQuery = function () { + query="select * from somthing" + $http({method: 'Post', url: '/exp/save',data:{data:query}}). + success(function(data, status, headers, config) { + console.log("Successful"); + console.log(data); + }); + + }; + + directive || (directive = $compile(content)); + + element.append(directive(scope, function ($compile) { + return $compile; + })); + } + } + } +}]); diff --git a/public/controllers/realTimeLogs/rtwizard/rtcontroller.js b/public/controllers/realTimeLogs/rtwizard/rtcontroller.js index d51f034..d338048 100644 --- a/public/controllers/realTimeLogs/rtwizard/rtcontroller.js +++ b/public/controllers/realTimeLogs/rtwizard/rtcontroller.js @@ -1,7 +1,36 @@ +// var app = angular.module('logAggregator'); +// app.controller('rtcontroller', function($scope, $http) { +// $http.get('todos.json') +// .then(function(res){ +// $scope.todos = res.data; +// }); +// }); + var app = angular.module('logAggregator'); - app.controller('rtcontroller', function($scope, $http) { - $http.get('todos.json') - .then(function(res){ - $scope.todos = res.data; - }); - }); + + app.controller('rtcontroller',function($scope){ + // app.controller('myController',function($scope){8 + + $scope.key = []; + $scope.val = []; + + var ws = new WebSocket("ws://localhost:9000"); + + var isFirstMessage = true; + + ws.onmessage = function(evt){ + + $scope.$apply(function(){ + var received_msg = JSON.parse(evt.data); + // var data = received_msg[2]; + var data=received_msg; + if(isFirstMessage){ + for(var key in data){ + $scope.key.push(key); + } + isFirstMessage = false ; + } // if(isFirstMessage) end + $scope.val.splice(0,0,data); + }) ; //$scope.apply end + } ; //ws.onmessage end + }); //app.controller end diff --git a/public/directives/javascripts/fileUpload/onReadFile.js b/public/directives/javascripts/fileUpload/onReadFile.js new file mode 100644 index 0000000..92a24f9 --- /dev/null +++ b/public/directives/javascripts/fileUpload/onReadFile.js @@ -0,0 +1,21 @@ +angular.module('logAggregator').directive('onReadFile', function ($parse) { + return { + restrict: 'A', + scope: false, + link: function(scope, element, attrs) { + var fn = $parse(attrs.onReadFile); + + element.on('change', function(onChangeEvent) { + var reader = new FileReader(); + + reader.onload = function(onLoadEvent) { + scope.$apply(function() { + fn(scope, {$fileContent:onLoadEvent.target.result}); + }); + }; + + reader.readAsText((onChangeEvent.srcElement || onChangeEvent.target).files[0]); + }); + } + }; +}); diff --git a/public/stylesheets/queryBuilder/queryBuilder.css b/public/stylesheets/queryBuilder/queryBuilder.css index 7582e38..7518d9d 100644 --- a/public/stylesheets/queryBuilder/queryBuilder.css +++ b/public/stylesheets/queryBuilder/queryBuilder.css @@ -8,6 +8,13 @@ .group-conditions{ margin-left: 20px; } +#operator{ + text-align: center; +} + +.namespaceliststyle{ + padding-left: 0px; +} .widcheck{ } #livequeryform{ @@ -28,3 +35,17 @@ margin-top: 15px; margin-bottom: 15px; } + + + + + +.baskya{ + padding-left: 0px; +} + +.sidebar-nav li { + display: block; + text-decoration: none; + color: darkblue; +} diff --git a/public/stylesheets/simple-sidebar.css b/public/stylesheets/simple-sidebar.css index 4d4d9f0..56b6029 100644 --- a/public/stylesheets/simple-sidebar.css +++ b/public/stylesheets/simple-sidebar.css @@ -96,7 +96,7 @@ } #sidebar-wrapper{ - margin-top: 38px; + margin-top: 2px; } .sidebar-brand { diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 72c4d36..0a4b5c0 100755 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -125,14 +125,14 @@ This code is written by Prateek Reddy Yammanuru, Shiva Manognya Kandikuppa, Uday } .wrapper{ - margin-top:60px; + margin-top:40px; margin-left:20px; } .dashboardWizardRow{ margin-top:120px; } .liveQueryWizardRow{ - margin-top:120px; + margin-top:100px; } .buttom_css{ height:50px; @@ -1237,47 +1237,64 @@ ul[dnd-list] > li > a{ .formBottomPad{ padding-bottom: 100px; } +/*Wave 4 code-start*/ +#table-wrapper { + position:relative; +} +#table-scroll { + height:450px; + overflow:auto; + margin-top:20px; +} +#table-wrapper table { + width:100%; +} -///dummy - - - - - - - - - +#table-wrapper table * { + background:white; + color:black; +} +#table-wrapper table thead th .text { + position:absolute; + top:-20px; + z-index:2; + height:20px; + width:35%; + border:1px solid red; +} #tabLog, #tabLog td, #tabLog th { border: 1px solid black; cursor: pointer; + } #tabLog { border-collapse: collapse; - width: 100%; - margin-top: 10px; -} - -th { - height: 50px; - + /*width: 100%;*/ + /*margin-top: 10px;*/ } +/* td ,th { padding-left: 10px; padding-right: 10px; -} +}*/ #goBtn{ margin-top: 10px; } +.panelBody{ + height: 550px; +} + + .mainSection { - height: 750px; +border: none; +box-shadow: none; } .container{ @@ -1341,3 +1358,16 @@ td ,th { width: 100%; margin-top: 10px; } +.modal-scroll{ + overflow-x:scroll; + overflow-y: scroll; + padding-bottom:10px; +} +.align-left{ + text-align:left; +} +.wordwrap{ + text-align:center; + word-wrap:break-word; +} +/*Wave 4 code end------*/ diff --git a/public/views/gitLog/dashboardWizard/dashboardWizard.html b/public/views/gitLog/dashboardWizard/dashboardWizard.html index 5af3ec9..563862c 100644 --- a/public/views/gitLog/dashboardWizard/dashboardWizard.html +++ b/public/views/gitLog/dashboardWizard/dashboardWizard.html @@ -36,7 +36,7 @@ - + Aggregators diff --git a/public/views/gitLog/mainPage/mainPage.view.html b/public/views/gitLog/mainPage/mainPage.view.html index 7c431bf..4aa85dd 100644 --- a/public/views/gitLog/mainPage/mainPage.view.html +++ b/public/views/gitLog/mainPage/mainPage.view.html @@ -2,23 +2,56 @@
    - - - +
    + - -
    -
    - -
    -
    -
    -
    - -
    -
    -

    {{graph_type_details}}

    -
    -
    -
    - {{description_data}}
    - {{groupedby}}
    - {{filteredby}} -
    -
    -
    -
    -
    - -
    -
    - - - -
    -
    -
    - -
    -
    -
    - -
    -
    -
    + +
    +
    + + + +
    +
    +
    +
    + +
    +
    +

    + {{graph_type_details}} +

    +
    + +
    +
    + {{description_data}}
    + {{groupedby}}
    + {{filteredby}} +
    +
    +
    +
    +
    + +
    +
    + + + +
    +
    +
    + +
    +
    + +
    + +
    +
    +
    -
    - + +
    + -
    -
    -
    -
    +
    + +
    -
    - -
    -
    - +
    +
    + +
    +
    +
    - +}); + diff --git a/public/views/realTimeLogs/defineData/defineData.html b/public/views/realTimeLogs/defineData/defineData.html index fae5b38..d05abd9 100644 --- a/public/views/realTimeLogs/defineData/defineData.html +++ b/public/views/realTimeLogs/defineData/defineData.html @@ -1,7 +1,7 @@
    -
    +
    @@ -12,11 +12,35 @@

    + + + +

    +
    -
    - - - - - - - - - - - -
    {{header}}
    {{row[dat]}}
    +
    +
    + + + + + + + + + + + +
    {{header}}
    {{row[dat]}}
    +
    -
    -
    +
    +

    Select Entity @@ -108,8 +136,8 @@

    - - + +
    {{dat}}{{selectedRow[dat]}}{{dat}}{{selectedRow[dat]}} @@ -120,8 +148,8 @@

    -
    -
    +
    +

    Dimensions | Measures @@ -135,49 +163,59 @@

    @@ -191,10 +229,12 @@

    Dimensions

    -
    +
      -
    • {{dim}}
    • +
    • {{dim}} + +
    @@ -206,10 +246,12 @@

    Measures

    -
    +
      -
    • {{m}}
    • +
    • {{m}} + +
    diff --git a/public/views/realTimeLogs/defineData/defineData1.html b/public/views/realTimeLogs/defineData/defineData1.html deleted file mode 100644 index 9c78267..0000000 --- a/public/views/realTimeLogs/defineData/defineData1.html +++ /dev/null @@ -1,73 +0,0 @@ -
    - inside define data -
    - - - - -
    - progress - - - - - - - -
    - -
    - -
    -
    - - - -
    - progress - - - - - - - - - - - - - - - - - - - - - - - - -
    AGENT CODE METHOD PATH REFERER REMOTE SIZE TIME
    {{ obj.agent | agentFilter }} {{ obj.code}} {{ obj.method}} {{ obj.path}} {{ obj.referer}} {{ obj.remote}} {{ obj.size | sizeFilter }} {{ obj.time | date : 'd-MMMM-yyyy HH:mm:ss'}}
    - - - -
    - - - -
    - -
    diff --git a/public/views/realTimeLogs/defineData/defineData2.html b/public/views/realTimeLogs/defineData/defineData2.html deleted file mode 100644 index cd91692..0000000 --- a/public/views/realTimeLogs/defineData/defineData2.html +++ /dev/null @@ -1,191 +0,0 @@ -
    -
    -
    -
    -
    -
    -
    -

    Namespace -

    -
    -
    - - - -
    -
    - -
    -
    - - - -
    - - - - - - - - - - - -
    {{header}}
    {{row[dat]}}
    -
    -
    -
    -
    -
    -
    -
    -

    - Select Entity -

    -
    -
    - - - - - - - - -
    {{dat}}{{selectedRow[dat]}} - - -
    -
    -
    -
    -
    -
    -
    -

    - Dimensions | Measures -

    -
    -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -

    - Dimensions -

    -
    -
    -
    -
      -
    • {{dim}}
    • -
    -
    -
    -
    - -
    -
    -

    - Measures -

    -
    -
    -
    -
      -
    • {{m}}
    • -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html b/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html index 7341d43..8e77ccc 100644 --- a/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html +++ b/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html @@ -1,7 +1,10 @@ -
    + + + +
    -
    -
    - -
    -
    - -
    -

    Angular.js Query Builder

    - -
    - Example Output
    - -
    -
    - -
    +
    +

    Query on the Go!

    -
    -
    - - +
    + Json Output
    + +
    -
    -
    +

    +
    - -
    - + + + + + +
    +
    + +

       WHERE

    + + + + + + + + + + + + +
    +
    +
    + + +
    +
    +
    + + + + + + + + + + + +
    +
    +
    + + + + + +
    +
    + + + +
    -
    -
    - -
    - -
    -

    diff --git a/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html.orig b/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html.orig new file mode 100644 index 0000000..7341d43 --- /dev/null +++ b/public/views/realTimeLogs/queryBuilder/liveQueryWizard.html.orig @@ -0,0 +1,136 @@ + + + +
    + + + + +
    +
    + +
    +
    + +
    +

    Angular.js Query Builder

    + +
    + Example Output
    + +
    +
    + +
    + +
    +
    + + + + + +
    +
    + + + +
    + + + +
    +
    + +
    + +
    + +
    + diff --git a/public/views/realTimeLogs/rtwizard/rtwizard.html b/public/views/realTimeLogs/rtwizard/rtwizard.html index c386332..031b068 100644 --- a/public/views/realTimeLogs/rtwizard/rtwizard.html +++ b/public/views/realTimeLogs/rtwizard/rtwizard.html @@ -1,13 +1,11 @@ - - - - - diff --git a/routes/defineData/dimensions.js b/routes/defineData/dimensions.js index 7c9bb11..5ed95dc 100644 --- a/routes/defineData/dimensions.js +++ b/routes/defineData/dimensions.js @@ -3,97 +3,70 @@ var dimensionRouter = express.Router(); var mongoose = require('mongoose'); var Namespace = require('../../models/dbConfig').namespaceModel; -// var dimList = [{ -// "dispName": "Path", -// "fieldName": "request" -// }, { -// "dispName": "User", -// "fieldName": "username" -// }, { -// "dispName": "Browser", -// "fieldName": "user_agent" -// }, { -// "dispName": "Timestamp", -// "fieldName": "datetime" -// }]; -// -// dimensionRouter.get('/', function(req, res) { -// res.send(dimList); -// }); -/* GET Dimensions */ -dimensionRouter.get('/', function(req, res) { - if (req.session.oid !== null) { - Namespace.findNamespace(req.session.oid, function(err, namespace) { - if (namespace != null) { - console.log("routes",namespace.dimensions); - res.send(namespace.dimensions); - } - }); - } -}); /* POST Dimension */ dimensionRouter.post('/addDimension', function(req, res) { - console.log("received ********************* " +req.body) ; - if (req.session.oid !== null) { - Namespace.findNamespace(req.session.oid, function(err, namespace) { - if (namespace != null) { - namespace.dimensions.push({ - displayName: req.body.data.displayName, - fieldName: req.body.data.fieldname - }); - - namespace.save(function(err, namespace) { - console.log('namespace saved:', namespace); - }); - } - }); - } + Namespace.findNamespaceName(req.body.data.namespaceName, function(err, namespace) { + if (namespace != null) { + namespace.dimensions.push({ + displayName: req.body.data.displayName, + fieldName: req.body.data.fieldname + }); + namespace.save(function(err, namespace) { + console.log('namespace saved:', namespace); + // res.send(200).send(); + }); + } + }); + //} res.send(req.body) - // res.redirect('/#/defineData'); }); /*delete*/ -dimensionRouter.post('/delete/:id', function(req, res) { - console.log("deleted value is", req.params.id); - if (req.session.oid !== null) { - Namespace.findByIdAndUpdate(req.session.oid, { +dimensionRouter.post('/delete', function(req, res) { + console.log("deleted value is", req.body.data.dimName); + console.log(req.body.data.namespaceName); + var namespaceID; + Namespace.findNamespaceName(req.body.data.namespaceName, function(err, namespace) { + console.log(namespace); + namespaceID=namespace._id; + console.log(namespaceID); + Namespace.findByIdAndUpdate(namespaceID, { $pull: { dimensions: { - _id: req.params.id + displayName: req.body.data.dimName } } }, function(err) { - console.log(err); + if (err) { + return res.send(500).json(err); +} +console.log(err + "error"); +return res.send(200).send(); }); - } - res.redirect('/#/defineData'); -}); -/*update*/ -dimensionRouter.post('/update/:id', function(req, res) { - //console.log("updated value is", req.params.id); - if (req.session.oid !== null) { + }); + // console.log(namespaceID); + // Namespace.findByIdAndUpdate(namespaceID, { + // $pull: { + // dimensions: { + // displayName: req.body.data.dimName + // } + // } + // }, function(err) { + // console.log(err); + // }); - Namespace.update({ - 'dimensions._id': req.params.id - }, { - '$set': { - 'dimensions.$.displayName': 'updated item2' - } - }, function(err, dimension) { - if (!err) { - console.log('updated dimension' + dimension); - } else { - console.log('error in update'); - } - }); - } - - res.redirect('/'); + // Namespace.findAndModify(req.body.data.namespaceName, { + // $pull: { + // dimensions: { + // displayName: req.body.data.dimName + // } + // } + // }, function(err) { + // console.log(err); + // }); }); - - module.exports = dimensionRouter; diff --git a/routes/defineData/logdata.js b/routes/defineData/logdata.js index a11619a..741ebbb 100644 --- a/routes/defineData/logdata.js +++ b/routes/defineData/logdata.js @@ -1,90 +1,5 @@ var express = require('express'); var router = express.Router(); -// var json = [{ -// "host": "216.67.1.92", -// "rfc931": "-", -// "username": "-", -// "datetime": "[13/Aug/2006:07:01:53 -0700]", -// "request": "GET /index1.html HTTP/1.0", -// "statuscode": "200", -// "bytes": "431", -// "referrer": "http://www.google.com", -// "user_agent": "Mozilla/5.0", -// "cookies": "-" -// }, { -// "host": "216.67.1.93", -// "rfc931": "-", -// "username": "-", -// "datetime": "[14/Sep/2006:07:01:53 -0700]", -// "request": "GET /index.html HTTP/1.0", -// "statuscode": "404", -// "bytes": "431", -// "referrer": "http://www.google.com", -// "user_agent": "Mozilla/5.0", -// "cookies": "-" -// }, { -// "host": "216.67.1.95", -// "rfc931": "-", -// "username": "-", -// "datetime": "[13/Sep/2006:07:01:53 -0700]", -// "request": "GET /index2.html HTTP/1.0", -// "statuscode": "200", -// "bytes": "432", -// "referrer": "http://www.google.com", -// "user_agent": "Mozilla/5.0", -// "cookies": "-" -// }, { -// "host": "218.67.1.97", -// "rfc931": "-", -// "username": "-", -// "datetime": "[13/May/2006:07:01:53 -0700]", -// "request": "GET /index3.html HTTP/1.0", -// "statuscode": "200", -// "bytes": "431", -// "referrer": "http://www.google.com", -// "user_agent": "Mozilla/5.0", -// "cookies": "-" -// }, { -// "host": "217.67.1.91", -// "rfc931": "-", -// "username": "-", -// "datetime": "[13/Sep/2006:07:01:53 -0700]", -// "request": "GET /index.html HTTP/1.0", -// "statuscode": "200", -// "bytes": "431", -// "referrer": "http://www.google.com", -// "user_agent": "Mozilla/5.0", -// "cookies": "-" -// }, { -// "host": "216.67.2.91", -// "rfc931": "-", -// "username": "-", -// "datetime": "[13/Sep/2006:07:01:53 -0700]", -// "request": "GET /index.html HTTP/1.0", -// "statuscode": "200", -// "bytes": "431", -// "referrer": "http://www.google.com", -// "user_agent": "Google Chrome", -// "cookies": "-" -// },{ -// "host": "216.67.2.95", -// "rfc931": "-", -// "username": "-", -// "datetime": "[13/Sep/2006:07:01:53 -0700]", -// "request": "GET /index.html HTTP/1.0", -// "statuscode": "200", -// "bytes": "431", -// "referrer": "http://www.google.com", -// "user_agent": "Google Chrome", -// "cookies": "-" -// } -// -// ]; -// -// router.get('/', function(req, res){ -// -// res.send(json); -// }); var formidable = require('formidable'); var mongoose = require('mongoose'); @@ -92,59 +7,34 @@ var Namespace = require('../../models/dbConfig').namespaceModel; var fs = require('fs'); - -/* GET log data */ -router.get('/', function(req, res) { - if (req.session.oid !== null) { - Namespace.findNamespace(req.session.oid, function(err, namespace) { - if (namespace != null) { - fs.readFile(namespace.filePath, 'utf8', function(err, data) { - if (err) { - return console.log(err); - } - var nameObj ={ - namespaceName:namespace.name, - filedata:JSON.parse(data) - }; - res.send(nameObj); - }); - } - }); - } -}); - /* POST Namespace*/ router.post('/', function(req, res) { - //creates a new incoming form. - var form = new formidable.IncomingForm(); - - // parse a file upload - form.parse(req, function(err, fields, files) { - var newPath; - fs.readFile(files.file.path, function(err, data) { - var filedata = data.toString(); - fs.writeFile("public/upload/" + files.file.name, filedata, function(err) { - if (err) return console.log(err); - console.log("file written"); - }); - }); - + console.log(req.body.data); Namespace.create({ - name: fields.namespace, - description: fields.desc, + name: req.body.data.name, + description: req.body.data.description, createdOn: Date.now(), - filePath: "public/upload/" + files.file.name, - source: fields.fileSource - + source: req.body.data.source }, function(err, namespace) { if (err) { console.log(err); } else { console.log("namespace created and saved", namespace); - req.session.oid = namespace._id; - res.redirect('/#/defineData'); + // req.session.oid = namespace._id; + // console.log('session',req.session.oid); + res.status(201).send(namespace); } }); }); + +router.get('/namespaceList', function(req, res) { + // + // Namespace.remove({},function(){ + // console.log("deleted"); + // }); + Namespace.find(function(err,namespace){ + res.send(namespace); + }); }); + module.exports = router; diff --git a/routes/defineData/measures.js b/routes/defineData/measures.js index c51fe2b..388359a 100644 --- a/routes/defineData/measures.js +++ b/routes/defineData/measures.js @@ -2,38 +2,14 @@ var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); var Namespace = require('../../models/dbConfig').namespaceModel; -// var measureList = [{ -// "dispName": "No of Hits" -// }, { -// "dispName": "Failed Requests" -// }, { -// "dispName": "Average Visitor Stay Length" -// }, { -// "dispName": "Average Bandwidth per Day" -// }] -// /* GET Measures */ -// measureRouter.get('/', function(req, res){ -// res.send(measureList); -// }); -/* GET Measures */ -router.get('/', function(req, res) { - if (req.session.oid !== null) { - Namespace.findNamespace(req.session.oid, function(err, namespace) { - if (namespace != null) { - res.send(namespace.measures); - } - }); - } -}); + /* POST Measures */ router.post('/addMeasure', function(req, res) { - if (req.session.oid !== null) { - Namespace.findNamespace(req.session.oid, function(err, namespace) { + Namespace.findNamespaceName(req.body.data.namespaceName, function(err, namespace) { if (namespace != null) { var fieldEvent; - // console.log("radiovalue",req.body.measure); - if (req.body.data.measure == "radioField") { + if (req.body.data.measure == "fieldMeasure") { fieldEvent = req.body.data.measureFieldSelector; fieldValue=""; } else { @@ -48,19 +24,38 @@ router.post('/addMeasure', function(req, res) { }); namespace.save(function(err, namespace) { console.log('namespace saved:', namespace); + // res.send(200).send(); }); } }); - } + //} res.send(req.body) - //res.redirect('/#/defineData'); }); /* Delete Measure */ -router.post('/:id', function(req, res) { - console.log("deleted value is", req.params.id); - res.redirect('/'); +router.post('/delete', function(req, res) { + console.log("deleted value is", req.body.data.measName); + console.log(req.body.data.namespaceName); + var namespaceID; + Namespace.findNamespaceName(req.body.data.namespaceName, function(err, namespace) { + console.log(namespace); + namespaceID=namespace._id; + console.log(namespaceID); + Namespace.findByIdAndUpdate(namespaceID, { + $pull: { + measures: { + displayName: req.body.data.measName + } + } + }, function(err) { + if (err) { +return res.send(500).json(err); +} +console.log(err + "error"); +return res.send(200).send(); + }); + }); }); module.exports = router; diff --git a/routes/realTimeLogs/queryBuilder/expressions.js b/routes/realTimeLogs/queryBuilder/expressions.js index bf5ac2e..e8f8f4b 100644 --- a/routes/realTimeLogs/queryBuilder/expressions.js +++ b/routes/realTimeLogs/queryBuilder/expressions.js @@ -1,10 +1,12 @@ var express = require('express'); var router = express.Router(); var Expression = require('../../../models/dbConfig').expressionModel; - +var mainquery=require('../../../components/queryexecutor/mainquery.js'); +var datamapper=require('../../../components/RTdatamapper/RTdatamapper.js'); +var Namespace = require('../../../models/dbConfig').namespaceModel; router.post('/save', function(req, res, next) { - // console.log('****************************in express routes********************* '+ req.body.data); + // console.log('****************************in express routes********************* '+ JSON.stringify(req.body.data)); var temp=new Expression(req.body) Expression.addExp(temp,function(err,doc) { if (err) { @@ -12,6 +14,7 @@ var Expression = require('../../../models/dbConfig').expressionModel; res.send(err); } else{ + mainquery(req.body.data); res.send(doc); } }) @@ -33,6 +36,12 @@ Expression.searchQuery(search,function(err,doc) { +}); +router.post('/stream', function(req, res, next) { + console.log("rcvd namespace " +JSON.stringify(req.body.data)); + // console.log(Namespace); + datamapper(req.body.data,Namespace); + res.send("cha"); }); module.exports = router; diff --git a/vagrantfile b/vagrantfile index 896bc8e..453b930 100644 --- a/vagrantfile +++ b/vagrantfile @@ -36,6 +36,8 @@ Vagrant.configure(2) do |config| # Map the guest os port 8080 to host os port 8080 config.vm.network "forwarded_port", guest: 8585, host: 9595 + config.vm.network "forwarded_port", guest: 9000, host: 9000 + config.vm.network "forwarded_port", guest: 5050, host: 5050 if OS.windows? diff --git a/vagrantfile.orig b/vagrantfile.orig new file mode 100644 index 0000000..926bd22 --- /dev/null +++ b/vagrantfile.orig @@ -0,0 +1,63 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : +# Copyright 2016 Wipro Limited, NIIT Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This code is written by Prateek Reddy Yammanuru, Shiva Manognya Kandikuppa, Uday Kumar Mydam, Nirup TNL, Sandeep Reddy G, Deepak Kumar + + + +vagrant_cache_server = "172.23.238.253" + + +# Detect the current OS. node on windows needs some symlink magic to work. +module OS + def OS.windows? + (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil + end +end + +Vagrant.configure(2) do |config| + + config.vm.box = "stackroute/barebones-node" + config.vm.box_url = "http://#{vagrant_cache_server}/vagrant/boxes/stackroute-barebones-node.box" + config.vm.hostname = 'stackroute-node' + + # Map the guest os port 8080 to host os port 8080 +<<<<<<< HEAD +<<<<<<< HEAD + config.vm.network "forwarded_port", guest: 8585, host: 9595 +======= + config.vm.network "forwarded_port", guest: 8686, host: 8686 + config.vm.network "forwarded_port", guest: 5050, host: 5050 +>>>>>>> f40437ffcece50606bcf5f4d679a3909ad076708 +======= + config.vm.network "forwarded_port", guest: 8686, host: 8686 + config.vm.network "forwarded_port", guest: 5050, host: 5050 +>>>>>>> f40437ffcece50606bcf5f4d679a3909ad076708 + + if OS.windows? + + # enable symlinks between the host/gust filesystems + config.vm.provider "virtualbox" do |vb| + vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"] + end + + # Setup the softlinks + config.vm.provision :puppet do |puppet| + puppet.manifest_file = "windows.pp" + end + + end +end diff --git a/views/footer_includes.ejs b/views/footer_includes.ejs index 5698d45..53e02e7 100755 --- a/views/footer_includes.ejs +++ b/views/footer_includes.ejs @@ -85,6 +85,9 @@ This code is written by Ashish Gupta, Tarun Mohandas, Suriya Prakash, Srinivasa + + +