mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-16 19:21:52 +00:00
standardize code
This commit is contained in:
@@ -31,7 +31,7 @@ gulp.task('env', function () {
|
|||||||
.pipe(gulp.dest('build/config'))
|
.pipe(gulp.dest('build/config'))
|
||||||
})
|
})
|
||||||
|
|
||||||
gulp.task('js', function (){
|
gulp.task('js', function () {
|
||||||
return gulp.src(['src/**/*.js'])
|
return gulp.src(['src/**/*.js'])
|
||||||
.pipe(changed('build'))
|
.pipe(changed('build'))
|
||||||
.pipe(gulp.dest('build'))
|
.pipe(gulp.dest('build'))
|
||||||
@@ -43,14 +43,14 @@ gulp.task('styl', function () {
|
|||||||
.pipe(styl())
|
.pipe(styl())
|
||||||
.pipe(autoprefixer())
|
.pipe(autoprefixer())
|
||||||
.pipe(gulp.dest('build'))
|
.pipe(gulp.dest('build'))
|
||||||
.pipe(notify("Stylus!!"))
|
.pipe(notify('Stylus!!'))
|
||||||
.pipe(livereload())
|
.pipe(livereload())
|
||||||
})
|
})
|
||||||
|
|
||||||
gulp.task('tpls', function(){
|
gulp.task('tpls', function () {
|
||||||
return gulp.src('src/**/*.tpl.html')
|
return gulp.src('src/**/*.tpl.html')
|
||||||
.pipe(templateCache())
|
.pipe(templateCache())
|
||||||
.pipe(notify("Tpls Done!! :)"))
|
.pipe(notify('Tpls Done!! :)'))
|
||||||
.pipe(gulp.dest('build'))
|
.pipe(gulp.dest('build'))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
7
docs/events.md
Normal file
7
docs/events.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Event List
|
||||||
|
|
||||||
|
|name|Description|Delivery|
|
||||||
|
|----|----|----|
|
||||||
|
|userSignIn|a user signed in||
|
||||||
|
|userSignOut|a user signed out||
|
||||||
|
|snippetUpdated|snippet has been updated or created|snippet|
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
|
/* global angular */
|
||||||
angular.module('codexen')
|
angular.module('codexen')
|
||||||
.constant('aceModes', ['ABAP','ABC','ActionScript','ADA','Apache_Conf','AsciiDoc','Assembly_x86','AutoHotKey','BatchFile','C9Search','C_Cpp','Cirru','Clojure','Cobol','coffee','ColdFusion','CSharp','CSS','Curly','D','Dart','Diff','Dockerfile','Dot','Dummy','DummySyntax','Eiffel','EJS','Elixir','Elm','Erlang','Forth','FTL','Gcode','Gherkin','Gitignore','Glsl','golang','Groovy','HAML','Handlebars','Haskell','haXe','HTML','HTML_Ruby','INI','Io','Jack','Jade','Java','JavaScript','JSON','JSONiq','JSP','JSX','Julia','LaTeX','Lean','LESS','Liquid','Lisp','LiveScript','LogiQL','LSL','Lua','LuaPage','Lucene','Makefile','Markdown','Mask','MATLAB','MEL','MUSHCode','MySQL','Nix','ObjectiveC','OCaml','Pascal','Perl','pgSQL','PHP','Powershell','Praat','Prolog','Properties','Protobuf','Python','R','RDoc','RHTML','Ruby','Rust','SASS','SCAD','Scala','Scheme','SCSS','SH','SJS','Smarty','snippets','Soy_Template','Space','SQL','SQLServer','Stylus','SVG','Tcl','Tex','Text','Textile','Toml','Twig','Typescript','Vala','VBScript','Velocity','Verilog','VHDL','XML','XQuery','YAML','Django'])
|
.constant('aceModes', ['ABAP', 'ABC', 'ActionScript', 'ADA', 'Apache_Conf', 'AsciiDoc', 'Assembly_x86', 'AutoHotKey', 'BatchFile', 'C9Search', 'C_Cpp', 'Cirru', 'Clojure', 'Cobol', 'coffee', 'ColdFusion', 'CSharp', 'CSS', 'Curly', 'D', 'Dart', 'Diff', 'Dockerfile', 'Dot', 'Dummy', 'DummySyntax', 'Eiffel', 'EJS', 'Elixir', 'Elm', 'Erlang', 'Forth', 'FTL', 'Gcode', 'Gherkin', 'Gitignore', 'Glsl', 'golang', 'Groovy', 'HAML', 'Handlebars', 'Haskell', 'haXe', 'HTML', 'HTML_Ruby', 'INI', 'Io', 'Jack', 'Jade', 'Java', 'JavaScript', 'JSON', 'JSONiq', 'JSP', 'JSX', 'Julia', 'LaTeX', 'Lean', 'LESS', 'Liquid', 'Lisp', 'LiveScript', 'LogiQL', 'LSL', 'Lua', 'LuaPage', 'Lucene', 'Makefile', 'Markdown', 'Mask', 'MATLAB', 'MEL', 'MUSHCode', 'MySQL', 'Nix', 'ObjectiveC', 'OCaml', 'Pascal', 'Perl', 'pgSQL', 'PHP', 'Powershell', 'Praat', 'Prolog', 'Properties', 'Protobuf', 'Python', 'R', 'RDoc', 'RHTML', 'Ruby', 'Rust', 'SASS', 'SCAD', 'Scala', 'Scheme', 'SCSS', 'SH', 'SJS', 'Smarty', 'snippets', 'Soy_Template', 'Space', 'SQL', 'SQLServer', 'Stylus', 'SVG', 'Tcl', 'Tex', 'Text', 'Textile', 'Toml', 'Twig', 'Typescript', 'Vala', 'VBScript', 'Velocity', 'Verilog', 'VHDL', 'XML', 'XQuery', 'YAML', 'Django'])
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
/* global angular */
|
/* global angular */
|
||||||
angular.module('codexen')
|
angular.module('codexen')
|
||||||
.controller('AppController', function ($scope) {
|
.controller('AppController', function ($scope) {})
|
||||||
|
|
||||||
})
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* global angular */
|
/* global angular */
|
||||||
angular.module('codexen')
|
angular.module('codexen')
|
||||||
.controller('NewSnippetModalController', function ($modalInstance, aceModes, $log, Snippet, $rootScope, Tag){
|
.controller('NewSnippetModalController', function ($modalInstance, aceModes, $log, Snippet, $rootScope, Tag) {
|
||||||
var vm = this
|
var vm = this
|
||||||
|
|
||||||
vm.aceModes = aceModes
|
vm.aceModes = aceModes
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ angular.module('codexen')
|
|||||||
$auth.login({
|
$auth.login({
|
||||||
email: vm.email,
|
email: vm.email,
|
||||||
password: vm.password
|
password: vm.password
|
||||||
}).then(function(data){
|
}).then(function (data) {
|
||||||
console.log(data)
|
console.log(data)
|
||||||
$rootScope.$broadcast('userSignIn')
|
$rootScope.$broadcast('userSignIn')
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
/* global angular */
|
/* global angular */
|
||||||
angular.module('codexen')
|
angular.module('codexen')
|
||||||
.controller('HomeController', function ($auth, Snippet, $scope) {
|
.controller('HomeController', function ($auth, Snippet, $scope) {})
|
||||||
|
|
||||||
})
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ angular.module('codexen')
|
|||||||
vm.snippets = data
|
vm.snippets = data
|
||||||
vm.isGuest = false
|
vm.isGuest = false
|
||||||
})
|
})
|
||||||
}else {
|
} else {
|
||||||
vm.isLoaded = true
|
vm.isLoaded = true
|
||||||
vm.isGuest = true
|
vm.isGuest = true
|
||||||
vm.snippets = void 0
|
vm.snippets = void 0
|
||||||
@@ -45,8 +45,8 @@ angular.module('codexen')
|
|||||||
if (vm.snippets[i]._id === currentSnippetId) {
|
if (vm.snippets[i]._id === currentSnippetId) {
|
||||||
var targetSnippet = null
|
var targetSnippet = null
|
||||||
|
|
||||||
if (i === 0) targetSnippet = vm.snippets[i+1]
|
if (i === 0) targetSnippet = vm.snippets[i + 1]
|
||||||
else targetSnippet = vm.snippets[i-1]
|
else targetSnippet = vm.snippets[i - 1]
|
||||||
|
|
||||||
console.log('target', targetSnippet)
|
console.log('target', targetSnippet)
|
||||||
$state.go('snippets.detail', {id: targetSnippet._id})
|
$state.go('snippets.detail', {id: targetSnippet._id})
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
'use strict';
|
/* global angular */
|
||||||
|
'use strict'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Binds a ACE Editor widget
|
* Binds a ACE Editor widget
|
||||||
@@ -6,9 +7,8 @@
|
|||||||
angular.module('ui.ace', [])
|
angular.module('ui.ace', [])
|
||||||
.constant('uiAceConfig', {})
|
.constant('uiAceConfig', {})
|
||||||
.directive('uiAce', ['uiAceConfig', function (uiAceConfig) {
|
.directive('uiAce', ['uiAceConfig', function (uiAceConfig) {
|
||||||
|
|
||||||
if (angular.isUndefined(window.ace)) {
|
if (angular.isUndefined(window.ace)) {
|
||||||
throw new Error('ui-ace need ace to work... (o rly?)');
|
throw new Error('ui-ace need ace to work... (o rly?)')
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -28,41 +28,40 @@ angular.module('ui.ace', [])
|
|||||||
* @param session ACE editor session
|
* @param session ACE editor session
|
||||||
* @param {object} opts Options to be set
|
* @param {object} opts Options to be set
|
||||||
*/
|
*/
|
||||||
var setOptions = function(acee, session, opts) {
|
var setOptions = function (acee, session, opts) {
|
||||||
|
|
||||||
// sets the ace worker path, if running from concatenated
|
// sets the ace worker path, if running from concatenated
|
||||||
// or minified source
|
// or minified source
|
||||||
if (angular.isDefined(opts.workerPath)) {
|
if (angular.isDefined(opts.workerPath)) {
|
||||||
var config = window.ace.require('ace/config');
|
var config = window.ace.require('ace/config')
|
||||||
config.set('workerPath', opts.workerPath);
|
config.set('workerPath', opts.workerPath)
|
||||||
}
|
}
|
||||||
// ace requires loading
|
// ace requires loading
|
||||||
if (angular.isDefined(opts.require)) {
|
if (angular.isDefined(opts.require)) {
|
||||||
opts.require.forEach(function (n) {
|
opts.require.forEach(function (n) {
|
||||||
window.ace.require(n);
|
window.ace.require(n)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
// Boolean options
|
// Boolean options
|
||||||
if (angular.isDefined(opts.showGutter)) {
|
if (angular.isDefined(opts.showGutter)) {
|
||||||
acee.renderer.setShowGutter(opts.showGutter);
|
acee.renderer.setShowGutter(opts.showGutter)
|
||||||
}
|
}
|
||||||
if (angular.isDefined(opts.useWrapMode)) {
|
if (angular.isDefined(opts.useWrapMode)) {
|
||||||
session.setUseWrapMode(opts.useWrapMode);
|
session.setUseWrapMode(opts.useWrapMode)
|
||||||
}
|
}
|
||||||
if (angular.isDefined(opts.showInvisibles)) {
|
if (angular.isDefined(opts.showInvisibles)) {
|
||||||
acee.renderer.setShowInvisibles(opts.showInvisibles);
|
acee.renderer.setShowInvisibles(opts.showInvisibles)
|
||||||
}
|
}
|
||||||
if (angular.isDefined(opts.showIndentGuides)) {
|
if (angular.isDefined(opts.showIndentGuides)) {
|
||||||
acee.renderer.setDisplayIndentGuides(opts.showIndentGuides);
|
acee.renderer.setDisplayIndentGuides(opts.showIndentGuides)
|
||||||
}
|
}
|
||||||
if (angular.isDefined(opts.useSoftTabs)) {
|
if (angular.isDefined(opts.useSoftTabs)) {
|
||||||
session.setUseSoftTabs(opts.useSoftTabs);
|
session.setUseSoftTabs(opts.useSoftTabs)
|
||||||
}
|
}
|
||||||
if (angular.isDefined(opts.showPrintMargin)) {
|
if (angular.isDefined(opts.showPrintMargin)) {
|
||||||
acee.setShowPrintMargin(opts.showPrintMargin);
|
acee.setShowPrintMargin(opts.showPrintMargin)
|
||||||
}
|
}
|
||||||
if (angular.isDefined(opts.maxLines)) {
|
if (angular.isDefined(opts.maxLines)) {
|
||||||
if(opts.maxLines < 0) opts.maxLines = Infinity
|
if (opts.maxLines < 0) opts.maxLines = Infinity
|
||||||
acee.setOptions({
|
acee.setOptions({
|
||||||
maxLines: opts.maxLines
|
maxLines: opts.maxLines
|
||||||
})
|
})
|
||||||
@@ -78,37 +77,37 @@ angular.module('ui.ace', [])
|
|||||||
mac: 'Command-F'
|
mac: 'Command-F'
|
||||||
},
|
},
|
||||||
exec: function () {
|
exec: function () {
|
||||||
return false;
|
return false
|
||||||
},
|
},
|
||||||
readOnly: true
|
readOnly: true
|
||||||
}
|
}
|
||||||
]);
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Basic options
|
// Basic options
|
||||||
if (angular.isString(opts.theme)) {
|
if (angular.isString(opts.theme)) {
|
||||||
acee.setTheme('ace/theme/' + opts.theme);
|
acee.setTheme('ace/theme/' + opts.theme)
|
||||||
}
|
}
|
||||||
if (angular.isString(opts.mode)) {
|
if (angular.isString(opts.mode)) {
|
||||||
session.setMode('ace/mode/' + opts.mode);
|
session.setMode('ace/mode/' + opts.mode)
|
||||||
}
|
}
|
||||||
// Advanced options
|
// Advanced options
|
||||||
if (angular.isDefined(opts.firstLineNumber)) {
|
if (angular.isDefined(opts.firstLineNumber)) {
|
||||||
if (angular.isNumber(opts.firstLineNumber)) {
|
if (angular.isNumber(opts.firstLineNumber)) {
|
||||||
session.setOption('firstLineNumber', opts.firstLineNumber);
|
session.setOption('firstLineNumber', opts.firstLineNumber)
|
||||||
} else if (angular.isFunction(opts.firstLineNumber)) {
|
} else if (angular.isFunction(opts.firstLineNumber)) {
|
||||||
session.setOption('firstLineNumber', opts.firstLineNumber());
|
session.setOption('firstLineNumber', opts.firstLineNumber())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// advanced options
|
// advanced options
|
||||||
var key, obj;
|
var key, obj
|
||||||
if (angular.isDefined(opts.advanced)) {
|
if (angular.isDefined(opts.advanced)) {
|
||||||
for (key in opts.advanced) {
|
for (key in opts.advanced) {
|
||||||
// create a javascript object with the key and value
|
// create a javascript object with the key and value
|
||||||
obj = { name: key, value: opts.advanced[key] };
|
obj = { name: key, value: opts.advanced[key] }
|
||||||
// try to assign the option to the ace editor
|
// try to assign the option to the ace editor
|
||||||
acee.setOption(obj.name, obj.value);
|
acee.setOption(obj.name, obj.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,42 +115,41 @@ angular.module('ui.ace', [])
|
|||||||
if (angular.isDefined(opts.rendererOptions)) {
|
if (angular.isDefined(opts.rendererOptions)) {
|
||||||
for (key in opts.rendererOptions) {
|
for (key in opts.rendererOptions) {
|
||||||
// create a javascript object with the key and value
|
// create a javascript object with the key and value
|
||||||
obj = { name: key, value: opts.rendererOptions[key] };
|
obj = { name: key, value: opts.rendererOptions[key] }
|
||||||
// try to assign the option to the ace editor
|
// try to assign the option to the ace editor
|
||||||
acee.renderer.setOption(obj.name, obj.value);
|
acee.renderer.setOption(obj.name, obj.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onLoad callbacks
|
// onLoad callbacks
|
||||||
angular.forEach(opts.callbacks, function (cb) {
|
angular.forEach(opts.callbacks, function (cb) {
|
||||||
if (angular.isFunction(cb)) {
|
if (angular.isFunction(cb)) {
|
||||||
cb(acee);
|
cb(acee)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
restrict: 'EA',
|
restrict: 'EA',
|
||||||
require: '?ngModel',
|
require: '?ngModel',
|
||||||
link: function (scope, elm, attrs, ngModel) {
|
link: function (scope, elm, attrs, ngModel) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Corresponds the uiAceConfig ACE configuration.
|
* Corresponds the uiAceConfig ACE configuration.
|
||||||
* @type object
|
* @type object
|
||||||
*/
|
*/
|
||||||
var options = uiAceConfig.ace || {};
|
var options = uiAceConfig.ace || {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* uiAceConfig merged with user options via json in attribute or data binding
|
* uiAceConfig merged with user options via json in attribute or data binding
|
||||||
* @type object
|
* @type object
|
||||||
*/
|
*/
|
||||||
var opts = angular.extend({}, options, scope.$eval(attrs.uiAce));
|
var opts = angular.extend({}, options, scope.$eval(attrs.uiAce))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ACE editor
|
* ACE editor
|
||||||
* @type object
|
* @type object
|
||||||
*/
|
*/
|
||||||
var acee = window.ace.edit(elm[0]);
|
var acee = window.ace.edit(elm[0])
|
||||||
acee.$blockScrolling = Infinity
|
acee.$blockScrolling = Infinity
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -159,21 +157,21 @@ angular.module('ui.ace', [])
|
|||||||
* @type object
|
* @type object
|
||||||
* @see [EditSession]{@link http://ace.c9.io/#nav=api&api=edit_session}
|
* @see [EditSession]{@link http://ace.c9.io/#nav=api&api=edit_session}
|
||||||
*/
|
*/
|
||||||
var session = acee.getSession();
|
var session = acee.getSession()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to a change listener created by the listener factory.
|
* Reference to a change listener created by the listener factory.
|
||||||
* @function
|
* @function
|
||||||
* @see listenerFactory.onChange
|
* @see listenerFactory.onChange
|
||||||
*/
|
*/
|
||||||
var onChangeListener;
|
var onChangeListener
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to a blur listener created by the listener factory.
|
* Reference to a blur listener created by the listener factory.
|
||||||
* @function
|
* @function
|
||||||
* @see listenerFactory.onBlur
|
* @see listenerFactory.onBlur
|
||||||
*/
|
*/
|
||||||
var onBlurListener;
|
var onBlurListener
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls a callback by checking its existing. The argument list
|
* Calls a callback by checking its existing. The argument list
|
||||||
@@ -182,7 +180,6 @@ angular.module('ui.ace', [])
|
|||||||
* @throws {Error} If the callback isn't a function
|
* @throws {Error} If the callback isn't a function
|
||||||
*/
|
*/
|
||||||
var executeUserCallback = function () {
|
var executeUserCallback = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The callback function grabbed from the array-like arguments
|
* The callback function grabbed from the array-like arguments
|
||||||
* object. The first argument should always be the callback.
|
* object. The first argument should always be the callback.
|
||||||
@@ -190,7 +187,7 @@ angular.module('ui.ace', [])
|
|||||||
* @see [arguments]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments}
|
* @see [arguments]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments}
|
||||||
* @type {*}
|
* @type {*}
|
||||||
*/
|
*/
|
||||||
var callback = arguments[0];
|
var callback = arguments[0]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Arguments to be passed to the callback. These are taken
|
* Arguments to be passed to the callback. These are taken
|
||||||
@@ -200,18 +197,18 @@ angular.module('ui.ace', [])
|
|||||||
* @see [arguments]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments}
|
* @see [arguments]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments}
|
||||||
* @type {Array}
|
* @type {Array}
|
||||||
*/
|
*/
|
||||||
var args = Array.prototype.slice.call(arguments, 1);
|
var args = Array.prototype.slice.call(arguments, 1)
|
||||||
|
|
||||||
if (angular.isDefined(callback)) {
|
if (angular.isDefined(callback)) {
|
||||||
scope.$evalAsync(function () {
|
scope.$evalAsync(function () {
|
||||||
if (angular.isFunction(callback)) {
|
if (angular.isFunction(callback)) {
|
||||||
callback(args);
|
callback(args)
|
||||||
} else {
|
} else {
|
||||||
throw new Error('ui-ace use a function as callback.');
|
throw new Error('ui-ace use a function as callback.')
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listener factory. Until now only change listeners can be created.
|
* Listener factory. Until now only change listeners can be created.
|
||||||
@@ -229,7 +226,7 @@ angular.module('ui.ace', [])
|
|||||||
*/
|
*/
|
||||||
onChange: function (callback) {
|
onChange: function (callback) {
|
||||||
return function (e) {
|
return function (e) {
|
||||||
var newValue = session.getValue();
|
var newValue = session.getValue()
|
||||||
|
|
||||||
if (ngModel && newValue !== ngModel.$viewValue &&
|
if (ngModel && newValue !== ngModel.$viewValue &&
|
||||||
// HACK make sure to only trigger the apply outside of the
|
// HACK make sure to only trigger the apply outside of the
|
||||||
@@ -237,12 +234,12 @@ angular.module('ui.ace', [])
|
|||||||
// for any text transformation !
|
// for any text transformation !
|
||||||
!scope.$$phase && !scope.$root.$$phase) {
|
!scope.$$phase && !scope.$root.$$phase) {
|
||||||
scope.$evalAsync(function () {
|
scope.$evalAsync(function () {
|
||||||
ngModel.$setViewValue(newValue);
|
ngModel.$setViewValue(newValue)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
executeUserCallback(callback, e, acee);
|
executeUserCallback(callback, e, acee)
|
||||||
};
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Creates a blur listener which propagates the editor session
|
* Creates a blur listener which propagates the editor session
|
||||||
@@ -255,80 +252,79 @@ angular.module('ui.ace', [])
|
|||||||
*/
|
*/
|
||||||
onBlur: function (callback) {
|
onBlur: function (callback) {
|
||||||
return function () {
|
return function () {
|
||||||
executeUserCallback(callback, acee);
|
executeUserCallback(callback, acee)
|
||||||
};
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
attrs.$observe('readonly', function (value) {
|
attrs.$observe('readonly', function (value) {
|
||||||
acee.setReadOnly(!!value || value === '');
|
acee.setReadOnly(!!value || value === '')
|
||||||
});
|
})
|
||||||
|
|
||||||
// Value Blind
|
// Value Blind
|
||||||
if (ngModel) {
|
if (ngModel) {
|
||||||
ngModel.$formatters.push(function (value) {
|
ngModel.$formatters.push(function (value) {
|
||||||
if (angular.isUndefined(value) || value === null) {
|
if (angular.isUndefined(value) || value === null) {
|
||||||
return '';
|
return ''
|
||||||
|
} else if (angular.isObject(value) || angular.isArray(value)) {
|
||||||
|
throw new Error('ui-ace cannot use an object or an array as a model')
|
||||||
}
|
}
|
||||||
else if (angular.isObject(value) || angular.isArray(value)) {
|
return value
|
||||||
throw new Error('ui-ace cannot use an object or an array as a model');
|
})
|
||||||
}
|
|
||||||
return value;
|
|
||||||
});
|
|
||||||
|
|
||||||
ngModel.$render = function () {
|
ngModel.$render = function () {
|
||||||
session.setValue(ngModel.$viewValue);
|
session.setValue(ngModel.$viewValue)
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Listen for option updates
|
// Listen for option updates
|
||||||
var updateOptions = function (current, previous) {
|
var updateOptions = function (current, previous) {
|
||||||
if (current === previous) return;
|
if (current === previous) return
|
||||||
opts = angular.extend({}, options, scope.$eval(attrs.uiAce));
|
opts = angular.extend({}, options, scope.$eval(attrs.uiAce))
|
||||||
|
|
||||||
opts.callbacks = [ opts.onLoad ];
|
opts.callbacks = [ opts.onLoad ]
|
||||||
if (opts.onLoad !== options.onLoad) {
|
if (opts.onLoad !== options.onLoad) {
|
||||||
// also call the global onLoad handler
|
// also call the global onLoad handler
|
||||||
opts.callbacks.unshift(options.onLoad);
|
opts.callbacks.unshift(options.onLoad)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EVENTS
|
// EVENTS
|
||||||
|
|
||||||
// unbind old change listener
|
// unbind old change listener
|
||||||
session.removeListener('change', onChangeListener);
|
session.removeListener('change', onChangeListener)
|
||||||
|
|
||||||
// bind new change listener
|
// bind new change listener
|
||||||
onChangeListener = listenerFactory.onChange(opts.onChange);
|
onChangeListener = listenerFactory.onChange(opts.onChange)
|
||||||
session.on('change', onChangeListener);
|
session.on('change', onChangeListener)
|
||||||
|
|
||||||
// unbind old blur listener
|
// unbind old blur listener
|
||||||
//session.removeListener('blur', onBlurListener);
|
// session.removeListener('blur', onBlurListener)
|
||||||
acee.removeListener('blur', onBlurListener);
|
acee.removeListener('blur', onBlurListener)
|
||||||
|
|
||||||
// bind new blur listener
|
// bind new blur listener
|
||||||
onBlurListener = listenerFactory.onBlur(opts.onBlur);
|
onBlurListener = listenerFactory.onBlur(opts.onBlur)
|
||||||
acee.on('blur', onBlurListener);
|
acee.on('blur', onBlurListener)
|
||||||
|
|
||||||
setOptions(acee, session, opts);
|
setOptions(acee, session, opts)
|
||||||
};
|
}
|
||||||
|
|
||||||
scope.$watch(attrs.uiAce, updateOptions, /* deep watch */ true);
|
scope.$watch(attrs.uiAce, updateOptions, /* deep watch */ true)
|
||||||
|
|
||||||
// set the options here, even if we try to watch later, if this
|
// set the options here, even if we try to watch later, if this
|
||||||
// line is missing things go wrong (and the tests will also fail)
|
// line is missing things go wrong (and the tests will also fail)
|
||||||
updateOptions(options);
|
updateOptions(options)
|
||||||
|
|
||||||
elm.on('$destroy', function () {
|
elm.on('$destroy', function () {
|
||||||
acee.session.$stopWorker();
|
acee.session.$stopWorker()
|
||||||
acee.destroy();
|
acee.destroy()
|
||||||
});
|
})
|
||||||
|
|
||||||
scope.$watch(function() {
|
scope.$watch(function () {
|
||||||
return [elm[0].offsetWidth, elm[0].offsetHeight];
|
return [elm[0].offsetWidth, elm[0].offsetHeight]
|
||||||
}, function() {
|
}, function () {
|
||||||
acee.resize();
|
acee.resize()
|
||||||
acee.renderer.updateFull();
|
acee.renderer.updateFull()
|
||||||
}, true);
|
}, true)
|
||||||
|
|
||||||
scope.Infinity = -1
|
scope.Infinity = -1
|
||||||
|
|
||||||
@@ -343,5 +339,5 @@ angular.module('ui.ace', [])
|
|||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
}]);
|
}])
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* global angular moment */
|
/* global angular moment */
|
||||||
angular.module('codexen')
|
angular.module('codexen')
|
||||||
.filter('fromNow', function () {
|
.filter('fromNow', function () {
|
||||||
return function (input) {
|
return function (input) {
|
||||||
return moment(input).fromNow()
|
return moment(input).fromNow()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user