From ec97ddd679c7a0a2787268f2f85430c7df3e8ec4 Mon Sep 17 00:00:00 2001 From: inderpreetsingh Date: Sat, 15 Nov 2014 19:46:31 +0530 Subject: [PATCH 001/292] updating to meteor 1.0 --- OGV/.meteor/.finished-upgraders | 7 +++ OGV/.meteor/.id | 7 +++ OGV/.meteor/cordova-plugins | 1 + OGV/.meteor/packages | 23 +++---- OGV/.meteor/platforms | 2 + OGV/.meteor/release | 2 +- OGV/.meteor/versions | 91 +++++++++++++++++++++++++++ OGV/client/templates/filemanager.html | 2 +- OGV/client/views/file_manager.js | 2 +- OGV/lib/router.js | 22 +++---- 10 files changed, 130 insertions(+), 29 deletions(-) create mode 100644 OGV/.meteor/.finished-upgraders create mode 100644 OGV/.meteor/.id create mode 100644 OGV/.meteor/cordova-plugins create mode 100644 OGV/.meteor/platforms create mode 100644 OGV/.meteor/versions diff --git a/OGV/.meteor/.finished-upgraders b/OGV/.meteor/.finished-upgraders new file mode 100644 index 00000000..68df3d8d --- /dev/null +++ b/OGV/.meteor/.finished-upgraders @@ -0,0 +1,7 @@ +# This file contains information which helps Meteor properly upgrade your +# app when you run 'meteor update'. You should check it into version control +# with your project. + +notices-for-0.9.0 +notices-for-0.9.1 +0.9.4-platform-file diff --git a/OGV/.meteor/.id b/OGV/.meteor/.id new file mode 100644 index 00000000..35cd0959 --- /dev/null +++ b/OGV/.meteor/.id @@ -0,0 +1,7 @@ +# This file contains a token that is unique to your project. +# Check it into your repository along with the rest of this directory. +# It can be used for purposes such as: +# - ensuring you don't accidentally deploy one app on top of another +# - providing package authors with aggregated statistics + +7wsm8s16lskrlihi2vj diff --git a/OGV/.meteor/cordova-plugins b/OGV/.meteor/cordova-plugins new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/OGV/.meteor/cordova-plugins @@ -0,0 +1 @@ + diff --git a/OGV/.meteor/packages b/OGV/.meteor/packages index beceb0c3..01b5a96c 100644 --- a/OGV/.meteor/packages +++ b/OGV/.meteor/packages @@ -1,17 +1,12 @@ -# Meteor packages used by this project, one per line. -# -# 'meteor add' and 'meteor remove' will edit this file for you, -# but you can also edit it by hand. - standard-app-packages accounts-password +iron:router +cfs:collection-filters +cfs:standard-packages +dbarrett:dropzonejs +cfs:ui +alanning:roles +cfs:filesystem bootstrap -email -ogv-threejs -iron-router -collectionFS -cfs-filesystem -Dropzonejs -ui-dropped-event -cfs-ui -roles +ishwerdas:ogv-threejs + diff --git a/OGV/.meteor/platforms b/OGV/.meteor/platforms new file mode 100644 index 00000000..efeba1b5 --- /dev/null +++ b/OGV/.meteor/platforms @@ -0,0 +1,2 @@ +server +browser diff --git a/OGV/.meteor/release b/OGV/.meteor/release index db5f2c74..87bf4952 100644 --- a/OGV/.meteor/release +++ b/OGV/.meteor/release @@ -1 +1 @@ -0.8.1.3 +METEOR@1.0 diff --git a/OGV/.meteor/versions b/OGV/.meteor/versions new file mode 100644 index 00000000..e573539e --- /dev/null +++ b/OGV/.meteor/versions @@ -0,0 +1,91 @@ +accounts-base@1.1.2 +accounts-password@1.0.4 +alanning:roles@1.2.13 +application-configuration@1.0.3 +autoupdate@1.1.3 +base64@1.0.1 +binary-heap@1.0.1 +blaze-tools@1.0.1 +blaze@2.0.3 +boilerplate-generator@1.0.1 +bootstrap@1.0.1 +callback-hook@1.0.1 +cfs:access-point@0.0.0 +cfs:base-package@0.0.0 +cfs:collection-filters@0.0.0 +cfs:collection@0.0.0 +cfs:data-man@0.0.0 +cfs:file@0.0.0 +cfs:filesystem@0.0.0 +cfs:http-methods@0.0.24 +cfs:http-publish@0.0.0 +cfs:power-queue@0.0.1 +cfs:reactive-list@0.0.0 +cfs:reactive-property@0.0.0 +cfs:standard-packages@0.0.2 +cfs:storage-adapter@0.0.0 +cfs:tempstore@0.0.2 +cfs:ui@0.0.0 +cfs:upload-http@0.0.2 +cfs:worker@0.0.0 +check@1.0.2 +ctl-helper@1.0.4 +ctl@1.0.2 +dbarrett:dropzonejs@3.10.3 +ddp@1.0.11 +deps@1.0.5 +ejson@1.0.4 +email@1.0.4 +fastclick@1.0.1 +follower-livedata@1.0.2 +geojson-utils@1.0.1 +html-tools@1.0.2 +htmljs@1.0.2 +http@1.0.8 +id-map@1.0.1 +iron:controller@1.0.0 +iron:core@1.0.0 +iron:dynamic-template@1.0.0 +iron:layout@1.0.0 +iron:location@1.0.1 +iron:middleware-stack@1.0.0 +iron:router@1.0.1 +iron:url@1.0.0 +ishwerdas:ogv-threejs@1.0.1 +jquery@1.0.1 +json@1.0.1 +launch-screen@1.0.0 +livedata@1.0.11 +localstorage@1.0.1 +logging@1.0.5 +meteor-platform@1.2.0 +meteor@1.1.3 +minifiers@1.1.2 +minimongo@1.0.5 +mobile-status-bar@1.0.1 +mongo-livedata@1.0.6 +mongo@1.0.8 +npm-bcrypt@0.7.7 +observe-sequence@1.0.3 +ordered-dict@1.0.1 +raix:eventemitter@0.0.1 +random@1.0.1 +reactive-dict@1.0.4 +reactive-var@1.0.3 +reload@1.1.1 +retry@1.0.1 +routepolicy@1.0.2 +service-configuration@1.0.2 +session@1.0.4 +sha@1.0.1 +spacebars-compiler@1.0.3 +spacebars@1.0.3 +srp@1.0.1 +standard-app-packages@1.0.3 +templating@1.0.9 +tracker@1.0.3 +ui@1.0.4 +underscore@1.0.1 +url@1.0.2 +webapp-hashing@1.0.1 +webapp@1.1.4 diff --git a/OGV/client/templates/filemanager.html b/OGV/client/templates/filemanager.html index d8f8ec60..03e190be 100644 --- a/OGV/client/templates/filemanager.html +++ b/OGV/client/templates/filemanager.html @@ -1,4 +1,4 @@ - \ No newline at end of file diff --git a/OGV/client/views/file_manager.js b/OGV/client/views/file_manager.js index 10445f80..5229ccc0 100644 --- a/OGV/client/views/file_manager.js +++ b/OGV/client/views/file_manager.js @@ -32,7 +32,7 @@ Template.filemanager.helpers({ }); Template.filemanager.events({ - "click .delete": function() + "click #deleteModel": function() { var txt; var r = confirm("Are you sure, you want to delete your model?"); diff --git a/OGV/client/views/model_feed.js b/OGV/client/views/model_feed.js index e2dc6d25..0a9b8da4 100644 --- a/OGV/client/views/model_feed.js +++ b/OGV/client/views/model_feed.js @@ -36,12 +36,12 @@ Template.modelFeed.helpers({ */ models: function() { - var popularityIndex = 1; + var popularityIndex = 2; var popularLove = Lovers.find({countLovers: {$gte: popularityIndex}}).fetch(); var popularLoveIds = _.pluck(popularLove, "postId"); var currentUser = Meteor.user(); - model = ModelFiles.find( {$or: [ {owner: {$in: currentUser.profile.following}}, {_id: {$in: popularLoveIds}} ] }, {sort:{timeUploaded:-1}}); + model = ModelFiles.find( {$or: [ {owner: {$in: currentUser.profile.following} }, {_id: {$in: popularLoveIds}} ] }, {sort:{timeUploaded:-1}}); if (model.count()) { return model; } else { diff --git a/OGV/client/views/profile_page.js b/OGV/client/views/profile_page.js index 77d81e0a..ea2fe4ff 100644 --- a/OGV/client/views/profile_page.js +++ b/OGV/client/views/profile_page.js @@ -80,7 +80,11 @@ Template.profilePage.helpers({ var currentProfile = Meteor.users.findOne(otherId); var followings = currentProfile.profile.following; - return (followings.length - 1); + if (followings.length == 0){ + return 0; + } else { + return (followings.length - 1); + } }, /** diff --git a/OGV/public/icons/delete.png b/OGV/public/icons/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff0cc7e3803debb0b6eda6db610fbd67528fd5a GIT binary patch literal 67354 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

