sped up form rendering

This commit is contained in:
David Baldwynn 2017-04-11 00:10:36 -07:00
parent 3f20bcf712
commit e64389d42e
No known key found for this signature in database
GPG key ID: 15D1C13202224A9B
16 changed files with 20702 additions and 129 deletions

View file

@ -174,7 +174,7 @@ exports.uploadTemp = function(req, res) {
*/
exports.readForRender = function(req, res) {
var newForm = req.form.toJSON();
console.log(req.user);
if (!newForm.isLive && !req.user) {
return res.status(404).send({
message: 'Form Does Not Exist'

View file

@ -61,47 +61,6 @@
<section ui-view></section>
</section>
<script src="/static/lib/file-saver.js/FileSaver.js" type="text/javascript"></script>
<!--Embedding The User Object-->
<script type="text/javascript">
var user = {{ user | json | safe }};
</script>
<!--Embedding signupDisabled, socketPort and socketUrl Boolean-->
<script type="text/javascript">
var signupDisabled = {{signupDisabled | safe}};
var socketPort = {{socketPort | safe}};
var socketUrl = "{{socketUrl | safe}}";
var subdomainsDisabled = {{subdomainsDisabled | safe}};
</script>
<!--Socket.io Client Dependency-->
<script src="/static/lib/socket.io-client/dist/socket.io.min.js"></script>
<!--Bower JS dependencies-->
{% for bowerJSFile in bowerJSFiles %}
<script type="text/javascript" src="{{bowerJSFile}}"></script>
{% endfor %}
<!-- end Bower JS dependencies-->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-strap/2.3.8/angular-strap.min.js"></script>
<!--Application JavaScript Files-->
{% for jsFile in formJSFiles %}
<script type="text/javascript" src="{{jsFile}}"></script>
{% endfor %}
<!-- end Application Javascript dependencies-->
{% if process.env.NODE_ENV === 'development' %}
<!--Livereload script rendered -->
<script type="text/javascript" src="http://{{request.hostname}}:35729/livereload.js"></script>
{% endif %}
<script src="https://cdn.ravenjs.com/2.3.0/angular/raven.min.js"></script>
<script>
Raven.config('https://825fefd6b4ed4a4da199c1b832ca845c@sentry.tellform.com/2').install();
</script>
<!-- [if lt IE 9]>
<section class="browsehappy jumbotron hide">
<h1>Hello there!</h1>
@ -111,7 +70,39 @@
</section>
<![endif] -->
<script>
<!--Embedding The User Object signupDisabled, socketPort and socketUrl Boolean--->
<script type="text/javascript">
var user = {{ user | json | safe }};
var signupDisabled = {{signupDisabled | safe}};
var socketPort = {{socketPort | safe}};
var socketUrl = "{{socketUrl | safe}}";
var subdomainsDisabled = {{subdomainsDisabled | safe}};
</script>
<!--Socket.io Client Dependency-->
<script src="/static/lib/socket.io-client/dist/socket.io.min.js" async></script>
<script src="/static/lib/jquery/dist/jquery.min.js" type="text/javascript"></script>
<script src="/static/dist/vendor.min.js"></script>
<!--Application JavaScript Files-->
{% for jsFile in formJSFiles %}
<script type="text/javascript" src="{{jsFile}}"></script>
{% endfor %}
<!-- end Application Javascript dependencies-->
{% if process.env.NODE_ENV === 'development' %}
<!--Livereload script rendered -->
<script async type="text/javascript" src="http://{{request.hostname}}:35729/livereload.js"></script>
{% endif %}
<script async>
Raven.config('https://825fefd6b4ed4a4da199c1b832ca845c@sentry.tellform.com/2').install();
</script>
<script async>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

View file

@ -63,7 +63,6 @@ module.exports.removeRootDir = function(files, removeRoot, addRoot) {
* Get the app's bower dependencies
*/
module.exports.getBowerJSAssets = function() {
return this.removeRootDir(minBowerFiles('**/**.js'), 'public/', 'static/');
};
module.exports.getBowerCSSAssets = function() {

View file

@ -143,7 +143,6 @@ module.exports = function(db) {
// TODO: check path and query strings are preserved
// reassign url
console.log("path: " + path);
req.url = path;
req.userId = user._id;
@ -169,6 +168,7 @@ module.exports = function(db) {
//Setup Prerender.io
app.use(require('prerender-node').set('prerenderToken', process.env.PRERENDER_TOKEN));
// Passing the request url to environment locals
app.use(function(req, res, next) {
if(config.baseUrl === ''){
@ -185,7 +185,7 @@ module.exports = function(db) {
return (/json|text|javascript|css/).test(res.getHeader('Content-Type'));
},
// zlib option for compression level
level: 3
level: 9
}));
// Showing stack errors

View file

@ -1,5 +1,100 @@
'use strict';
var spawn = require('child_process').spawn;
var bowerFiles = require('main-bower-files');
var path = require('path');
var minBowerFiles = function(type){
return bowerFiles(type).map( function(path, index, arr) {
var newPath = path.replace(/.([^.]+)$/g, '.min.$1');
return exists( newPath ) ? newPath : path;
});
};
var removeRootDir = function(files, removeRoot, addRoot) {
return files.map(function(file) {
if (addRoot) return file.replace(path.join(process.cwd(), removeRoot), addRoot);
return file.replace(path.join(process.cwd(), removeRoot), '');
});
};
var allBowerFiles = bowerFiles({
filter: function(filePath){
return (filePath.indexOf('js') > 0 && filePath.indexOf('angular-ui-utils') === -1);
}
});
var bowerAllArray = ['public/lib/angular/angular.js',
'public/lib/angular-ui-select/dist/select.js',
'public/lib/v-button/dist/v-button.js',
'public/lib/angular-ui-scroll/dist/ui-scroll.js',
'public/lib/angular-resource/angular-resource.js',
'public/lib/angular-ui-router/release/angular-ui-router.js',
'public/lib/angular-sanitize/angular-sanitize.js',
'public/lib/angular-input-stars/angular-input-stars.js',
'public/lib/ng-file-upload/ng-file-upload.js',
'public/lib/angular-mocks/angular-mocks.js',
'public/lib/angular-bootstrap/ui-bootstrap-tpls.js',
'public/lib/angular-ui-scrollpoint/dist/scrollpoint.js',
'public/lib/angular-ui-event/dist/event.js',
'public/lib/angular-ui-mask/dist/mask.js',
'public/lib/angular-ui-validate/dist/validate.js',
'public/lib/angular-ui-indeterminate/dist/indeterminate.js',
'public/lib/angular-ui-uploader/dist/uploader.js',
'public/lib/raven-js/dist/raven.js',
'public/lib/jquery-ui/jquery-ui.js',
'public/lib/lodash/lodash.js',
'public/lib/angular-ui-sortable/sortable.js',
'public/lib/angular-permission/dist/angular-permission.js',
'public/lib/file-saver.js/FileSaver.js',
'public/lib/angular-bootstrap-colorpicker/js/bootstrap-colorpicker-module.js',
'public/lib/angular-ui-router-tabs/src/ui-router-tabs.js',
'public/lib/angular-scroll/angular-scroll.js',
'public/lib/angular-animate/angular-animate.js',
'public/lib/js-yaml/dist/js-yaml.js',
'public/lib/file-saver/FileSaver.js',
'public/lib/html2canvas/build/html2canvas.js',
'public/lib/jspdf/dist/jspdf.min.js',
'public/lib/jspdf-autotable/dist/jspdf.plugin.autotable.js',
'public/lib/angular-translate/angular-translate.js',
'public/lib/deep-diff/index.js',
'public/lib/jsep/build/jsep.js',
'public/lib/clipboard/dist/clipboard.js',
'public/lib/mobile-detect/mobile-detect.js',
'public/lib/angular-strap/dist/angular-strap.js',
'public/lib/angular-strap/dist/angular-strap.tpl.js',
'public/lib/bootstrap/dist/js/bootstrap.js',
'public/lib/angular-ui-utils/index.js',
'public/lib/angular-raven/angular-raven.js',
'public/lib/angular-ui-date/src/date.js',
'public/lib/angular-busy/dist/angular-busy.js',
'public/lib/tableExport.jquery.plugin/tableExport.min.js',
'public/lib/ngclipboard/dist/ngclipboard.js' ];
var bowerArray = ['public/lib/angular/angular.min.js',
'public/lib/angular-scroll/angular-scroll.min.js',
'public/lib/angular-ui-select/dist/select.min.js',
'public/lib/v-button/dist/v-button.min.js',
'public/lib/angular-resource/angular-resource.min.js',
'public/lib/angular-ui-router/release/angular-ui-router.min.js',
'public/lib/angular-bootstrap/ui-bootstrap-tpls.js',
'public/lib/angular-translate/angular-translate.min.js',
'public/lib/ng-file-upload/ng-file-upload-all.min.js',
'public/lib/angular-ui-date/src/date.js',
'public/lib/angular-input-stars/angular-input-stars.js',
'public/lib/jsep/build/jsep.min.js',
'public/lib/raven-js/dist/raven.min.js',
'public/lib/lodash/lodash.min.js',
'public/lib/mobile-detect/mobile-detect.js',
'public/lib/angular-sanitize/angular-sanitize.min.js'];
/*
'public/lib/bootstrap/dist/js/bootstrap.js',
'public/lib/angular-raven/angular-raven.js',
'public/lib/angular-busy/dist/angular-busy.js'];
*/
module.exports = function(grunt) {
require('jit-grunt')(grunt);
@ -90,16 +185,38 @@ module.exports = function(grunt) {
}
},
uglify: {
production: {
productionAdmin: {
options: {
mangle: false,
compress: true
compress: true,
mangled: true
},
files: {
'public/dist/application.min.js': 'public/dist/application.js',
'public/dist/form-application.min.js': 'public/dist/form-application.js'
}
}
},
productionForms: {
options: {
mangled: true,
beautify: true
},
files: {
'public/dist/vendor_forms_uglified.js': bowerArray
}
}
},
'closure-compiler': {
vendor_file: {
closurePath: './scripts',
js: 'public/dist/vendor_forms_uglified.js',
jsOutputFile: 'public/dist/vendor.min.js',
maxBuffer: 10000000000,
options: {
warning_level: 'QUIET',
compilation_level: 'SIMPLE_OPTIMIZATIONS',
language_in: 'ECMASCRIPT5'
}
}
},
cssmin: {
combine: {
@ -320,7 +437,7 @@ module.exports = function(grunt) {
grunt.registerTask('lint:tests', ['jshint:allTests']);
// Build task(s).
grunt.registerTask('build', ['lint', 'loadConfig', 'cssmin', 'ngAnnotate', 'uglify', 'html2js:main', 'html2js:forms']);
grunt.registerTask('build', ['lint', 'loadConfig', 'cssmin', 'ngAnnotate', 'uglify', 'closure-compiler', 'html2js:main', 'html2js:forms']);
//Setup task(s).
grunt.registerTask('setup', ['execute']);

View file

@ -99,9 +99,14 @@
"coveralls": "^2.11.4",
"cross-spawn": "^5.0.0",
"del": "^2.2.2",
"grunt-closure-compiler": "0.0.21",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-uglify": "^0.11.1",
"grunt-execute": "^0.2.2",
"grunt-mocha-istanbul": "^3.0.1",
"grunt-mocha-test": "~0.12.1",
"grunt-usemin": "^3.1.1",
"grunt-wiredep": "^3.0.1",
"istanbul": "^0.4.0",
"jasmine-core": "^2.4.1",

File diff suppressed because one or more lines are too long

View file

@ -4,7 +4,7 @@
var ApplicationConfiguration = (function() {
// Init module configuration options
var applicationModuleName = 'TellForm-Form';
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'ngSanitize', 'vButton', 'ngResource', 'TellForm-Form.form_templates', 'ui.router', 'ui.bootstrap', 'ui.utils', 'pascalprecht.translate'];
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'ngSanitize', 'vButton', 'ngResource', 'TellForm-Form.form_templates', 'ui.router', 'ui.bootstrap', 'pascalprecht.translate'];
// Add a new vertical module
var registerModule = function(moduleName, dependencies) {
@ -104,8 +104,7 @@ angular.module('TellForm-Form.form_templates', []).run(['$templateCache', functi
// Use Application configuration module to register a new module
ApplicationConfiguration.registerModule('view-form', [
'ngFileUpload', 'ui.router.tabs', 'ui.date', 'ui.sortable',
'angular-input-stars', 'pascalprecht.translate'
'ngFileUpload', 'ui.date', 'angular-input-stars'
]);
'use strict';
@ -1212,9 +1211,9 @@ angular.module('view-form').factory('Forms', ['$resource', 'VIEW_FORM_URL',
var url = '';
console.log("$window.socketPort: "+$window.socketPort);
console.log("$window.socketUrl: "+$window.socketUrl);
if($window.socketPort && $window.socketUrl){
if($window.socketUrl && $window.socketPort){
url = window.location.protocol + '//' + $window.socketUrl + ':' + $window.socketPort;
} else if ($window.socketUrl && !$window.socketUrl){
} else if ($window.socketUrl && !$window.socketPort){
url = window.location.protocol + '//' + $window.socketUrl;
} else if ($window.socketPort){
url = window.location.protocol + '//' + window.location.hostname + ':' + $window.socketPort;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

0
public/dist/vendor.min.js.report.txt vendored Normal file
View file

18
public/dist/vendor_forms_uglified.js vendored Normal file

File diff suppressed because one or more lines are too long

19430
public/dist/vendor_uglified.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -4,7 +4,7 @@
var ApplicationConfiguration = (function() {
// Init module configuration options
var applicationModuleName = 'TellForm-Form';
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'ngSanitize', 'vButton', 'ngResource', 'TellForm-Form.form_templates', 'ui.router', 'ui.bootstrap', 'ui.utils', 'pascalprecht.translate'];
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'ngSanitize', 'vButton', 'ngResource', 'TellForm-Form.form_templates', 'ui.router', 'ui.bootstrap', 'pascalprecht.translate'];
// Add a new vertical module
var registerModule = function(moduleName, dependencies) {

View file

@ -20,9 +20,9 @@
var url = '';
console.log("$window.socketPort: "+$window.socketPort);
console.log("$window.socketUrl: "+$window.socketUrl);
if($window.socketPort && $window.socketUrl){
if($window.socketUrl && $window.socketPort){
url = window.location.protocol + '//' + $window.socketUrl + ':' + $window.socketPort;
} else if ($window.socketUrl && !$window.socketUrl){
} else if ($window.socketUrl && !$window.socketPort){
url = window.location.protocol + '//' + $window.socketUrl;
} else if ($window.socketPort){
url = window.location.protocol + '//' + window.location.hostname + ':' + $window.socketPort;

View file

@ -2,6 +2,5 @@
// Use Application configuration module to register a new module
ApplicationConfiguration.registerModule('view-form', [
'ngFileUpload', 'ui.router.tabs', 'ui.date', 'ui.sortable',
'angular-input-stars', 'pascalprecht.translate'
'ngFileUpload', 'ui.date', 'angular-input-stars'
]);