&Qxgvi(hRL9JBXD|+@j1z-W3?l=KQvM~f_%3? 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 Date: Thu, 2 Jul 2015 08:39:15 +0530 Subject: [PATCH 087/292] validation in about section - user and model, showing number of characters left --- OGV/client/styles/styles.css | 1 + .../templates/authentication/login.html | 8 +++---- OGV/client/templates/cfs_uploader.html | 16 +++++++++++++- OGV/client/templates/dashboard.html | 22 +++++++++++++++---- OGV/client/templates/profile_page.html | 4 ++-- 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index 1e0ab4bf..940c5a6b 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -608,6 +608,7 @@ textarea { top:-210px; left: 380px; width:50%; + height:100%; } #profileModelFeedContainer { diff --git a/OGV/client/templates/authentication/login.html b/OGV/client/templates/authentication/login.html index 3999495e..be3f9804 100644 --- a/OGV/client/templates/authentication/login.html +++ b/OGV/client/templates/authentication/login.html @@ -10,11 +10,11 @@
- - - + + + - + accou{{> loginButtons}}
Forgot Password diff --git a/OGV/client/templates/cfs_uploader.html b/OGV/client/templates/cfs_uploader.html index ad15dc01..05f4a4a6 100644 --- a/OGV/client/templates/cfs_uploader.html +++ b/OGV/client/templates/cfs_uploader.html @@ -26,7 +26,8 @@

Upload File

Provide a short description about your model

- + +

*200 characters left

An image that will be used as a thumbnail for your model, the preferred size is 500 X 300

@@ -66,4 +67,17 @@

Upload File

+ + diff --git a/OGV/client/templates/dashboard.html b/OGV/client/templates/dashboard.html index eafdafb7..1d4e6927 100644 --- a/OGV/client/templates/dashboard.html +++ b/OGV/client/templates/dashboard.html @@ -3,15 +3,16 @@

User Settings

- + - + +

*200 characters left

+

What you want to be known as around

-

Upload a photo of size not more than 300 X 300

@@ -53,5 +54,18 @@

Admin Settings

- {{/if}} + {{/if}} + + diff --git a/OGV/client/templates/profile_page.html b/OGV/client/templates/profile_page.html index 5a0fd6f2..5b713282 100644 --- a/OGV/client/templates/profile_page.html +++ b/OGV/client/templates/profile_page.html @@ -17,8 +17,8 @@

{{ person.profile.name }}

{{/if}} {{/if}} - -

{{ person.profile.bio }}

+
+

{{ person.profile.bio }}

Here Since: {{ person.createdAt }}
From 30f66c8cad7ecad533b17273bb789ddc3a172382 Mon Sep 17 00:00:00 2001 From: deepakkumarsharma Date: Thu, 2 Jul 2015 22:48:07 +0530 Subject: [PATCH 088/292] New feedback icon --- OGV/client/landingPage.html | 4 ++-- OGV/client/styles/styles.css | 6 +++--- OGV/public/icons/feedback.png | Bin 1418 -> 5341 bytes OGV/public/share.png | Bin 2649 -> 0 bytes 4 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 OGV/public/share.png diff --git a/OGV/client/landingPage.html b/OGV/client/landingPage.html index be7f7986..4245c0d5 100644 --- a/OGV/client/landingPage.html +++ b/OGV/client/landingPage.html @@ -77,13 +77,13 @@

It's a matter of freedom, not the price.

Feedback
-
+

-
+
diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index 9ff03791..cbdae68d 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -1002,7 +1002,7 @@ input:focus { } .image-row { - padding-top: 3.7em; + padding-top: 1em; } #email { @@ -1014,8 +1014,8 @@ input:focus { font-weight: 200; } .circular { - width: 250px; - height: 250px; + width: 300px; + height: 300px; } @media (max-width: 767px) { diff --git a/OGV/public/icons/feedback.png b/OGV/public/icons/feedback.png index 5479d7324583b0dd6d14b45c6ce69537ef012491..343d368888fea21783768c8ff79396670bce13e1 100644 GIT binary patch literal 5341 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 GQ~nFxAp@8I literal 1418 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 Date: Fri, 3 Jul 2015 01:32:01 +0530 Subject: [PATCH 089/292] google+ profile image, feedback slide-in window, character limit --- OGV/client/index.html | 3 +- OGV/client/layout.html | 22 ++ OGV/client/lib/compatibility/classie.js | 70 +++++ .../lib/compatibility/modernizr.custom.js | 289 ++++++++++++++++++ OGV/client/styles/styles.css | 57 +++- .../templates/authentication/login.html | 2 +- OGV/client/templates/cfs_uploader.html | 4 +- OGV/client/templates/dashboard.html | 6 +- OGV/client/templates/feedback.html | 70 +++-- OGV/client/templates/model_viewer.html | 6 + OGV/client/templates/profile_page.html | 5 +- OGV/client/views/dashboard.js | 14 +- OGV/client/views/model_viewer.js | 7 +- OGV/client/views/profile_page.js | 24 +- OGV/server/accounts.js | 5 + 15 files changed, 536 insertions(+), 48 deletions(-) create mode 100644 OGV/client/lib/compatibility/classie.js create mode 100755 OGV/client/lib/compatibility/modernizr.custom.js diff --git a/OGV/client/index.html b/OGV/client/index.html index 8d342df5..f4f0eadb 100644 --- a/OGV/client/index.html +++ b/OGV/client/index.html @@ -5,6 +5,5 @@ {{else}} {{> resetPassword}} - {{/unless}} - + {{/unless}} diff --git a/OGV/client/layout.html b/OGV/client/layout.html index fea2f789..22329b37 100644 --- a/OGV/client/layout.html +++ b/OGV/client/layout.html @@ -6,5 +6,27 @@ {{> yield}}
+ + + + + + diff --git a/OGV/client/lib/compatibility/classie.js b/OGV/client/lib/compatibility/classie.js new file mode 100644 index 00000000..f6322ed7 --- /dev/null +++ b/OGV/client/lib/compatibility/classie.js @@ -0,0 +1,70 @@ +/*! + * classie - class helper functions + * from bonzo https://github.com/ded/bonzo + * + * classie.has( elem, 'my-class' ) -> true/false + * classie.add( elem, 'my-new-class' ) + * classie.remove( elem, 'my-unwanted-class' ) + * classie.toggle( elem, 'my-class' ) + */ + +/*jshint browser: true, strict: true, undef: true */ + +( function( window ) { + +'use strict'; + +// class helper functions from bonzo https://github.com/ded/bonzo + +function classReg( className ) { + return new RegExp("(^|\\s+)" + className + "(\\s+|$)"); +} + +// classList support for class management +// altho to be fair, the api sucks because it won't accept multiple classes at once +var hasClass, addClass, removeClass; + +if ( 'classList' in document.documentElement ) { + hasClass = function( elem, c ) { + return elem.classList.contains( c ); + }; + addClass = function( elem, c ) { + elem.classList.add( c ); + }; + removeClass = function( elem, c ) { + elem.classList.remove( c ); + }; +} +else { + hasClass = function( elem, c ) { + return classReg( c ).test( elem.className ); + }; + addClass = function( elem, c ) { + if ( !hasClass( elem, c ) ) { + elem.className = elem.className + ' ' + c; + } + }; + removeClass = function( elem, c ) { + elem.className = elem.className.replace( classReg( c ), ' ' ); + }; +} + +function toggleClass( elem, c ) { + var fn = hasClass( elem, c ) ? removeClass : addClass; + fn( elem, c ); +} + +window.classie = { + // full names + hasClass: hasClass, + addClass: addClass, + removeClass: removeClass, + toggleClass: toggleClass, + // short names + has: hasClass, + add: addClass, + remove: removeClass, + toggle: toggleClass +}; + +})( window ); \ No newline at end of file diff --git a/OGV/client/lib/compatibility/modernizr.custom.js b/OGV/client/lib/compatibility/modernizr.custom.js new file mode 100755 index 00000000..4097a53b --- /dev/null +++ b/OGV/client/lib/compatibility/modernizr.custom.js @@ -0,0 +1,289 @@ +/* Modernizr 2.6.2 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-shiv-cssclasses-load + */ +; +window.Modernizr=function(a,b,c) +{ + function u(a) + { + j.cssText=a + } + + function v(a,b) + { + return u(prefixes.join(a+";")+(b||"")) + } + + function w(a,b) + { + return typeof a===b + } + + function x(a,b) + { + return!!~(""+a).indexOf(b) + } + + function y(a,b,d) + { + for(var e in a) + { + var f=b[a[e]]; + if(f!==c) + return d===!1?a[e]:w(f,"function")?f.bind(d||b):f + } + return!1 + } + + var d="2.6.2", + e={}, + f=!0, + g=b.documentElement, + h="modernizr", + i=b.createElement(h), + j=i.style, + k, + l={}.toString, + m={}, n={}, o={}, p=[], q=p.slice, r, + s={}.hasOwnProperty, t; + + !w(s,"undefined")&&!w(s.call,"undefined")?t=function(a,b) + { + return s.call(a,b) + }: + t=function(a,b) + { + return b in a&&w(a.constructor.prototype[b],"undefined") + } ,Function.prototype.bind||(Function.prototype.bind=function(b) + { + var c=this; + if(typeof c!="function") + throw new TypeError; + var d=q.call(arguments,1),e=function() + { + if(this instanceof e) + { + var a=function(){}; + a.prototype=c.prototype; + var f=new a,g=c.apply(f,d.concat(q.call(arguments))); + return Object(g)===g?g:f + } + return c.apply(b,d.concat(q.call(arguments))) + }; + return e + }); + for(var z in m)t(m,z)&&(r=z.toLowerCase(),e[r]=m[z](),p.push((e[r]?"":"no-")+r)); + return e.addTest=function(a,b) + { + if(typeof a=="object")for(var d in a)t(a,d)&&e.addTest(d,a[d]); + else + {a=a.toLowerCase(); + if(e[a]!==c)return e; + b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b + } + return e + },u(""),i=k=null,function(a,b) + { + function k(a,b) + { + var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement; + return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild) + } + function l() + { + var a=r.elements; + return typeof a=="string"?a.split(" "):a + } + function m(a) + { + var b=i[a[g]]; + return b||(b={},h++,a[g]=h,i[h]=b),b + } + function n(a,c,f) + { + c||(c=b); + if(j)return c.createElement(a); + f||(f=m(c)); + var g; + return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g + } + function o(a,c) + { + a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a); + var d=c.frag.cloneNode(),e=0,f=l(),g=f.length; + for(;eOR SIGN IN WITH

- accou{{> loginButtons}} + {{> loginButtons}} Forgot Password diff --git a/OGV/client/templates/cfs_uploader.html b/OGV/client/templates/cfs_uploader.html index 05f4a4a6..5d373f26 100644 --- a/OGV/client/templates/cfs_uploader.html +++ b/OGV/client/templates/cfs_uploader.html @@ -26,8 +26,8 @@

Upload File

Provide a short description about your model

- -

*200 characters left

+ +

*150 characters left

An image that will be used as a thumbnail for your model, the preferred size is 500 X 300

diff --git a/OGV/client/templates/dashboard.html b/OGV/client/templates/dashboard.html index 1d4e6927..70abdee6 100644 --- a/OGV/client/templates/dashboard.html +++ b/OGV/client/templates/dashboard.html @@ -5,8 +5,8 @@

User Settings

- -

*200 characters left

+ +

*150 characters left

@@ -15,7 +15,7 @@

User Settings

Upload a photo of size not more than 300 X 300

- +


diff --git a/OGV/client/templates/feedback.html b/OGV/client/templates/feedback.html index e437bf72..7db47daa 100644 --- a/OGV/client/templates/feedback.html +++ b/OGV/client/templates/feedback.html @@ -1,31 +1,47 @@ diff --git a/OGV/client/templates/model_viewer.html b/OGV/client/templates/model_viewer.html index bbeb02bc..bd15ebb9 100644 --- a/OGV/client/templates/model_viewer.html +++ b/OGV/client/templates/model_viewer.html @@ -1,4 +1,5 @@ \ No newline at end of file diff --git a/OGV/lib/router.js b/OGV/lib/router.js index 413f162a..b46b97f5 100644 --- a/OGV/lib/router.js +++ b/OGV/lib/router.js @@ -46,6 +46,7 @@ Router.map(function() { path : '/' }); this.route('signUp', {path : 'sign-up'}); + this.route('feedbackThanks', {path : 'thanks'}); this.route('logIn', {path : 'log-in'}); this.route('cfsUploader', {path : 'upload'}); this.route('notVerified', {path : 'not-verified'}); From 9d98d2cb167f9de85e19ea943729bcbf297b5c02 Mon Sep 17 00:00:00 2001 From: Shubham Chauhan Date: Sun, 5 Jul 2015 08:13:37 +0530 Subject: [PATCH 093/292] sub divisions on newsfeed page for networking suggestions --- OGV/client/styles/styles.css | 26 +++++++++++++----- OGV/client/templates/feedback.html | 2 +- OGV/client/templates/model_feed.html | 10 ++++--- OGV/client/templates/model_viewer.html | 15 +++++++---- OGV/client/templates/profilepage_sidebar.html | 27 +++++++++++++++++++ OGV/client/views/profile_page.js | 2 +- OGV/client/views/profilepage_sidebar.js | 8 ++++++ 7 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 OGV/client/templates/profilepage_sidebar.html create mode 100644 OGV/client/views/profilepage_sidebar.js diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index b0040715..f91ed39a 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -23,7 +23,7 @@ h2 { } .page-container { - max-width:900px; + max-width:950px; margin:auto; } @@ -351,16 +351,17 @@ input:focus { } .feed-wrapper{ - font-size: 14px; + font-size: 14px; color: #555; margin-left: 5px; line-height: 1.5; max-width: 700px; - margin:50px auto 50px auto; + /*top, right, bottom, left*/ + margin:10px auto 50px -10px; } .feed-item { - margin:10px 0px 10px 0px; + margin:20px 0px 10px 0px; overflow:hidden; } @@ -369,7 +370,11 @@ input:focus { margin-left:10px; } - +.profile-info-section{ + float:right; + margin-left:20px; + margin-top:48px; +} .post-meta { padding:5px 5px; @@ -410,6 +415,15 @@ input:focus { border: 1px solid #dadada; } +.profile-info-content { + padding:10px 10px; + width:300px; + max-width:300px; + background:#fff; + border-radius:5px; + margin-top:20px; + border: 1px solid #dadada; +} .model-preview { margin: 10px 0px 10px 0px; @@ -678,5 +692,5 @@ hr { { background-color: white; padding:5% 5% 5% 5%; - border-radius: 15px; + border-radius: 15px; } \ No newline at end of file diff --git a/OGV/client/templates/feedback.html b/OGV/client/templates/feedback.html index 32b0a0c8..7df4b0d6 100644 --- a/OGV/client/templates/feedback.html +++ b/OGV/client/templates/feedback.html @@ -19,7 +19,7 @@
Love us / have suggestions / ideas / feature requests?

Message
- +

*500 characters left

*All fields are compulsory to fill

diff --git a/OGV/client/templates/model_feed.html b/OGV/client/templates/model_feed.html index 906f9598..2f55ef02 100644 --- a/OGV/client/templates/model_feed.html +++ b/OGV/client/templates/model_feed.html @@ -1,5 +1,7 @@ @@ -39,10 +42,9 @@

OGV is hungry, feed some models

- - - + + diff --git a/OGV/client/templates/profilepage_sidebar.html b/OGV/client/templates/profilepage_sidebar.html new file mode 100644 index 00000000..e3b2f793 --- /dev/null +++ b/OGV/client/templates/profilepage_sidebar.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/OGV/client/views/profile_page.js b/OGV/client/views/profile_page.js index 5809e3fa..8098d35d 100644 --- a/OGV/client/views/profile_page.js +++ b/OGV/client/views/profile_page.js @@ -70,7 +70,7 @@ Template.profilePage.helpers({ } }, - thisUser: function() + person: function() { var parts = location.href.split('/'); var otherId = parts.pop(); //id of user whose page is being visited diff --git a/OGV/client/views/profilepage_sidebar.js b/OGV/client/views/profilepage_sidebar.js new file mode 100644 index 00000000..b262abe6 --- /dev/null +++ b/OGV/client/views/profilepage_sidebar.js @@ -0,0 +1,8 @@ +Template.profileSidebar.helpers({ + userImg: function() + { + var currentUser = Meteor.user(); + var picId = currentUser.profile.pic; + return ProfilePictures.findOne(picId).url(); + } +}); From f94fdff0cd9d92fe088580adb058c989bedb4e8f Mon Sep 17 00:00:00 2001 From: Shubham Chauhan Date: Mon, 6 Jul 2015 01:42:39 +0530 Subject: [PATCH 094/292] template for newsfeed sidebar is set --- OGV/client/styles/styles.css | 5 +- OGV/client/templates/profile_page.html | 17 +++- OGV/client/templates/profilepage_sidebar.html | 66 +++++++++++++-- OGV/client/views/model_feed.js | 9 +- OGV/client/views/profilepage_sidebar.js | 83 +++++++++++++++++-- 5 files changed, 160 insertions(+), 20 deletions(-) diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index f91ed39a..4947feb0 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -391,10 +391,9 @@ input:focus { width: 70px; height:70px; background: #333; - border: 1px solid #333; + border: 0.5px solid #333; background-size:cover !important; - background-position: center !important; - border-radius:50%; + background-position: center !important; } .user-profile-pic { diff --git a/OGV/client/templates/profile_page.html b/OGV/client/templates/profile_page.html index f873cde8..9d543da9 100644 --- a/OGV/client/templates/profile_page.html +++ b/OGV/client/templates/profile_page.html @@ -13,7 +13,7 @@

{{ person.profile.name }}

{{#if urlUser}} {{#if currentFollowsThis}} - + {{else}} {{/if}} @@ -28,6 +28,21 @@

{{ person.profile.name }}


{{> profileModelFeed}} + + diff --git a/OGV/client/templates/profilepage_sidebar.html b/OGV/client/templates/profilepage_sidebar.html index e3b2f793..7d363b0f 100644 --- a/OGV/client/templates/profilepage_sidebar.html +++ b/OGV/client/templates/profilepage_sidebar.html @@ -1,27 +1,79 @@ \ No newline at end of file diff --git a/OGV/client/views/model_feed.js b/OGV/client/views/model_feed.js index 0a9b8da4..b641f574 100644 --- a/OGV/client/views/model_feed.js +++ b/OGV/client/views/model_feed.js @@ -36,13 +36,14 @@ Template.modelFeed.helpers({ */ models: function() { - var popularityIndex = 2; + /*var popularityIndex = 2; var popularLove = Lovers.find({countLovers: {$gte: popularityIndex}}).fetch(); - var popularLoveIds = _.pluck(popularLove, "postId"); + var popularLoveIds = _.pluck(popularLove, "postId");*/ var currentUser = Meteor.user(); - model = ModelFiles.find( {$or: [ {owner: {$in: currentUser.profile.following} }, {_id: {$in: popularLoveIds}} ] }, {sort:{timeUploaded:-1}}); - if (model.count()) { + /*model = ModelFiles.find( {$or: [ {owner: {$in: currentUser.profile.following} }, {_id: {$in: popularLoveIds}} ] }, {sort:{timeUploaded:-1}});*/ + model = ModelFiles.find( {owner: {$in: currentUser.profile.following} }, {sort:{timeUploaded:-1}}); + if (model.count()) { return model; } else { return false; diff --git a/OGV/client/views/profilepage_sidebar.js b/OGV/client/views/profilepage_sidebar.js index b262abe6..71a14207 100644 --- a/OGV/client/views/profilepage_sidebar.js +++ b/OGV/client/views/profilepage_sidebar.js @@ -1,8 +1,81 @@ +Template.profileSidebar.events({ + 'click #followButton': function(e, t) + { + + }, + + 'click #unfollowButton': function(e, t) + { + + } +}); + + Template.profileSidebar.helpers({ - userImg: function() - { - var currentUser = Meteor.user(); - var picId = currentUser.profile.pic; - return ProfilePictures.findOne(picId).url(); + ownerInfo: function() + { + return Meteor.users.find({}); + }, + + ownerImg: function() + { + var owner = Meteor.users.find({}).fetch(); + var picIds = _.pluck(owner, "profile.pic"); + return ProfilePictures.find({owner: {$in :picIds}}); + }, + + suggestedModel: function() + { + return ModelFiles.find( {}, {sort:{timeUploaded:-1}}); } }); + + +/** +* returns details about the current user to be displayed on the newsfeed +*/ +Template.profileSidebar.myInfo = function() +{ + var currentUser = Meteor.user(); + picId = currentUser.profile.pic; + var followings = currentUser.profile.following; + var followers = currentUser.profile.follower; + var numberfollowings, numberfollowers, numberModels; + + if(followings.length == 0){ + numberfollowings = 0 + } else { + numberfollowings = followings.length - 1; + } + + if ( !followers ){ + numberfollowers = 0; + } else { + numberfollowers = followers.length; + } + + numberModels = ModelFiles.find({owner: currentUser._id}).count(); + return { + myUser: currentUser, + userImg: ProfilePictures.findOne(picId), + followerCount: numberfollowers, + followingCount: numberfollowings, + modelCount: numberModels + }; + +} + +Template.profileSidebar.currentFollowsThis = function() +{ + var parts = location.href.split('/'); + var otherId = parts.pop(); //id of user whose page is being visited + var currentUser = Meteor.user(); + var currentFollowsThis = Meteor.users.findOne({_id: currentUser._id, "profile.following": otherId}); + + if( currentFollowsThis ){ + return currentFollowsThis; + } + else{ + return null; + } +} \ No newline at end of file From e56f969c8cee019a5d8c37c3690ea05ad69d64aa Mon Sep 17 00:00:00 2001 From: Shubham Chauhan Date: Mon, 6 Jul 2015 01:54:49 +0530 Subject: [PATCH 095/292] solved repeated saving of profile pictures problem --- OGV/client/views/dashboard.js | 9 +++++++-- OGV/client/views/profilepage_sidebar.js | 4 +++- OGV/collections/profile.js | 5 ++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/OGV/client/views/dashboard.js b/OGV/client/views/dashboard.js index 6c4af5d6..61dc93ce 100644 --- a/OGV/client/views/dashboard.js +++ b/OGV/client/views/dashboard.js @@ -50,7 +50,7 @@ Template.dashboard.events({ if (!picId) { picId = currentUser.profile.pic; } - + Meteor.users.update( currentUser._id,{ $set: {'profile.bio' : userBio, 'profile.name': userName, 'profile.pic': picId}}, function(error, res) { if (error) { throwError(error.reason); @@ -64,7 +64,12 @@ Template.dashboard.events({ var fsFile = new FS.File(e.target[2].files[0]); console.log(fsFile); fsFile.user = currentUser._id; - + + var prevProfilePicture = ProfilePictures.findOne({user: currentUser._id}); + if(typeof prevProfilePicture != 'undefined'){ + ProfilePictures.remove(prevProfilePicture._id); + } + ProfilePictures.insert(fsFile, function(err, dpFile) { if (err) { throwError(err.reason); diff --git a/OGV/client/views/profilepage_sidebar.js b/OGV/client/views/profilepage_sidebar.js index 71a14207..9e6d5b0f 100644 --- a/OGV/client/views/profilepage_sidebar.js +++ b/OGV/client/views/profilepage_sidebar.js @@ -27,7 +27,9 @@ Template.profileSidebar.helpers({ suggestedModel: function() { return ModelFiles.find( {}, {sort:{timeUploaded:-1}}); - } + }, + + }); diff --git a/OGV/collections/profile.js b/OGV/collections/profile.js index 31275be4..e2e98af3 100644 --- a/OGV/collections/profile.js +++ b/OGV/collections/profile.js @@ -54,5 +54,8 @@ ProfilePictures.allow({ download: function(userId, file) { return true; - } + }, + remove: function (userId, file) { + return userId && file.user === userId; + } }); From bca7e1896391759b486d216edb19b3730cf865df Mon Sep 17 00:00:00 2001 From: Shubham Chauhan Date: Mon, 6 Jul 2015 03:41:48 +0530 Subject: [PATCH 096/292] suggested users backend, added countModels field in user, updating number of models on upload/deletion --- OGV/client/styles/styles.css | 4 +- OGV/client/templates/model_feed.html | 2 +- OGV/client/templates/newsfeed_sidebar.html | 78 +++++++++++++++ OGV/client/templates/profile_page.html | 9 +- OGV/client/templates/profilepage_sidebar.html | 79 --------------- OGV/client/views/cfs_uploader.js | 11 ++- OGV/client/views/file_manager.js | 3 +- OGV/client/views/model_meta.js | 7 +- OGV/client/views/newsfeed_sidebar.js | 95 +++++++++++++++++++ OGV/client/views/profilepage_sidebar.js | 83 ---------------- 10 files changed, 197 insertions(+), 174 deletions(-) create mode 100644 OGV/client/templates/newsfeed_sidebar.html delete mode 100644 OGV/client/templates/profilepage_sidebar.html create mode 100644 OGV/client/views/newsfeed_sidebar.js delete mode 100644 OGV/client/views/profilepage_sidebar.js diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index 4947feb0..2bfdfaae 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -370,7 +370,7 @@ input:focus { margin-left:10px; } -.profile-info-section{ +.newsfeed-info-section{ float:right; margin-left:20px; margin-top:48px; @@ -414,7 +414,7 @@ input:focus { border: 1px solid #dadada; } -.profile-info-content { +.newsfeed-info-content { padding:10px 10px; width:300px; max-width:300px; diff --git a/OGV/client/templates/model_feed.html b/OGV/client/templates/model_feed.html index 2f55ef02..41a4f4ba 100644 --- a/OGV/client/templates/model_feed.html +++ b/OGV/client/templates/model_feed.html @@ -1,5 +1,5 @@ + \ No newline at end of file diff --git a/OGV/client/templates/model_feed.html b/OGV/client/templates/model_feed.html index 41a4f4ba..c68996ce 100644 --- a/OGV/client/templates/model_feed.html +++ b/OGV/client/templates/model_feed.html @@ -20,7 +20,7 @@

You seem to be new here, your newsfeed looks empty

diff --git a/OGV/client/templates/newsfeed_sidebar.html b/OGV/client/templates/newsfeed_sidebar.html index 88ca517b..b80d62b9 100644 --- a/OGV/client/templates/newsfeed_sidebar.html +++ b/OGV/client/templates/newsfeed_sidebar.html @@ -1,7 +1,7 @@ diff --git a/OGV/client/views/model_viewer.js b/OGV/client/views/model_viewer.js index dd46f574..11b03332 100644 --- a/OGV/client/views/model_viewer.js +++ b/OGV/client/views/model_viewer.js @@ -88,7 +88,7 @@ Template.modelViewer.helpers({ ownerId: function() { var parts = location.href.split('/'); - //id of model whose page is being visited + // Id of model whose page is being visited var modelId = parts.pop(); var model = ModelFiles.findOne(modelId); return model.owner; @@ -142,7 +142,7 @@ var windowHalfY = window.innerHeight / 2; var finalRotationY var guiControls, OBJMaterial, OBJMaterialOver; -var keyboard = new KeyboardState(); +// var keyboard = new KeyboardState(); var renderColour = 0xafa8a8; function getGrid(){ @@ -161,15 +161,8 @@ function init() * Grabs the model-container div from template into a variable * named container, and sets up the scene */ - container = document.getElementById('model-container'); - controller = document.getElementById('controller'); - camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000); - camera.position.z = 1000; - camera.position.x = 1000; - camera.position.y = 1000; - - + controller = document.getElementById('modelController'); /** * Create a scene, that will hold all our elements such @@ -194,7 +187,14 @@ function init() directionalLight = new THREE.PointLight(0xaaaaaa); directionalLight.position = camera.position; scene.add(directionalLight); - + + /** Axes */ + axes = new THREE.AxisHelper(10000); + scene.add(axes); + + /** Grid */ + grid = new THREE.GridHelper(3000, 100); + scene.add(grid); /** * Loader Managerial tasks @@ -202,13 +202,14 @@ function init() manager = new THREE.LoadingManager(); manager.onProgress = function(item, loaded, total) { - console.log(item, loaded, total); + console.log(item, loaded, total); }; /** * Adds the model to the viewer aka loads OBJ files * using OBJ-Loader */ + group = new THREE.Object3D(); loader = new THREE.OBJLoader(manager); @@ -230,7 +231,7 @@ function init() object.position.y = 0.1; object.rotation.z = 90 * Math.PI/180; object.rotation.x = -90 * Math.PI/180; - + group.add(object); scene.add(group); }); @@ -254,7 +255,7 @@ function init() } - /** + /** * datGUI variable initializations */ guiControls = new function() { @@ -276,17 +277,18 @@ function init() } //Initialize dat.GUI + datGUI = new dat.GUI({autoPlace:false}); - /** + /** * Add folders/sub categories in controls */ - //consisting of changes to be shown in the model + // Consisting of changes to be shown in the model var modelGui = datGUI.addFolder("Model"); - //activated OBJMAterialOver that overlaps the existing models + // Activated OBJMAterialOver that overlaps the existing models var overmodelGui = datGUI.addFolder("WireFrame + Model"); - /** + /** * datGUI GUI and of variables defined above functionality */ modelGui.add(guiControls, 'visible').onChange(function (e) { @@ -340,7 +342,7 @@ function init() * Sets size and color to renderer */ renderer.setSize(window.innerWidth, window.innerHeight); - renderer.setClearColor(0xa1a1a1, 1); + renderer.setClearColor(0x555555, 1); controller.appendChild(datGUI.domElement); container.appendChild(renderer.domElement); @@ -453,4 +455,4 @@ function onKeyDown( event ) camera.lookAt(scene.position); break; } -} +} From 0f7388b61d22e5110e72c732ddb38b518737c991 Mon Sep 17 00:00:00 2001 From: deepakkumarsharma Date: Sat, 15 Aug 2015 22:53:34 +0530 Subject: [PATCH 113/292] Removed garbage files --- OGV/client/styles/styles.css | 2 +- OGV/client/templates/feedback.html | 50 ----------------------- OGV/client/templates/feedback_thanks.html | 19 --------- 3 files changed, 1 insertion(+), 70 deletions(-) delete mode 100644 OGV/client/templates/feedback.html delete mode 100644 OGV/client/templates/feedback_thanks.html diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index 860056b2..47421bb8 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -235,7 +235,7 @@ textarea { .help-text { font-size: 14px; font-style: italic; - color: #444; + color: #B6B6B4; } .primary-btn { diff --git a/OGV/client/templates/feedback.html b/OGV/client/templates/feedback.html deleted file mode 100644 index 7df4b0d6..00000000 --- a/OGV/client/templates/feedback.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - diff --git a/OGV/client/templates/feedback_thanks.html b/OGV/client/templates/feedback_thanks.html deleted file mode 100644 index d14072ea..00000000 --- a/OGV/client/templates/feedback_thanks.html +++ /dev/null @@ -1,19 +0,0 @@ - \ No newline at end of file From eccfdeade6d4686308c8f9387bd0c356c8918b7c Mon Sep 17 00:00:00 2001 From: deepakkumarsharma Date: Mon, 17 Aug 2015 02:57:28 +0530 Subject: [PATCH 114/292] Merged duplicate my-models page into single page --- OGV/client/landingPage.html | 2 +- OGV/client/styles/styles.css | 63 ++++++++++++++++++++----- OGV/client/templates/404.html | 2 +- OGV/client/templates/filemanager.html | 27 ----------- OGV/client/templates/menu.html | 7 ++- OGV/client/templates/model_feed.html | 12 +++-- OGV/client/templates/profile_page.html | 62 +++++++++++++----------- OGV/client/views/file_manager.js | 62 ------------------------ OGV/client/views/model_meta.js | 4 +- OGV/client/views/profile_page.js | 21 ++++++++- OGV/lib/router.js | 14 +----- OGV/public/icons/explore.png | Bin 906 -> 2421 bytes 12 files changed, 122 insertions(+), 154 deletions(-) delete mode 100644 OGV/client/templates/filemanager.html delete mode 100644 OGV/client/views/file_manager.js diff --git a/OGV/client/landingPage.html b/OGV/client/landingPage.html index ad1e6201..f3b9eb82 100644 --- a/OGV/client/landingPage.html +++ b/OGV/client/landingPage.html @@ -46,7 +46,7 @@

Embed and share your models anywhere on social sites, blog

-

Download Options

+

Download

Fetch, download and use the 3D models for printing and more.

diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index 47421bb8..4be53ce8 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -90,7 +90,9 @@ h2 { .fa { color: #444; } - +.fa-cog { + color: #fafafa; +} .universal-header { width:100%; @@ -468,16 +470,6 @@ input:focus { width:100px; /* at screens less than 600px it will be 100% */ } -.user-image{ - width: 70px; - height:70px; - background: #333; - border: 1px solid #333; - background-size:cover !important; - background-position: center !important; - border-radius:50%; -} - .user-profile-pic { width: 200px; height: 200px; @@ -559,7 +551,7 @@ input:focus { display:block; } .comments-wrapper { - margin-top:10px; + margin-top:5px; } .comments { display:none; @@ -1537,6 +1529,51 @@ svg { } +/* + * Profile Page CSS + */ + +.profilePageTop { + padding-bottom: 20px; + padding-top: 15px; + text-align: center; +} + +.space { + padding: 20px 0; +} + +.user-image{ + width: 80px; + height: 80px; + background: #333; + border: 0px solid #333; + background-size: cover !important; + background-position: center !important; + border-radius: 50%; +} + +.user-image-icon { + width:200px; + height:200px; + position:relative; +} + @media (max-width: 767px) { + .user-image-icon { + width:150px; + height:150px; + } + } + + +hr { + background-color: #222; + height: 1px; + border: 1px; + box-shadow: 1.5px 1.5px 2.5px #444; +} + + #feedbackDiv { z-index: 1400; @@ -1652,4 +1689,4 @@ hr { border-radius:5px; margin-top:20px; border: 1px solid #dadada; -} +} \ No newline at end of file diff --git a/OGV/client/templates/404.html b/OGV/client/templates/404.html index 78cc67c7..65d84f95 100644 --- a/OGV/client/templates/404.html +++ b/OGV/client/templates/404.html @@ -36,7 +36,7 @@

404

-

Page your are looking can't be found. Go back to models page.

+

Page your are looking can't be found. Go back to home page.

diff --git a/OGV/client/templates/filemanager.html b/OGV/client/templates/filemanager.html deleted file mode 100644 index 4c5f05b1..00000000 --- a/OGV/client/templates/filemanager.html +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/OGV/client/templates/menu.html b/OGV/client/templates/menu.html index 65548603..95629602 100644 --- a/OGV/client/templates/menu.html +++ b/OGV/client/templates/menu.html @@ -3,16 +3,15 @@
- {{#unless currentUser}} {{else}} - - - {{ currentUser.profile.name }} + + {{ currentUser.profile.name }} + {{/unless}}
diff --git a/OGV/client/templates/model_feed.html b/OGV/client/templates/model_feed.html index 6829cd75..a8c10f74 100644 --- a/OGV/client/templates/model_feed.html +++ b/OGV/client/templates/model_feed.html @@ -10,7 +10,7 @@

Hi, {{currentUser.profile.name}}!

{{> modelPost }} {{/if}} {{/each}} - + {{else}}

You seem to be new here, your newsfeed looks empty

{{/if}} @@ -22,7 +22,7 @@

You seem to be new here, your newsfeed looks empty

@@ -32,13 +32,17 @@

You seem to be new here, your newsfeed looks empty

{{ owner.profile.name }} posted {{ name }}
on {{uploadedAt}}

- {{> modelView }} + {{> modelView }} +
+     + +

{{ about }}

{{> lovemeter }}
- + {{this.viewsCount}}
{{> comments }} diff --git a/OGV/client/templates/profile_page.html b/OGV/client/templates/profile_page.html index 636c2571..395eda13 100644 --- a/OGV/client/templates/profile_page.html +++ b/OGV/client/templates/profile_page.html @@ -1,31 +1,40 @@ - diff --git a/OGV/client/templates/profile_page.html b/OGV/client/templates/profile_page.html index 395eda13..4e046877 100644 --- a/OGV/client/templates/profile_page.html +++ b/OGV/client/templates/profile_page.html @@ -34,10 +34,7 @@

{{ person.profile.bio }}

-
-
{{> profileModelFeed}} -
From 595fb7cc18ce938134d0b7c909297e382fe0b9e5 Mon Sep 17 00:00:00 2001 From: gauravjeetsingh Date: Thu, 9 Jun 2016 12:27:51 +0530 Subject: [PATCH 127/292] Added a default image to be shown, when user sets no pic --- OGV/client/templates/model_feed.html | 1 - OGV/client/views/global_helper.js | 2 +- OGV/client/views/model_feed.js | 8 ++++---- OGV/client/views/profile_page.js | 6 +++++- OGV/public/icons/User.png | Bin 2130 -> 98344 bytes 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/OGV/client/templates/model_feed.html b/OGV/client/templates/model_feed.html index 551bf590..6a34c1e8 100644 --- a/OGV/client/templates/model_feed.html +++ b/OGV/client/templates/model_feed.html @@ -11,7 +11,6 @@

Hello, {{loggedInUser.username}}!

{{> modelPost }} {{/if}} {{/each}} - {{else}}

You seem to be new here, your newsfeed looks empty

{{/if}} diff --git a/OGV/client/views/global_helper.js b/OGV/client/views/global_helper.js index a13e6f2f..af070774 100644 --- a/OGV/client/views/global_helper.js +++ b/OGV/client/views/global_helper.js @@ -17,7 +17,7 @@ Template.registerHelper('loggedInUser', function(){ if(picId){ var picUrl = ProfilePictures.findOne(picId).url(); } else { - var picUrl = " "; + var picUrl = "/icons/User.png"; } var followings = user.profile.following; var followers = user.profile.follower; diff --git a/OGV/client/views/model_feed.js b/OGV/client/views/model_feed.js index 5b5aa716..3cbf6cec 100644 --- a/OGV/client/views/model_feed.js +++ b/OGV/client/views/model_feed.js @@ -60,12 +60,12 @@ Template.modelPost.helpers({ { modelOwner = Meteor.users.findOne(this.owner); picId = modelOwner.profile.pic; - pic = ProfilePictures.findOne(picId); - picUrl = pic.url(); - if (pic) { + if (picId) { + pic = ProfilePictures.findOne(picId); + picUrl = pic.url(); return picUrl; } else { - return '/public/icons/User.png'; + return '/icons/User.png'; } }, diff --git a/OGV/client/views/profile_page.js b/OGV/client/views/profile_page.js index 95f25c53..a5a31621 100644 --- a/OGV/client/views/profile_page.js +++ b/OGV/client/views/profile_page.js @@ -61,7 +61,11 @@ Template.profilePage.helpers({ var otherId = parts.pop(); //id of user whose page is being visited var currentProfile = Meteor.users.findOne(otherId); var picId = currentProfile.profile.pic; - return ProfilePictures.findOne(picId).url(); + if(picId){ + return ProfilePictures.findOne(picId).url(); + } else{ + return "/icons/User.png"; + } }, person: function() diff --git a/OGV/public/icons/User.png b/OGV/public/icons/User.png index cb697cae5d379981cfe9d0f4a0f2ebe8af415f40..af3ec31add553d38ef12110587b3e38f1d06a8d8 100644 GIT binary patch literal 98344 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 Date: Thu, 9 Jun 2016 16:44:14 +0530 Subject: [PATCH 128/292] News feed page rendered even when logged out. Fixed it --- OGV/lib/router.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OGV/lib/router.js b/OGV/lib/router.js index c5e58e09..4068273f 100644 --- a/OGV/lib/router.js +++ b/OGV/lib/router.js @@ -183,6 +183,6 @@ var loggingIn = function(pause) { * everytime a route is changed */ Router.onBeforeAction(function() { clearNotifications(); this.next(); }); -Router.onBeforeAction(validateUser,{only:['cfsUploader','filemanager','dashboard','modelMeta', 'newsfeedSidebar', 'modelFeed', 'explore', 'profilePage', 'index']}); -Router.onBeforeAction(actionReady, {only:['index', 'modelViewer', 'profilePage', 'explore']}); +Router.onBeforeAction(validateUser,{only:['cfsUploader','filemanager','dashboard','modelMeta', 'newsfeedSidebar', 'models', 'modelFeed', 'explore', 'profilePage', 'index']}); +Router.onBeforeAction(actionReady, {only:['index', 'modelViewer', 'profilePage', 'explore', 'models', 'modelFeed']}); Router.onBeforeAction(loggingIn); From 43f53113dc924e6bb12342a3e5760fa86b1d5113 Mon Sep 17 00:00:00 2001 From: gauravjeetsingh Date: Thu, 9 Jun 2016 16:56:36 +0530 Subject: [PATCH 129/292] Restored download icon, which was changed with recent PR merge of FreeBSD deploy script --- OGV/public/icons/download.png | Bin 1544 -> 9118 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/OGV/public/icons/download.png b/OGV/public/icons/download.png index 38b6cd1995bce287216d2c07dc8f6707c156e1f9..a6252e8ab35d3deb706770a93d42bbd279ecc38e 100644 GIT binary patch literal 9118 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

--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 literal 1544 zcmcJP`8Sjc9LC?7F*6}IQ?hd}!kEF3C3{1Ic?m;g=S7SqU0YGyj3SaVuA!lXWRPu; zERm&bM`>&&A!}ifC0xac%O7xmyyrR3^L)?q{rz*7Vr?$KC(Z`|fB;A)*&Q_P&__@Q z*>2?Z_MlMSmgXd2|4@&ci_;Gl-Vm~LH~^q!4-M;f9e;K(q9Z^nQ}iSX&Wn}Xk^Zaz z0Lc3w$=E(>^jnU8l7pkroqer^ls*$>Qir2Zyr!_QnZ0Jq5$}E?8S|V%>O?0eXv2ae zUYUGXgJg{<2Rs>YSj)%6V%8@{mx#f84=_`1=I&OY=lq}W6XoArg)-G1&~1G!o8%l!yjeQ`5GxdXnb19ueln~ zqB`}=wkmV))l0TBBVu2_EYT$*8u1+VaV^@K8%~3LjF!}-RX#j%r>LCpm&dPEwsvi`%U~d6Pl|D9kO8uA+$l;Pq$RWn zm0q2m11>mB5F&Bu@p5(*{EEbRSL~iAQgAA`qu-eX2jPSEn4LQ}_64)*@gAR&khK@`!_AZCLY{qdDlYW#y-z&))TagdT zmz2Sw(-SjvmW|v@_vx5_a$s&fYE8#RC_H81G@f!L*o){ z%rMf3Z2aHba~YO3o4`<+9*Pd9`_kh)5$^K6wfN55c6G>J%I{T^#yqkWo^Fvb$r1|Z zM76qJg*(B=IoLrf$cy*8OO|&qbFA(72MmM@Q7>?^iIYNdsOHJl&Z>1AJs!^TqP&vt zB=N0CGa+muMyW`W4wv)I6$z#CQ~NUD9fpMoWh2(xKg#aCIMU$2T(3#E-m3zoMK^}p zDk4OZjc#9=PVYrR&!QWCs&A1oXV29~5oXD0bIQKQy(HFH*vJ8whU}j_BXhZuZUZ8h zZn9Ub`sT)@x|4h7#m>YbeQ}#dA(b^5H8xaj1?N!Nk3NlcZBJ&u805wbthm8vX$~c+ z)R#X@Sn^iC2sx%fd`zN9h)(#jA#aLUM>HJ_{u0vQ-=|8`BDgp2T*ynLRaAmsU}`lq z$I|iQpw@Z@T1`XBb+I^8DHUCL_j(!4Qh+h)*guWi{<$Ls`I_zGhtvx_TY=>u!EJeg zknL}m;^viK;4kmQ_0jzM{aCF%Vypbkw*qJ~%Oxl>yJ_mgM~?9DNDjQK~w{~1B zB?nn)8(F|(q0+_=Ug>r7-9@V{CCpL_C%=|^PdG6~?LBE33vN?pW{MNYi^X|OV%?vC zIp$N|J-S(erWF?eTSlDr`p2*Ie z0mDz_1Wd1KFy>g=mtb%3uY$q18TEg?GX~!dRzCy2W==VimKo2j2MbWKJLJK}q>+=D zzC}v5%eNC*bxzp??kL`)MIqp3Q@s~nuiailcINmRo8`bT0$Yt_xDh0Sa#zDZMIvL$ zYjN{LsqO@B_`fkx^!n(gW{7xIr!P)xNW57TV5cPlKCtud$c1pRKuga=mh{K`y3Gjk z=&Ig(<}WGCfJ#6OYnN>v+&~BjCq Date: Mon, 13 Jun 2016 22:32:24 +0530 Subject: [PATCH 130/292] added schema to collections, and few code cleanup changes --- OGV/.meteor/packages | 2 + OGV/.meteor/versions | 2 + OGV/client/views/dashboard.js | 5 +- OGV/client/views/global_helper.js | 2 +- OGV/client/views/profile_page.js | 51 +++++++++---------- OGV/collections/ogv_meta.js | 20 +++++++- OGV/collections/profile.js | 82 +++++++++++++++++++++++++++++++ OGV/collections/social.js | 35 +++++++++++++ OGV/server/accounts.js | 2 +- 9 files changed, 169 insertions(+), 32 deletions(-) diff --git a/OGV/.meteor/packages b/OGV/.meteor/packages index 3773f52e..8f0290b1 100644 --- a/OGV/.meteor/packages +++ b/OGV/.meteor/packages @@ -32,3 +32,5 @@ juliancwirko:s-alert juliancwirko:s-alert-flip fortawesome:fontawesome ishwerdas:ogv-threejs +aldeed:collection2 +aldeed:simple-schema diff --git a/OGV/.meteor/versions b/OGV/.meteor/versions index 25cda17f..16704dd0 100644 --- a/OGV/.meteor/versions +++ b/OGV/.meteor/versions @@ -7,6 +7,8 @@ accounts-password@1.1.1 accounts-ui@1.1.5 accounts-ui-unstyled@1.1.7 alanning:roles@1.2.13 +aldeed:collection2@2.6.1 +aldeed:simple-schema@1.3.3 autoupdate@1.2.1 base64@1.0.3 binary-heap@1.0.3 diff --git a/OGV/client/views/dashboard.js b/OGV/client/views/dashboard.js index c1290360..90314ce2 100644 --- a/OGV/client/views/dashboard.js +++ b/OGV/client/views/dashboard.js @@ -145,7 +145,7 @@ Template.dashboard.events({ } }, function(error, res) { if (error) { - sAlert.error(error.reason, {effect: 'flip', onRouteClose: false, stack: false, timeout: 3000, position: 'top'}); + sAlert.error("There was an error, Please fill all the fields correctly", {effect: 'flip', onRouteClose: false, stack: false, timeout: 3000, position: 'top'}); } else { sAlert.success("Admin Settings saved", {effect: 'flip', onRouteClose: false, stack: false, timeout: 3000, position: 'top'}); } @@ -154,9 +154,6 @@ Template.dashboard.events({ }); Template.dashboard.helpers({ - /** - * profilePic returns the url of profile picture of the user - */ settings: function() { return OgvSettings.findOne(); diff --git a/OGV/client/views/global_helper.js b/OGV/client/views/global_helper.js index af070774..70dc1480 100644 --- a/OGV/client/views/global_helper.js +++ b/OGV/client/views/global_helper.js @@ -26,7 +26,7 @@ Template.registerHelper('loggedInUser', function(){ if(!followings){ followingsCount = 0 } else { - followingsCount = followings.length - 1; + followingsCount = followings.length; } if ( !followers ){ diff --git a/OGV/client/views/profile_page.js b/OGV/client/views/profile_page.js index a5a31621..beb0b7c3 100644 --- a/OGV/client/views/profile_page.js +++ b/OGV/client/views/profile_page.js @@ -51,6 +51,32 @@ Template.profilePage.events({ Template.profilePage.helpers({ + currentFollowsThis: function() { + var parts = location.href.split('/'); + var otherId = parts.pop(); //id of user whose page is being visited + var currentUser = Meteor.user(); + var currentFollowsThis = Meteor.users.findOne({_id: currentUser._id, "profile.following": otherId}); + + if( currentFollowsThis ){ + return currentFollowsThis; + } + else{ + return null; + } + }, + urlUser: function() { + var parts = location.href.split('/'); + var otherId = parts.pop(); //id of user whose page is being visited + var currentUser = Meteor.user(); + + if( currentUser._id != otherId ){ + return otherId; + } + else{ + return null; + } + }, + /** * returns image of the user from database, if there's no image a default * image is shown. @@ -165,31 +191,6 @@ Template.profileModelFeed.events({ } }); -Template.profilePage.currentFollowsThis = function() -{ - var parts = location.href.split('/'); - var otherId = parts.pop(); //id of user whose page is being visited - var currentUser = Meteor.user(); - var currentFollowsThis = Meteor.users.findOne({_id: currentUser._id, "profile.following": otherId}); - - if( currentFollowsThis ){ - return currentFollowsThis; - } - else{ - return null; - } -} - Template.profilePage.urlUser = function() { - var parts = location.href.split('/'); - var otherId = parts.pop(); //id of user whose page is being visited - var currentUser = Meteor.user(); - - if( currentUser._id != otherId ){ - return otherId; - } - else{ - return null; - } } diff --git a/OGV/collections/ogv_meta.js b/OGV/collections/ogv_meta.js index e964bee6..d7a8aff4 100644 --- a/OGV/collections/ogv_meta.js +++ b/OGV/collections/ogv_meta.js @@ -23,8 +23,26 @@ * */ -OgvSettings = new Meteor.Collection('OgvSettings'); +OgvSchema = new SimpleSchema({ + gobjPath: { + type: String + }, + mailUrl: { + type: String + }, + mgedPath: { + type: String + }, + siteName: { + type: String + }, + settingSwitch: { + type: Boolean + } +}); +OgvSettings = new Meteor.Collection('OgvSettings'); +OgvSettings.attachSchema(OgvSchema); /** * No one is allowed to insert and only admin can update the settings */ diff --git a/OGV/collections/profile.js b/OGV/collections/profile.js index f6f47a1d..7cb149ba 100644 --- a/OGV/collections/profile.js +++ b/OGV/collections/profile.js @@ -23,6 +23,88 @@ * */ +userProfileSchema = new SimpleSchema({ + name: { + type: String + }, + bio: { + type: String, + optional: true + }, + pic: { + type:String, + optional: true + }, + countModels: { + type: Number, + defaultValue: 0 + }, + follower: { + type: Array, + optional:true + }, + "follower.$": { + type: String + }, + following: { + type: Array, + optional: true + }, + "following.$": { + type: String + } +}); + +userSchema = new SimpleSchema({ + username: { + type:String, + optional: true + }, + emails:{ + type:Array, + optional: true + }, + "emails.$": { + type: Object + }, + "emails.$.address": { + type: String, + regEx: SimpleSchema.RegEx.Email + }, + "emails.$.verified": { + type: Boolean + }, + createdAt: { + type: Date + }, + profile: { + type: userProfileSchema, + optional: true + }, + services: { + type: Object, + optional: true, + blackbox: true + }, + roles: { + type:Array, + optional: true + }, + "roles.$":{ + type: String + }, + heartbeat: { + type: Date, + optional: true + }, + status: { + type: Object, + optional: true, + blackbox: true + } +}); + +Meteor.users.attachSchema(userSchema); ProfilePictures = new FS.Collection('profilePictures', { stores: [ diff --git a/OGV/collections/social.js b/OGV/collections/social.js index 6ef45ffe..67c716b3 100644 --- a/OGV/collections/social.js +++ b/OGV/collections/social.js @@ -22,9 +22,44 @@ * @brief Collections required for the social functionality of OGV */ +commentSchema = new SimpleSchema({ + author: { + type:String + }, + body: { + type: String + }, + postId: { + type: String + }, + submitted: { + type: Number + }, + userId: { + type: String + } +}); + +loverSchema = new SimpleSchema({ + lovers: { + type: Array + }, + "lovers.$": { + type: String + }, + postId: { + type: String + }, + submitted: { + type: Number + } +}); + Comments = new Meteor.Collection('comments'); Lovers = new Meteor.Collection('lovers'); +Comments.attachSchema(commentSchema); +Lovers.attachSchema(loverSchema); Meteor.methods({ /** diff --git a/OGV/server/accounts.js b/OGV/server/accounts.js index 420006f3..52cf0a77 100644 --- a/OGV/server/accounts.js +++ b/OGV/server/accounts.js @@ -50,7 +50,7 @@ if (Meteor.users.find().fetch().length === 0) { id = Accounts.createUser({ email: userData.email, password: "ogv123", - profile: { name: userData.name, bio: Bio, pic: false } + profile: { name: userData.name, bio: Bio } }); // email verification From e4d4153217ceb20b98ef2541584abde5198bade7 Mon Sep 17 00:00:00 2001 From: gauravjeetsingh Date: Thu, 23 Jun 2016 12:08:39 +0530 Subject: [PATCH 131/292] Working on three major changes, changed all notifications to sAlert, redesigned sAlert notifications, Added notification for love/comment, Also added the share functionality, backend of share functionality is done, just left with showing the shared models --- OGV/.meteor/packages | 1 + OGV/.meteor/versions | 1 + OGV/client/layout.html | 1 - OGV/client/main.js | 2 + OGV/client/styles/styles.css | 46 ++++++++-- OGV/client/templates/menu.html | 8 +- OGV/client/templates/model_feed.html | 9 ++ OGV/client/templates/newsfeed_sidebar.html | 24 +---- OGV/client/templates/notifications.html | 38 ++++++-- OGV/client/views/authentication/login.js | 2 +- .../views/authentication/reset_password.js | 4 +- OGV/client/views/authentication/signup.js | 12 --- OGV/client/views/authentication/validator.js | 8 +- OGV/client/views/cfs_uploader.js | 4 +- OGV/client/views/dashboard.js | 49 ++-------- OGV/client/views/menu.js | 7 +- OGV/client/views/model_feed.js | 23 +++++ OGV/client/views/model_meta.js | 30 +++--- OGV/client/views/model_viewer.js | 4 +- OGV/client/views/newsfeed_sidebar.js | 40 ++------ OGV/client/views/notifications.js | 86 +++++++----------- OGV/client/views/profile_page.js | 7 +- OGV/client/views/sAlertConfig.js | 19 ++++ OGV/client/views/social.js | 2 +- OGV/collections/notifications.js | 35 +++++++ OGV/collections/social.js | 66 ++++++++++++++ OGV/lib/router.js | 2 +- OGV/lib/sAlertConfig.js | 12 --- OGV/public/error.wav | Bin 0 -> 191964 bytes OGV/public/icons/notification.png | Bin 0 -> 837 bytes OGV/public/itsok.wav | Bin 0 -> 352844 bytes OGV/server/publications.js | 10 +- 32 files changed, 322 insertions(+), 230 deletions(-) create mode 100644 OGV/client/views/sAlertConfig.js create mode 100644 OGV/collections/notifications.js delete mode 100644 OGV/lib/sAlertConfig.js create mode 100644 OGV/public/error.wav create mode 100644 OGV/public/icons/notification.png create mode 100644 OGV/public/itsok.wav diff --git a/OGV/.meteor/packages b/OGV/.meteor/packages index 8f0290b1..7eff5ca1 100644 --- a/OGV/.meteor/packages +++ b/OGV/.meteor/packages @@ -34,3 +34,4 @@ fortawesome:fontawesome ishwerdas:ogv-threejs aldeed:collection2 aldeed:simple-schema +juliancwirko:s-alert-genie diff --git a/OGV/.meteor/versions b/OGV/.meteor/versions index 16704dd0..7f40ae87 100644 --- a/OGV/.meteor/versions +++ b/OGV/.meteor/versions @@ -65,6 +65,7 @@ jquery@1.11.3_2 json@1.0.3 juliancwirko:s-alert@2.4.1 juliancwirko:s-alert-flip@1.1.3 +juliancwirko:s-alert-genie@1.0.5 launch-screen@1.0.2 less@1.0.14 livedata@1.0.13 diff --git a/OGV/client/layout.html b/OGV/client/layout.html index a3b62c87..b4899daa 100644 --- a/OGV/client/layout.html +++ b/OGV/client/layout.html @@ -5,7 +5,6 @@

{{> menu}}
- {{> notifications}} {{> sAlert}} {{> yield}}
diff --git a/OGV/client/main.js b/OGV/client/main.js index 0da3b18b..45236116 100644 --- a/OGV/client/main.js +++ b/OGV/client/main.js @@ -73,6 +73,7 @@ if (Accounts._verifyEmailToken) { * Subscribe to various collections * */ +Meteor.subscribe('sharedModels'); Meteor.subscribe('objFiles'); Meteor.subscribe('thumbFiles'); Meteor.subscribe('comments'); @@ -80,6 +81,7 @@ Meteor.subscribe('lovers'); Meteor.subscribe('profilePictures'); Meteor.subscribe('ogvSettings'); Meteor.subscribe('profiles'); +Meteor.subscribe('notifications'); /* * Local Variables: diff --git a/OGV/client/styles/styles.css b/OGV/client/styles/styles.css index d72995f6..42ace638 100644 --- a/OGV/client/styles/styles.css +++ b/OGV/client/styles/styles.css @@ -51,9 +51,9 @@ h2 { margin:auto; } -/*#main { +#main { padding-top:50px; -}*/ +} .wrapper { margin-top:20px; @@ -192,16 +192,48 @@ h2 { } .notifications { - max-width:700px; - position:relative; - margin:40px auto auto; + max-width:300px; + max-height:250px; + overflow-y:auto; + position:absolute; + margin-left:-100px; z-index:1100; - word-wrap:break-word; + word-wrap:break-word; + background-color:#fafafa; + box-shadow: 0px 0px 5px 0.1px #333; + display: none; +} + +.notifications li { + list-style-type:none; + +} +notifications ul{ + margin:0px; } + +.notification-anchor{ + display:block; + margin-top:15px; +} + +.message-container{ + width:83%; +} + +.icon-container{ + width:17%; +} + +.notification-container:after{ + display:block; + content:""; + clear:both; +} + .primary-container { max-width:280px; margin:auto; - margin-top:10%; } .right-container{ diff --git a/OGV/client/templates/menu.html b/OGV/client/templates/menu.html index 16fd689a..9b711804 100644 --- a/OGV/client/templates/menu.html +++ b/OGV/client/templates/menu.html @@ -2,12 +2,14 @@
- - - + {{#unless currentUser}} {{else}} + + {{> notifications}} + + {{ loggedInUser.username }} diff --git a/OGV/client/templates/model_feed.html b/OGV/client/templates/model_feed.html index 6a34c1e8..f2884754 100644 --- a/OGV/client/templates/model_feed.html +++ b/OGV/client/templates/model_feed.html @@ -5,6 +5,11 @@

Hello, {{loggedInUser.username}}!

{{> newsfeedSidebar}}
+ {{#if sharedModels}} + {{#each sharedModels}} + {{> sharedModelPost }} + {{/each}} + {{/if}} {{#if models}} {{#each models}} {{#if converted }} @@ -18,6 +23,9 @@

You seem to be new here, your newsfeed looks empty

+ diff --git a/OGV/client/templates/notifications.html b/OGV/client/templates/notifications.html index 38a3f88f..05b254de 100644 --- a/OGV/client/templates/notifications.html +++ b/OGV/client/templates/notifications.html @@ -1,16 +1,34 @@ - - - \ No newline at end of file + diff --git a/imports/ui/components/model_post.css b/imports/ui/components/model_post.css index 123fae4b..b887d6ae 100644 --- a/imports/ui/components/model_post.css +++ b/imports/ui/components/model_post.css @@ -4,9 +4,11 @@ background: #FFF; box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.1); } + .post .poster { padding: 10px 10px; } + .post .poster img { height: 32px; margin-right: 8px; @@ -21,11 +23,13 @@ font-size: 24px; padding: 20px; } + .post .actions { padding: 10px; height: 32px; box-sizing: content-box; } + .post .info { padding: 10px; border-bottom: 1px solid rgba(0, 0, 0, 0.05); diff --git a/imports/ui/components/model_post.js b/imports/ui/components/model_post.js index bfc4a68a..04a83cbd 100644 --- a/imports/ui/components/model_post.js +++ b/imports/ui/components/model_post.js @@ -20,7 +20,10 @@ Template.modelPost.events({ }); }, "click .commentButton": function(e) { - $(e.target).parents(".post").find(".comments").slideToggle(); + $(e.target) + .parents(".post") + .find(".comments") + .slideToggle(); }, "click .love": function() { const love = { @@ -36,9 +39,9 @@ Template.modelPost.events({ Template.modelPost.helpers({ /** - * returns image of the user from database, if there's no image a default - * image is shown. - */ + * returns image of the user from database, if there's no image a default + * image is shown. + */ userImg() { if (this.postType === "posted") { modelOwner = Meteor.users.findOne(this.postedBy); diff --git a/imports/ui/components/newsfeed_sidebar.html b/imports/ui/components/newsfeed_sidebar.html index 0a60b384..a0a8f3a2 100644 --- a/imports/ui/components/newsfeed_sidebar.html +++ b/imports/ui/components/newsfeed_sidebar.html @@ -1,66 +1,65 @@ \ No newline at end of file + + +
+ + diff --git a/imports/ui/components/newsfeed_sidebar.js b/imports/ui/components/newsfeed_sidebar.js index f16136dc..5cd72c95 100644 --- a/imports/ui/components/newsfeed_sidebar.js +++ b/imports/ui/components/newsfeed_sidebar.js @@ -2,8 +2,8 @@ import "./newsfeed_sidebar.html"; Template.newsfeedSidebar.events({ /** - * Follow button functionality for suggested Users. - */ + * Follow button functionality for suggested Users. + */ "click #followButton": function() { let otherId; button = $("#followButton")[0]; @@ -55,11 +55,11 @@ Template.newsfeedSidebar.items = function() { Template.newsfeedSidebar.helpers({ /** - * Returns user info of other user - * All users excluding the ones who are being already followed and the user himself - * Sorted on the basis of number of Models. - * Users having highest number of models will be displayed on top. - */ + * Returns user info of other user + * All users excluding the ones who are being already followed and the user himself + * Sorted on the basis of number of Models. + * Users having highest number of models will be displayed on top. + */ suggestownerInfo() { const currentUser = Meteor.user(); return Meteor.users.find( @@ -87,8 +87,8 @@ Template.newsfeedSidebar.helpers({ }, /** - * Returns image details of the same users in the same order as mentioned above. - */ + * Returns image details of the same users in the same order as mentioned above. + */ suggestownerImg() { const currentUser = Meteor.user(); const otherUser = Meteor.users @@ -101,7 +101,7 @@ Template.newsfeedSidebar.helpers({ } }, { - _id: { + id: { $not: currentUser._id } } @@ -128,8 +128,8 @@ Template.newsfeedSidebar.helpers({ }, /** - * Returns models based on popularity be seeing the number of views. - */ + * Returns models based on popularity be seeing the number of views. + */ suggestedModel() { const currentUser = Meteor.user(); return ModelFiles.find({ diff --git a/imports/ui/components/preloader.html b/imports/ui/components/preloader.html index 6973b1ad..e514e550 100644 --- a/imports/ui/components/preloader.html +++ b/imports/ui/components/preloader.html @@ -1,4 +1,3 @@ \ No newline at end of file diff --git a/imports/ui/components/social.css b/imports/ui/components/social.css index f0021446..631352a0 100644 --- a/imports/ui/components/social.css +++ b/imports/ui/components/social.css @@ -6,6 +6,7 @@ .comments-wrapper { margin-top: 5px; } + .comments { display: none; overflow: hidden; @@ -24,9 +25,11 @@ padding: 10px; border-top: 1px solid rgba(0, 0, 0, 0.05); } + .comments form { margin: 0; } + .comments button { border: 0; font-weight: bold; @@ -34,9 +37,11 @@ padding: 5px 8px; background-color: #f74c3c; } + .comment-item { padding: 10px; } + .comment-item p { padding-top: 5px; } diff --git a/imports/ui/components/social.html b/imports/ui/components/social.html index 3f1dc397..a015bcc8 100644 --- a/imports/ui/components/social.html +++ b/imports/ui/components/social.html @@ -49,4 +49,4 @@ - \ No newline at end of file + diff --git a/imports/ui/layouts/layout.css b/imports/ui/layouts/layout.css index 12ad9592..5fcb6bf1 100644 --- a/imports/ui/layouts/layout.css +++ b/imports/ui/layouts/layout.css @@ -1,5 +1,5 @@ #main { - width: 100%; - padding-top: 50px; - min-height: 100vh; + width: 100%; + padding-top: 50px; + min-height: 100vh; } \ No newline at end of file diff --git a/imports/ui/layouts/layout.html b/imports/ui/layouts/layout.html index 36bf5f5d..30839c5a 100644 --- a/imports/ui/layouts/layout.html +++ b/imports/ui/layouts/layout.html @@ -8,4 +8,4 @@ {{/if}} - \ No newline at end of file + diff --git a/imports/ui/pages/404.html b/imports/ui/pages/404.html index 800f8a48..fffd049a 100644 --- a/imports/ui/pages/404.html +++ b/imports/ui/pages/404.html @@ -50,4 +50,4 @@

Page your are looking can't be found. Go back to - \ No newline at end of file + diff --git a/imports/ui/pages/cfs_uploader.html b/imports/ui/pages/cfs_uploader.html index d85d6b38..402e0605 100644 --- a/imports/ui/pages/cfs_uploader.html +++ b/imports/ui/pages/cfs_uploader.html @@ -20,4 +20,4 @@ - \ No newline at end of file + diff --git a/imports/ui/pages/cfs_uploader.js b/imports/ui/pages/cfs_uploader.js index aca6053d..48a9da89 100644 --- a/imports/ui/pages/cfs_uploader.js +++ b/imports/ui/pages/cfs_uploader.js @@ -17,7 +17,9 @@ function uploadFile(event) { fsFile.owner = Meteor.userId(); fsFile.converted = false; fsFile.timeUploaded = new Date(); - fsFile.about = `The model ${fsFile.name()} was uploaded on ${fsFile.timeUploaded}`; + fsFile.about = `The model ${fsFile.name()} was uploaded on ${ + fsFile.timeUploaded + }`; fsFile.viewsCount = 0; fsFile.conversion = 0; diff --git a/imports/ui/pages/dashboard.html b/imports/ui/pages/dashboard.html index d717eab4..d2e191e8 100644 --- a/imports/ui/pages/dashboard.html +++ b/imports/ui/pages/dashboard.html @@ -72,4 +72,4 @@

Admin Settings

} } - \ No newline at end of file + diff --git a/imports/ui/pages/dashboard.js b/imports/ui/pages/dashboard.js index 8f42909d..e853621a 100644 --- a/imports/ui/pages/dashboard.js +++ b/imports/ui/pages/dashboard.js @@ -30,9 +30,9 @@ import "./dashboard.html"; Template.dashboard.events({ /** - * When user form is submitted, upload the picture and save - * the settings - */ + * When user form is submitted, upload the picture and save + * the settings + */ "submit #dash-user-form": function(e) { e.preventDefault(); @@ -42,9 +42,9 @@ Template.dashboard.events({ currentUser = Meteor.user(), saveSettings = function(picId) { /** - * If user has not changed the profile picture then use - * existing profile pic. - */ + * If user has not changed the profile picture then use + * existing profile pic. + */ if (!picId) { picId = currentUser.profile.pic; } @@ -96,9 +96,9 @@ Template.dashboard.events({ }, /** - * When admin form is submitted, get the values form the form - * and update the settings. - */ + * When admin form is submitted, get the values form the form + * and update the settings. + */ "submit #dash-admin-form": function(e) { e.preventDefault(); diff --git a/imports/ui/pages/data_not_found.css b/imports/ui/pages/data_not_found.css index 5933a9a7..ad09823f 100644 --- a/imports/ui/pages/data_not_found.css +++ b/imports/ui/pages/data_not_found.css @@ -1,4 +1,4 @@ .error { - color: red; - font-weight: bold; -} \ No newline at end of file + color: red; + font-weight: bold; +} diff --git a/imports/ui/pages/data_not_found.html b/imports/ui/pages/data_not_found.html index ceea32aa..4ddc06b5 100644 --- a/imports/ui/pages/data_not_found.html +++ b/imports/ui/pages/data_not_found.html @@ -1,5 +1,5 @@ \ No newline at end of file +

+ Error: probably BRL-CAD is not yet installed on this machine +

+ diff --git a/imports/ui/pages/data_not_found.js b/imports/ui/pages/data_not_found.js index 239a92d7..73e98028 100644 --- a/imports/ui/pages/data_not_found.js +++ b/imports/ui/pages/data_not_found.js @@ -1,2 +1,2 @@ import "./data_not_found.html"; -import "./data_not_found.css"; \ No newline at end of file +import "./data_not_found.css"; diff --git a/imports/ui/pages/explore.html b/imports/ui/pages/explore.html index 7fe0b7ed..b60f52db 100644 --- a/imports/ui/pages/explore.html +++ b/imports/ui/pages/explore.html @@ -39,7 +39,7 @@ {{#if getUsers}} {{/if}} {{#each getUsers}}
- + - \ No newline at end of file + diff --git a/imports/ui/pages/forgot_password.js b/imports/ui/pages/forgot_password.js index 50f948f0..68d0dbeb 100644 --- a/imports/ui/pages/forgot_password.js +++ b/imports/ui/pages/forgot_password.js @@ -37,7 +37,10 @@ Template.forgotPassword.events({ const forgotPasswordForm = $(e.currentTarget), email = trimInput( - forgotPasswordForm.find("#forgot-password-email").val().toLowerCase() + forgotPasswordForm + .find("#forgot-password-email") + .val() + .toLowerCase() ); /** * Send an email to the user if he forgets the password diff --git a/imports/ui/pages/landingPage.html b/imports/ui/pages/landingPage.html index 48d50d0b..ee8b0286 100644 --- a/imports/ui/pages/landingPage.html +++ b/imports/ui/pages/landingPage.html @@ -1,91 +1,91 @@ \ No newline at end of file + +
+
+

All trademarks referenced herein are the properties of their respective owners. This site is not sponsored, endorsed, or run by the U.S. Government.

+
+
+ + diff --git a/imports/ui/pages/login.html b/imports/ui/pages/login.html index 35116e36..8fda959b 100644 --- a/imports/ui/pages/login.html +++ b/imports/ui/pages/login.html @@ -16,4 +16,4 @@
{{else}} {{>modelFeed}} {{/unless}} - \ No newline at end of file + diff --git a/imports/ui/pages/login.js b/imports/ui/pages/login.js index 2dd38b2c..e9a73beb 100644 --- a/imports/ui/pages/login.js +++ b/imports/ui/pages/login.js @@ -33,11 +33,16 @@ Template.logIn.events({ e.preventDefault(); const logInForm = $(e.currentTarget), - email = trimInput(logInForm.find("#log-in-email").val().toLowerCase()), + email = trimInput( + logInForm + .find("#log-in-email") + .val() + .toLowerCase() + ), password = logInForm.find("#log-in-password").val(); /** - * If login fails show the error message else go to /upload + * If login fails show the error message else go to /upload */ if ( diff --git a/imports/ui/pages/model_feed.html b/imports/ui/pages/model_feed.html index 8b05c5e4..2424bac2 100644 --- a/imports/ui/pages/model_feed.html +++ b/imports/ui/pages/model_feed.html @@ -1,12 +1,12 @@ \ No newline at end of file +
+
+ {{> newsfeedSidebar}} +
+
+ {{#if posts}} {{#each posts}} {{> modelPost }} {{/each}} {{else}} +

You seem to be new here, your newsfeed looks empty

+ {{/if}} +
+
+ diff --git a/imports/ui/pages/model_feed.js b/imports/ui/pages/model_feed.js index 52c638b6..e297e0dd 100644 --- a/imports/ui/pages/model_feed.js +++ b/imports/ui/pages/model_feed.js @@ -37,9 +37,9 @@ import "../components/newsfeed_sidebar.js"; Template.modelFeed.helpers({ /** - * models helper finds all the models from the database and then sorts - * them in reverse chronological order. - */ + * models helper finds all the models from the database and then sorts + * them in reverse chronological order. + */ posts() { const currentUser = Meteor.user(); const audience = ["public", "followers"]; diff --git a/imports/ui/pages/model_meta.html b/imports/ui/pages/model_meta.html index b856622d..72467977 100644 --- a/imports/ui/pages/model_meta.html +++ b/imports/ui/pages/model_meta.html @@ -1,6 +1,5 @@ \ No newline at end of file + diff --git a/imports/ui/pages/model_meta.js b/imports/ui/pages/model_meta.js index 60b21dac..4a4c013a 100644 --- a/imports/ui/pages/model_meta.js +++ b/imports/ui/pages/model_meta.js @@ -39,15 +39,18 @@ Template.modelMeta.events({ e.preventDefault(); a = e; const modelMetaForm = $(e.currentTarget), - filename = modelMetaForm.find("#desc-filename").val().toLowerCase(), + filename = modelMetaForm + .find("#desc-filename") + .val() + .toLowerCase(), description = modelMetaForm.find("#desc-about").val(), modelId = modelMetaForm.find("#model-id").val(), audience = modelMetaForm.find("#desc-audience").val(), currentUser = Meteor.user(); /** - * Adding the checkd boxes to an array named category - */ + * Adding the checkd boxes to an array named category + */ const category = []; $("input:checkbox[name=category]:checked").each(function() { category.push($(this).val()); @@ -117,10 +120,10 @@ Template.modelMeta.helpers({ }); /** -* helper to display already present categories in the model -* Diplayed everytime when the /description/:_id page is viewed -* Displays nothing if categories is empty. -*/ + * helper to display already present categories in the model + * Diplayed everytime when the /description/:_id page is viewed + * Displays nothing if categories is empty. + */ Template.modelMeta.modelCategory = function() { const id = Session.get("modelId"); return ModelFiles.findOne({ _id: id }); diff --git a/imports/ui/pages/model_viewer.html b/imports/ui/pages/model_viewer.html index 643c3dbb..f72d1982 100644 --- a/imports/ui/pages/model_viewer.html +++ b/imports/ui/pages/model_viewer.html @@ -48,4 +48,4 @@
{{/if}} - \ No newline at end of file + diff --git a/imports/ui/pages/model_viewer.js b/imports/ui/pages/model_viewer.js index eade5595..5dc12ae4 100644 --- a/imports/ui/pages/model_viewer.js +++ b/imports/ui/pages/model_viewer.js @@ -51,7 +51,9 @@ Template.modelViewer.events({ }, "click #sm-item-edit": function() { - Router.current().render(Template.ModelViewer).data(); + Router.current() + .render(Template.ModelViewer) + .data(); }, "click #sm-item-embed": function() { @@ -224,22 +226,22 @@ function init() { } /** - * Setting Up the scene: - * Grabs the model-container div from template into a variable - * named container, and sets up the scene - */ + * Setting Up the scene: + * Grabs the model-container div from template into a variable + * named container, and sets up the scene + */ const container = document.getElementById("model-container"); const target = document.getElementById("main"); /** - * Create a scene, that will hold all our elements such - * as objects, cameras and lights - */ + * Create a scene, that will hold all our elements such + * as objects, cameras and lights + */ scene = new THREE.Scene(); /** - * Create a camera, which defines where we're looking at. - */ + * Create a camera, which defines where we're looking at. + */ camera = new THREE.PerspectiveCamera( 65, target.clientWidth / target.clientHeight, @@ -251,8 +253,8 @@ function init() { camera.position.y = 2000; /** - * Light up the scene - */ + * Light up the scene + */ /* const ambient = new THREE.AmbientLight(0x555555) scene.add(ambient) @@ -280,8 +282,8 @@ function init() { } /** - * Loader Managerial tasks - */ + * Loader Managerial tasks + */ const manager = new THREE.LoadingManager(); manager.onProgress = function(item, loaded, total) { console.log(`[model_viewer] Loading ${loaded}/${total} files`); @@ -289,24 +291,24 @@ function init() { }; /** - * Adds the model to the viewer aka loads OBJ files - * using OBJ-Loader - */ + * Adds the model to the viewer aka loads OBJ files + * using OBJ-Loader + */ group = new THREE.Object3D(); const loader = new THREE.OBJLoader(manager); const mtlLoader = new THREE.MTLLoader(manager); /** - * Get .mtl file - */ + * Get .mtl file + */ const mtlList = MTLFiles.find({ gFile: model._id }).map(o => o); /** - * Adds material to the model, which hence controls - * how the model shall look - */ + * Adds material to the model, which hence controls + * how the model shall look + */ const OBJMaterialArray = []; @@ -348,8 +350,8 @@ function init() { } /** - * If webgl is there then use it otherwise use canvas - */ + * If webgl is there then use it otherwise use canvas + */ if (Detector.webgl) { renderer = new THREE.WebGLRenderer({ alpha: true, @@ -363,8 +365,8 @@ function init() { } /** - * Sets size and color to renderer - */ + * Sets size and color to renderer + */ renderer.setSize(target.clientWidth, target.clientHeight); if (isEmbedded) { renderer.setClearColor(0, 0); @@ -374,8 +376,8 @@ function init() { container.appendChild(renderer.domElement); /** - * orbitControls for zoom in/ zoom out and other basic controls - */ + * orbitControls for zoom in/ zoom out and other basic controls + */ controls = new THREE.OrbitControls(camera, renderer.domElement); controls.addEventListener("change", render); diff --git a/imports/ui/pages/notverified.html b/imports/ui/pages/notverified.html index 399e16dd..5a937729 100644 --- a/imports/ui/pages/notverified.html +++ b/imports/ui/pages/notverified.html @@ -1,3 +1,3 @@ \ No newline at end of file + diff --git a/imports/ui/pages/processing.js b/imports/ui/pages/processing.js index 4cd7cfea..569eaf96 100644 --- a/imports/ui/pages/processing.js +++ b/imports/ui/pages/processing.js @@ -82,8 +82,8 @@ function generate() { const scene = new THREE.Scene(); /** - * Create a camera, which defines where we're looking at. - */ + * Create a camera, which defines where we're looking at. + */ const camera = new THREE.PerspectiveCamera(45, width / height, 1, 200000); camera.position.z = 200; camera.position.x = 200; @@ -121,8 +121,8 @@ function generate() { .appendChild(renderer.domElement); /** - * Get .mtl file - */ + * Get .mtl file + */ const mtlList = MTLFiles.find({ gFile: model._id }).map(o => o); diff --git a/imports/ui/pages/profile_page.html b/imports/ui/pages/profile_page.html index 83df2ada..3066458b 100644 --- a/imports/ui/pages/profile_page.html +++ b/imports/ui/pages/profile_page.html @@ -1,65 +1,65 @@ \ No newline at end of file diff --git a/imports/ui/pages/profile_page.js b/imports/ui/pages/profile_page.js index e8ac506f..89b06a38 100644 --- a/imports/ui/pages/profile_page.js +++ b/imports/ui/pages/profile_page.js @@ -117,9 +117,9 @@ Template.profilePage.helpers({ }, /** - * returns image of the user from database, if there's no image a default - * image is shown. - */ + * returns image of the user from database, if there's no image a default + * image is shown. + */ userImg() { const parts = location.href.split("/"); const otherId = parts.pop(); // id of user whose page is being visited @@ -138,9 +138,9 @@ Template.profilePage.helpers({ }, /** - * Returns the number of people the user (whose profile is being viewed - * currently) is following. - */ + * Returns the number of people the user (whose profile is being viewed + * currently) is following. + */ followingCount() { const parts = location.href.split("/"); // id of user whose page is being visited @@ -155,9 +155,9 @@ Template.profilePage.helpers({ }, /** - * Returns the number of people the user (whose profile is being viewed - * currently) is bring followed by. - */ + * Returns the number of people the user (whose profile is being viewed + * currently) is bring followed by. + */ followerCount() { const parts = location.href.split("/"); const otherId = parts.pop(); // id of user whose page is being visited @@ -173,9 +173,9 @@ Template.profilePage.helpers({ Template.profileModelFeed.helpers({ /** - * models helper finds all the models from the user and then sorts - * them in reverse chronological order. - */ + * models helper finds all the models from the user and then sorts + * them in reverse chronological order. + */ posts() { const parts = location.href.split("/"); const urlId = parts.pop(); // id of user whose page is being visited @@ -230,8 +230,8 @@ Template.profileModelFeed.helpers({ }, /** - * Returns user details for the profile being viewed currently - */ + * Returns user details for the profile being viewed currently + */ user() { const parts = location.href.split("/"); const urlId = parts.pop(); // id of user whose page is being visited diff --git a/imports/ui/pages/signup.html b/imports/ui/pages/signup.html index f9e66ab3..b94bed2b 100644 --- a/imports/ui/pages/signup.html +++ b/imports/ui/pages/signup.html @@ -15,4 +15,4 @@ Forgot Password {{else}} {{> modelFeed}} {{/unless}} - \ No newline at end of file + diff --git a/imports/ui/pages/signup.js b/imports/ui/pages/signup.js index a8877f0c..e4d0dd9c 100644 --- a/imports/ui/pages/signup.js +++ b/imports/ui/pages/signup.js @@ -31,14 +31,19 @@ Template.signUp.events({ e.preventDefault(); const signUpForm = $(e.currentTarget), - email = trimInput(signUpForm.find("#sign-up-email").val().toLowerCase()), + email = trimInput( + signUpForm + .find("#sign-up-email") + .val() + .toLowerCase() + ), password = signUpForm.find("#sign-up-password").val(), passwordConfirm = signUpForm.find("#sign-up-password-confirm").val(), username = signUpForm.find("#sign-up-username").val(); /** - * Validates the sign up form fields and gives errors if any - */ + * Validates the sign up form fields and gives errors if any + */ if ( isNotEmpty(email) && diff --git a/imports/ui/pages/simple_view.html b/imports/ui/pages/simple_view.html index db899b95..8cea8d5c 100644 --- a/imports/ui/pages/simple_view.html +++ b/imports/ui/pages/simple_view.html @@ -1,6 +1,4 @@ \ No newline at end of file + diff --git a/imports/ui/pages/simple_view.js b/imports/ui/pages/simple_view.js index 17247c00..551a3c2d 100644 --- a/imports/ui/pages/simple_view.js +++ b/imports/ui/pages/simple_view.js @@ -115,22 +115,22 @@ function init() { } /** - * Setting Up the scene: - * Grabs the model-container div from template into a variable - * named container, and sets up the scene - */ + * Setting Up the scene: + * Grabs the model-container div from template into a variable + * named container, and sets up the scene + */ const container = document.getElementById("model-container"); const target = document.getElementById("model-container"); /** - * Create a scene, that will hold all our elements such - * as objects, cameras and lights - */ + * Create a scene, that will hold all our elements such + * as objects, cameras and lights + */ scene = new THREE.Scene(); /** - * Create a camera, which defines where we're looking at. - */ + * Create a camera, which defines where we're looking at. + */ camera = new THREE.PerspectiveCamera( 65, target.clientWidth / target.clientHeight, @@ -142,8 +142,8 @@ function init() { camera.position.y = 2000; /** - * Light up the scene - */ + * Light up the scene + */ /* const ambient = new THREE.AmbientLight(0x555555) scene.add(ambient) @@ -170,8 +170,8 @@ function init() { } /** - * Loader Managerial tasks - */ + * Loader Managerial tasks + */ const manager = new THREE.LoadingManager(); manager.onProgress = function(item, loaded, total) { console.log(`[model_viewer] Loading ${loaded}/${total} files`); @@ -179,24 +179,24 @@ function init() { }; /** - * Adds the model to the viewer aka loads OBJ files - * using OBJ-Loader - */ + * Adds the model to the viewer aka loads OBJ files + * using OBJ-Loader + */ const group = new THREE.Object3D(); const loader = new THREE.OBJLoader(manager); const mtlLoader = new THREE.MTLLoader(manager); /** - * Get .mtl file - */ + * Get .mtl file + */ const mtlList = MTLFiles.find({ gFile: model._id }).map(o => o); /** - * Adds material to the model, which hence controls - * how the model shall look - */ + * Adds material to the model, which hence controls + * how the model shall look + */ const OBJMaterialArray = []; if (mtlList && mtlList.length > 0) { @@ -237,8 +237,8 @@ function init() { } /** - * If webgl is there then use it otherwise use canvas - */ + * If webgl is there then use it otherwise use canvas + */ if (Detector.webgl) { renderer = new THREE.WebGLRenderer({ alpha: true, @@ -252,8 +252,8 @@ function init() { } /** - * Sets size and color to renderer - */ + * Sets size and color to renderer + */ renderer.setSize(target.clientWidth, target.clientHeight); if (isEmbedded) { renderer.setClearColor(0, 0); @@ -263,8 +263,8 @@ function init() { container.appendChild(renderer.domElement); /** - * orbitControls for zoom in/ zoom out and other basic controls - */ + * orbitControls for zoom in/ zoom out and other basic controls + */ controls = new THREE.OrbitControls(camera, renderer.domElement); controls.addEventListener("change", render); diff --git a/private/docs/jsdoc/scripts/linenumber.js b/private/docs/jsdoc/scripts/linenumber.js index 8d52f7ea..d18cacab 100644 --- a/private/docs/jsdoc/scripts/linenumber.js +++ b/private/docs/jsdoc/scripts/linenumber.js @@ -1,25 +1,25 @@ /*global document */ (function() { - var source = document.getElementsByClassName('prettyprint source linenums'); - var i = 0; - var lineNumber = 0; - var lineId; - var lines; - var totalLines; - var anchorHash; + var source = document.getElementsByClassName("prettyprint source linenums"); + var i = 0; + var lineNumber = 0; + var lineId; + var lines; + var totalLines; + var anchorHash; - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName("li"); + totalLines = lines.length; - for (; i < totalLines; i++) { - lineNumber++; - lineId = 'line' + lineNumber; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } + for (; i < totalLines; i++) { + lineNumber++; + lineId = "line" + lineNumber; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += " selected"; + } } + } })(); diff --git a/private/docs/jsdoc/scripts/prettify/lang-css.js b/private/docs/jsdoc/scripts/prettify/lang-css.js index 041e1f59..fb1965fb 100644 --- a/private/docs/jsdoc/scripts/prettify/lang-css.js +++ b/private/docs/jsdoc/scripts/prettify/lang-css.js @@ -1,2 +1,36 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); +PR.registerLangHandler( + PR.createSimpleLexer( + [["pln", /^[\t\n\f\r ]+/, null, " \t\r\n "]], + [ + ["str", /^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/, null], + ["str", /^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/, null], + ["lang-css-str", /^url\(([^"')]*)\)/i], + [ + "kwd", + /^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i, + null + ], + [ + "lang-css-kw", + /^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i + ], + ["com", /^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//], + ["com", /^(?:<\!--|--\>)/], + ["lit", /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], + ["lit", /^#[\da-f]{3,6}/i], + ["pln", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i], + ["pun", /^[^\s\w"']+/] + ] + ), + ["css"] +); +PR.registerLangHandler( + PR.createSimpleLexer( + [], + [["kwd", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]] + ), + ["css-kw"] +); +PR.registerLangHandler(PR.createSimpleLexer([], [["str", /^[^"')]+/]]), [ + "css-str" +]); diff --git a/private/docs/jsdoc/scripts/prettify/prettify.js b/private/docs/jsdoc/scripts/prettify/prettify.js index eef5ad7e..76532899 100644 --- a/private/docs/jsdoc/scripts/prettify/prettify.js +++ b/private/docs/jsdoc/scripts/prettify/prettify.js @@ -1,28 +1,731 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p 122 || + (d < 65 || + j > 90 || + b.push([Math.max(65, j) | 32, Math.min(d, 90) | 32]), + d < 97 || + j > 122 || + b.push([Math.max(97, j) & -33, Math.min(d, 122) & -33])); + } + } + b.sort(function(a, f) { + return a[0] - f[0] || f[1] - a[1]; + }); + f = []; + j = [NaN, NaN]; + for (c = 0; c < b.length; ++c) + (i = b[c]), + i[0] <= j[1] + 1 ? (j[1] = Math.max(j[1], i[1])) : f.push((j = i)); + b = ["["]; + o && b.push("^"); + b.push.apply(b, a); + for (c = 0; c < f.length; ++c) + (i = f[c]), + b.push(e(i[0])), + i[1] > i[0] && (i[1] + 1 > i[0] && b.push("-"), b.push(e(i[1]))); + b.push("]"); + return b.join(""); + } + function y(a) { + for ( + var f = a.source.match( + /\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g + ), + b = f.length, + d = [], + c = 0, + i = 0; + c < b; + ++c + ) { + var j = f[c]; + j === "(" + ? ++i + : "\\" === j.charAt(0) && + (j = +j.substring(1)) && + j <= i && + (d[j] = -1); + } + for (c = 1; c < d.length; ++c) -1 === d[c] && (d[c] = ++t); + for (i = c = 0; c < b; ++c) + (j = f[c]), + j === "(" + ? (++i, d[i] === void 0 && (f[c] = "(?:")) + : "\\" === j.charAt(0) && + (j = +j.substring(1)) && + j <= i && + (f[c] = "\\" + d[i]); + for (i = c = 0; c < b; ++c) + "^" === f[c] && "^" !== f[c + 1] && (f[c] = ""); + if (a.ignoreCase && s) + for (c = 0; c < b; ++c) + (j = f[c]), + (a = j.charAt(0)), + j.length >= 2 && a === "[" + ? (f[c] = h(j)) + : a !== "\\" && + (f[c] = j.replace(/[A-Za-z]/g, function(a) { + a = a.charCodeAt(0); + return "[" + String.fromCharCode(a & -33, a | 32) + "]"; + })); + return f.join(""); + } + for (var t = 0, s = !1, l = !1, p = 0, d = a.length; p < d; ++p) { + var g = a[p]; + if (g.ignoreCase) l = !0; + else if ( + /[a-z]/i.test( + g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, "") + ) + ) { + s = !0; + l = !1; + break; + } + } + for ( + var r = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 }, + n = [], + p = 0, + d = a.length; + p < d; + ++p + ) { + g = a[p]; + if (g.global || g.multiline) throw Error("" + g); + n.push("(?:" + y(g) + ")"); + } + return RegExp(n.join("|"), l ? "gi" : "g"); + } + function M(a) { + function m(a) { + switch (a.nodeType) { + case 1: + if (e.test(a.className)) break; + for (var g = a.firstChild; g; g = g.nextSibling) m(g); + g = a.nodeName; + if ("BR" === g || "LI" === g) + (h[s] = "\n"), (t[s << 1] = y++), (t[(s++ << 1) | 1] = a); + break; + case 3: + case 4: + (g = a.nodeValue), + g.length && + ((g = p + ? g.replace(/\r\n?/g, "\n") + : g.replace(/[\t\n\r ]+/g, " ")), + (h[s] = g), + (t[s << 1] = y), + (y += g.length), + (t[(s++ << 1) | 1] = a)); + } + } + var e = /(?:^|\s)nocode(?:\s|$)/, + h = [], + y = 0, + t = [], + s = 0, + l; + a.currentStyle + ? (l = a.currentStyle.whiteSpace) + : window.getComputedStyle && + (l = document.defaultView + .getComputedStyle(a, q) + .getPropertyValue("white-space")); + var p = l && "pre" === l.substring(0, 3); + m(a); + return { a: h.join("").replace(/\n$/, ""), c: t }; + } + function B(a, m, e, h) { + m && ((a = { a: m, d: a }), e(a), h.push.apply(h, a.e)); + } + function x(a, m) { + function e(a) { + for ( + var l = a.d, + p = [l, "pln"], + d = 0, + g = a.a.match(y) || [], + r = {}, + n = 0, + z = g.length; + n < z; + ++n + ) { + var f = g[n], + b = r[f], + o = void 0, + c; + if (typeof b === "string") c = !1; + else { + var i = h[f.charAt(0)]; + if (i) (o = f.match(i[1])), (b = i[0]); + else { + for (c = 0; c < t; ++c) + if (((i = m[c]), (o = f.match(i[1])))) { + b = i[0]; + break; + } + o || (b = "pln"); + } + if ( + (c = b.length >= 5 && "lang-" === b.substring(0, 5)) && + !(o && typeof o[1] === "string") + ) + (c = !1), (b = "src"); + c || (r[f] = b); + } + i = d; + d += f.length; + if (c) { + c = o[1]; + var j = f.indexOf(c), + k = j + c.length; + o[2] && ((k = f.length - o[2].length), (j = k - c.length)); + b = b.substring(5); + B(l + i, f.substring(0, j), e, p); + B(l + i + j, c, C(b, c), p); + B(l + i + k, f.substring(k), e, p); + } else p.push(l + i, b); + } + a.e = p; + } + var h = {}, + y; + (function() { + for ( + var e = a.concat(m), l = [], p = {}, d = 0, g = e.length; + d < g; + ++d + ) { + var r = e[d], + n = r[3]; + if (n) for (var k = n.length; --k >= 0; ) h[n.charAt(k)] = r; + r = r[1]; + n = "" + r; + p.hasOwnProperty(n) || (l.push(r), (p[n] = q)); + } + l.push(/[\S\s]/); + y = L(l); + })(); + var t = m.length; + return e; + } + function u(a) { + var m = [], + e = []; + a.tripleQuotedStrings + ? m.push([ + "str", + /^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, + q, + "'\"" + ]) + : a.multiLineStrings + ? m.push([ + "str", + /^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, + q, + "'\"`" + ]) + : m.push([ + "str", + /^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/, + q, + "\"'" + ]); + a.verbatimStrings && e.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]); + var h = a.hashComments; + h && + (a.cStyleComments + ? (h > 1 + ? m.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, q, "#"]) + : m.push([ + "com", + /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/, + q, + "#" + ]), + e.push([ + "str", + /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, + q + ])) + : m.push(["com", /^#[^\n\r]*/, q, "#"])); + a.cStyleComments && + (e.push(["com", /^\/\/[^\n\r]*/, q]), + e.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q])); + a.regexLiterals && + e.push([ + "lang-regex", + /^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/ + ]); + (h = a.types) && e.push(["typ", h]); + a = ("" + a.keywords).replace(/^ | $/g, ""); + a.length && + e.push(["kwd", RegExp("^(?:" + a.replace(/[\s,]+/g, "|") + ")\\b"), q]); + m.push(["pln", /^\s+/, q, " \r\n\t\xa0"]); + e.push( + ["lit", /^@[$_a-z][\w$@]*/i, q], + ["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q], + ["pln", /^[$_a-z][\w$@]*/i, q], + [ + "lit", + /^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i, + q, + "0123456789" + ], + ["pln", /^\\[\S\s]?/, q], + ["pun", /^.[^\s\w"-$'./@\\`]*/, q] + ); + return x(m, e); + } + function D(a, m) { + function e(a) { + switch (a.nodeType) { + case 1: + if (k.test(a.className)) break; + if ("BR" === a.nodeName) + h(a), a.parentNode && a.parentNode.removeChild(a); + else for (a = a.firstChild; a; a = a.nextSibling) e(a); + break; + case 3: + case 4: + if (p) { + var b = a.nodeValue, + d = b.match(t); + if (d) { + var c = b.substring(0, d.index); + a.nodeValue = c; + (b = b.substring(d.index + d[0].length)) && + a.parentNode.insertBefore(s.createTextNode(b), a.nextSibling); + h(a); + c || a.parentNode.removeChild(a); + } + } + } + } + function h(a) { + function b(a, d) { + var e = d ? a.cloneNode(!1) : a, + f = a.parentNode; + if (f) { + var f = b(f, 1), + g = a.nextSibling; + f.appendChild(e); + for (var h = g; h; h = g) (g = h.nextSibling), f.appendChild(h); + } + return e; + } + for (; !a.nextSibling; ) if (((a = a.parentNode), !a)) return; + for ( + var a = b(a.nextSibling, 0), e; + (e = a.parentNode) && e.nodeType === 1; + + ) + a = e; + d.push(a); + } + var k = /(?:^|\s)nocode(?:\s|$)/, + t = /\r\n?|\n/, + s = a.ownerDocument, + l; + a.currentStyle + ? (l = a.currentStyle.whiteSpace) + : window.getComputedStyle && + (l = s.defaultView + .getComputedStyle(a, q) + .getPropertyValue("white-space")); + var p = l && "pre" === l.substring(0, 3); + for (l = s.createElement("LI"); a.firstChild; ) l.appendChild(a.firstChild); + for (var d = [l], g = 0; g < d.length; ++g) e(d[g]); + m === (m | 0) && d[0].setAttribute("value", m); + var r = s.createElement("OL"); + r.className = "linenums"; + for (var n = Math.max(0, (m - 1) | 0) || 0, g = 0, z = d.length; g < z; ++g) + (l = d[g]), + (l.className = "L" + (g + n) % 10), + l.firstChild || l.appendChild(s.createTextNode("\xa0")), + r.appendChild(l); + a.appendChild(r); + } + function k(a, m) { + for (var e = m.length; --e >= 0; ) { + var h = m[e]; + A.hasOwnProperty(h) + ? window.console && + console.warn("cannot override language handler %s", h) + : (A[h] = a); + } + } + function C(a, m) { + if (!a || !A.hasOwnProperty(a)) + a = /^\s*= o && (h += 2); + e >= c && (a += 2); + } + } catch (w) { + "console" in window && console.log(w && w.stack ? w.stack : w); + } + } + var v = ["break,continue,do,else,for,if,return,while"], + w = [ + [ + v, + "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile" + ], + "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof" + ], + F = [ + w, + "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where" + ], + G = [ + w, + "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient" + ], + H = [ + G, + "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var" + ], + w = [ + w, + "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN" + ], + I = [ + v, + "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None" + ], + J = [ + v, + "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END" + ], + v = [v, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"], + K = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/, + N = /\S/, + O = u({ + keywords: [ + F, + H, + w, + "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" + + I, + J, + v + ], + hashComments: !0, + cStyleComments: !0, + multiLineStrings: !0, + regexLiterals: !0 + }), + A = {}; + k(O, ["default-code"]); + k( + x( + [], + [ + ["pln", /^[^]*(?:>|$)/], + ["com", /^<\!--[\S\s]*?(?:--\>|$)/], + ["lang-", /^<\?([\S\s]+?)(?:\?>|$)/], + ["lang-", /^<%([\S\s]+?)(?:%>|$)/], + ["pun", /^(?:<[%?]|[%?]>)/], + ["lang-", /^]*>([\S\s]+?)<\/xmp\b[^>]*>/i], + ["lang-js", /^]*>([\S\s]*?)(<\/script\b[^>]*>)/i], + ["lang-css", /^]*>([\S\s]*?)(<\/style\b[^>]*>)/i], + ["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i] + ] + ), + ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"] + ); + k( + x( + [ + ["pln", /^\s+/, q, " \t\r\n"], + ["atv", /^(?:"[^"]*"?|'[^']*'?)/, q, "\"'"] + ], + [ + ["tag", /^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i], + ["atn", /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], + ["lang-uq.val", /^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/], + ["pun", /^[/<->]+/], + ["lang-js", /^on\w+\s*=\s*"([^"]+)"/i], + ["lang-js", /^on\w+\s*=\s*'([^']+)'/i], + ["lang-js", /^on\w+\s*=\s*([^\s"'>]+)/i], + ["lang-css", /^style\s*=\s*"([^"]+)"/i], + ["lang-css", /^style\s*=\s*'([^']+)'/i], + ["lang-css", /^style\s*=\s*([^\s"'>]+)/i] + ] + ), + ["in.tag"] + ); + k(x([], [["atv", /^[\S\s]+/]]), ["uq.val"]); + k(u({ keywords: F, hashComments: !0, cStyleComments: !0, types: K }), [ + "c", + "cc", + "cpp", + "cxx", + "cyc", + "m" + ]); + k(u({ keywords: "null,true,false" }), ["json"]); + k( + u({ + keywords: H, + hashComments: !0, + cStyleComments: !0, + verbatimStrings: !0, + types: K + }), + ["cs"] + ); + k(u({ keywords: G, cStyleComments: !0 }), ["java"]); + k(u({ keywords: v, hashComments: !0, multiLineStrings: !0 }), [ + "bsh", + "csh", + "sh" + ]); + k( + u({ + keywords: I, + hashComments: !0, + multiLineStrings: !0, + tripleQuotedStrings: !0 + }), + ["cv", "py"] + ); + k( + u({ + keywords: + "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END", + hashComments: !0, + multiLineStrings: !0, + regexLiterals: !0 + }), + ["perl", "pl", "pm"] + ); + k( + u({ + keywords: J, + hashComments: !0, + multiLineStrings: !0, + regexLiterals: !0 + }), + ["rb"] + ); + k(u({ keywords: w, cStyleComments: !0, regexLiterals: !0 }), ["js"]); + k( + u({ + keywords: + "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", + hashComments: 3, + cStyleComments: !0, + multilineStrings: !0, + tripleQuotedStrings: !0, + regexLiterals: !0 + }), + ["coffee"] + ); + k(x([], [["str", /^[\S\s]+/]]), ["regex"]); + window.prettyPrintOne = function(a, m, e) { + var h = document.createElement("PRE"); + h.innerHTML = a; + e && D(h, e); + E({ g: m, i: e, h: h }); + return h.innerHTML; + }; + window.prettyPrint = function(a) { + function m() { + for ( + var e = window.PR_SHOULD_USE_CONTINUATION ? l.now() + 250 : Infinity; + p < h.length && l.now() < e; + p++ + ) { + var n = h[p], + k = n.className; + if (k.indexOf("prettyprint") >= 0) { + var k = k.match(g), + f, + b; + if ((b = !k)) { + b = n; + for (var o = void 0, c = b.firstChild; c; c = c.nextSibling) + var i = c.nodeType, + o = + i === 1 + ? o ? b : c + : i === 3 ? (N.test(c.nodeValue) ? b : o) : o; + b = (f = o === b ? void 0 : o) && "CODE" === f.tagName; + } + b && (k = f.className.match(g)); + k && (k = k[1]); + b = !1; + for (o = n.parentNode; o; o = o.parentNode) + if ( + (o.tagName === "pre" || + o.tagName === "code" || + o.tagName === "xmp") && + o.className && + o.className.indexOf("prettyprint") >= 0 + ) { + b = !0; + break; + } + b || + ((b = (b = n.className.match(/\blinenums\b(?::(\d+))?/)) + ? b[1] && b[1].length ? +b[1] : !0 + : !1) && D(n, b), + (d = { g: k, h: n, i: b }), + E(d)); + } + } + p < h.length ? setTimeout(m, 250) : a && a(); + } + for ( + var e = [ + document.getElementsByTagName("pre"), + document.getElementsByTagName("code"), + document.getElementsByTagName("xmp") + ], + h = [], + k = 0; + k < e.length; + ++k + ) + for (var t = 0, s = e[k].length; t < s; ++t) h.push(e[k][t]); + var e = q, + l = Date; + l.now || + (l = { + now: function() { + return +new Date(); + } + }); + var p = 0, + d, + g = /\blang(?:uage)?-([\w.]+)(?!\S)/; + m(); + }; + window.PR = { + createSimpleLexer: x, + registerLangHandler: k, + sourceDecorator: u, + PR_ATTRIB_NAME: "atn", + PR_ATTRIB_VALUE: "atv", + PR_COMMENT: "com", + PR_DECLARATION: "dec", + PR_KEYWORD: "kwd", + PR_LITERAL: "lit", + PR_NOCODE: "nocode", + PR_PLAIN: "pln", + PR_PUNCTUATION: "pun", + PR_SOURCE: "src", + PR_STRING: "str", + PR_TAG: "tag", + PR_TYPE: "typ" + }; +})(); From 94d0a1ca151df43512e4d7ae672bb5b4e4027141 Mon Sep 17 00:00:00 2001 From: Amanjot Singh Date: Fri, 25 Jun 2021 01:16:58 +0530 Subject: [PATCH 267/292] Add Model Upload Progress Bar --- .meteor/packages | 1 + .meteor/versions | 1 + imports/ui/pages/cfs_uploader.html | 2 +- imports/ui/pages/cfs_uploader.js | 3 +++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.meteor/packages b/.meteor/packages index 793587ed..0b127468 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -60,3 +60,4 @@ github-config-ui@1.0.1 google-config-ui@1.0.1 dynamic-import@0.6.0 underscore@1.0.10 +mrt:nprogress diff --git a/.meteor/versions b/.meteor/versions index 0ca7483e..03134c0e 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -121,6 +121,7 @@ mongo-decimal@0.1.2 mongo-dev-server@1.1.0 mongo-id@1.0.8 mongo-livedata@1.0.12 +mrt:nprogress@0.2.0 npm-bcrypt@0.9.3 npm-mongo@3.9.0 oauth@1.3.2 diff --git a/imports/ui/pages/cfs_uploader.html b/imports/ui/pages/cfs_uploader.html index 402e0605..34a32d8a 100644 --- a/imports/ui/pages/cfs_uploader.html +++ b/imports/ui/pages/cfs_uploader.html @@ -1,7 +1,7 @@