Showing
455 changed files
with
0 additions
and
3331 deletions
08_mongodb/bower_components/bourbon/app/assets/stylesheets/settings/_px-to-em.scss
deleted
100644 → 0
1 | -$em-base: 16px !default; |
1 | -// Mixins | ||
2 | -// -------------------------- | ||
3 | - | ||
4 | -@mixin fa-icon() { | ||
5 | - display: inline-block; | ||
6 | - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration | ||
7 | - font-size: inherit; // can't have font-size inherit on line above, so need to override | ||
8 | - text-rendering: auto; // optimizelegibility throws things off #1094 | ||
9 | - -webkit-font-smoothing: antialiased; | ||
10 | - -moz-osx-font-smoothing: grayscale; | ||
11 | - | ||
12 | -} | ||
13 | - | ||
14 | -@mixin fa-icon-rotate($degrees, $rotation) { | ||
15 | - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); | ||
16 | - -webkit-transform: rotate($degrees); | ||
17 | - -ms-transform: rotate($degrees); | ||
18 | - transform: rotate($degrees); | ||
19 | -} | ||
20 | - | ||
21 | -@mixin fa-icon-flip($horiz, $vert, $rotation) { | ||
22 | - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); | ||
23 | - -webkit-transform: scale($horiz, $vert); | ||
24 | - -ms-transform: scale($horiz, $vert); | ||
25 | - transform: scale($horiz, $vert); | ||
26 | -} |
1 | -{ | ||
2 | - "name": "jquery", | ||
3 | - "version": "2.1.4", | ||
4 | - "main": "dist/jquery.js", | ||
5 | - "license": "MIT", | ||
6 | - "ignore": [ | ||
7 | - "**/.*", | ||
8 | - "build", | ||
9 | - "dist/cdn", | ||
10 | - "speed", | ||
11 | - "test", | ||
12 | - "*.md", | ||
13 | - "AUTHORS.txt", | ||
14 | - "Gruntfile.js", | ||
15 | - "package.json" | ||
16 | - ], | ||
17 | - "devDependencies": { | ||
18 | - "sizzle": "2.1.1-jquery.2.1.2", | ||
19 | - "requirejs": "2.1.10", | ||
20 | - "qunit": "1.14.0", | ||
21 | - "sinon": "1.8.1" | ||
22 | - }, | ||
23 | - "keywords": [ | ||
24 | - "jquery", | ||
25 | - "javascript", | ||
26 | - "library" | ||
27 | - ], | ||
28 | - "homepage": "https://github.com/jquery/jquery", | ||
29 | - "_release": "2.1.4", | ||
30 | - "_resolution": { | ||
31 | - "type": "version", | ||
32 | - "tag": "2.1.4", | ||
33 | - "commit": "7751e69b615c6eca6f783a81e292a55725af6b85" | ||
34 | - }, | ||
35 | - "_source": "git://github.com/jquery/jquery.git", | ||
36 | - "_target": ">= 1.9.1", | ||
37 | - "_originalSource": "jquery" | ||
38 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | -Copyright 2014 jQuery Foundation and other contributors | ||
2 | -http://jquery.com/ | ||
3 | - | ||
4 | -Permission is hereby granted, free of charge, to any person obtaining | ||
5 | -a copy of this software and associated documentation files (the | ||
6 | -"Software"), to deal in the Software without restriction, including | ||
7 | -without limitation the rights to use, copy, modify, merge, publish, | ||
8 | -distribute, sublicense, and/or sell copies of the Software, and to | ||
9 | -permit persons to whom the Software is furnished to do so, subject to | ||
10 | -the following conditions: | ||
11 | - | ||
12 | -The above copyright notice and this permission notice shall be | ||
13 | -included in all copies or substantial portions of the Software. | ||
14 | - | ||
15 | -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
16 | -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
17 | -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
18 | -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||
19 | -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||
20 | -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||
21 | -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../core/parseHTML", | ||
4 | - "../ajax", | ||
5 | - "../traversing", | ||
6 | - "../manipulation", | ||
7 | - "../selector", | ||
8 | - // Optional event/alias dependency | ||
9 | - "../event/alias" | ||
10 | -], function( jQuery ) { | ||
11 | - | ||
12 | -// Keep a copy of the old load method | ||
13 | -var _load = jQuery.fn.load; | ||
14 | - | ||
15 | -/** | ||
16 | - * Load a url into a page | ||
17 | - */ | ||
18 | -jQuery.fn.load = function( url, params, callback ) { | ||
19 | - if ( typeof url !== "string" && _load ) { | ||
20 | - return _load.apply( this, arguments ); | ||
21 | - } | ||
22 | - | ||
23 | - var selector, type, response, | ||
24 | - self = this, | ||
25 | - off = url.indexOf(" "); | ||
26 | - | ||
27 | - if ( off >= 0 ) { | ||
28 | - selector = jQuery.trim( url.slice( off ) ); | ||
29 | - url = url.slice( 0, off ); | ||
30 | - } | ||
31 | - | ||
32 | - // If it's a function | ||
33 | - if ( jQuery.isFunction( params ) ) { | ||
34 | - | ||
35 | - // We assume that it's the callback | ||
36 | - callback = params; | ||
37 | - params = undefined; | ||
38 | - | ||
39 | - // Otherwise, build a param string | ||
40 | - } else if ( params && typeof params === "object" ) { | ||
41 | - type = "POST"; | ||
42 | - } | ||
43 | - | ||
44 | - // If we have elements to modify, make the request | ||
45 | - if ( self.length > 0 ) { | ||
46 | - jQuery.ajax({ | ||
47 | - url: url, | ||
48 | - | ||
49 | - // if "type" variable is undefined, then "GET" method will be used | ||
50 | - type: type, | ||
51 | - dataType: "html", | ||
52 | - data: params | ||
53 | - }).done(function( responseText ) { | ||
54 | - | ||
55 | - // Save response for use in complete callback | ||
56 | - response = arguments; | ||
57 | - | ||
58 | - self.html( selector ? | ||
59 | - | ||
60 | - // If a selector was specified, locate the right elements in a dummy div | ||
61 | - // Exclude scripts to avoid IE 'Permission Denied' errors | ||
62 | - jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : | ||
63 | - | ||
64 | - // Otherwise use the full result | ||
65 | - responseText ); | ||
66 | - | ||
67 | - }).complete( callback && function( jqXHR, status ) { | ||
68 | - self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); | ||
69 | - }); | ||
70 | - } | ||
71 | - | ||
72 | - return this; | ||
73 | -}; | ||
74 | - | ||
75 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../ajax" | ||
4 | -], function( jQuery ) { | ||
5 | - | ||
6 | -// Install script dataType | ||
7 | -jQuery.ajaxSetup({ | ||
8 | - accepts: { | ||
9 | - script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" | ||
10 | - }, | ||
11 | - contents: { | ||
12 | - script: /(?:java|ecma)script/ | ||
13 | - }, | ||
14 | - converters: { | ||
15 | - "text script": function( text ) { | ||
16 | - jQuery.globalEval( text ); | ||
17 | - return text; | ||
18 | - } | ||
19 | - } | ||
20 | -}); | ||
21 | - | ||
22 | -// Handle cache's special case and crossDomain | ||
23 | -jQuery.ajaxPrefilter( "script", function( s ) { | ||
24 | - if ( s.cache === undefined ) { | ||
25 | - s.cache = false; | ||
26 | - } | ||
27 | - if ( s.crossDomain ) { | ||
28 | - s.type = "GET"; | ||
29 | - } | ||
30 | -}); | ||
31 | - | ||
32 | -// Bind script tag hack transport | ||
33 | -jQuery.ajaxTransport( "script", function( s ) { | ||
34 | - // This transport only deals with cross domain requests | ||
35 | - if ( s.crossDomain ) { | ||
36 | - var script, callback; | ||
37 | - return { | ||
38 | - send: function( _, complete ) { | ||
39 | - script = jQuery("<script>").prop({ | ||
40 | - async: true, | ||
41 | - charset: s.scriptCharset, | ||
42 | - src: s.url | ||
43 | - }).on( | ||
44 | - "load error", | ||
45 | - callback = function( evt ) { | ||
46 | - script.remove(); | ||
47 | - callback = null; | ||
48 | - if ( evt ) { | ||
49 | - complete( evt.type === "error" ? 404 : 200, evt.type ); | ||
50 | - } | ||
51 | - } | ||
52 | - ); | ||
53 | - document.head.appendChild( script[ 0 ] ); | ||
54 | - }, | ||
55 | - abort: function() { | ||
56 | - if ( callback ) { | ||
57 | - callback(); | ||
58 | - } | ||
59 | - } | ||
60 | - }; | ||
61 | - } | ||
62 | -}); | ||
63 | - | ||
64 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../core/access", | ||
4 | - "./support" | ||
5 | -], function( jQuery, access, support ) { | ||
6 | - | ||
7 | -var rfocusable = /^(?:input|select|textarea|button)$/i; | ||
8 | - | ||
9 | -jQuery.fn.extend({ | ||
10 | - prop: function( name, value ) { | ||
11 | - return access( this, jQuery.prop, name, value, arguments.length > 1 ); | ||
12 | - }, | ||
13 | - | ||
14 | - removeProp: function( name ) { | ||
15 | - return this.each(function() { | ||
16 | - delete this[ jQuery.propFix[ name ] || name ]; | ||
17 | - }); | ||
18 | - } | ||
19 | -}); | ||
20 | - | ||
21 | -jQuery.extend({ | ||
22 | - propFix: { | ||
23 | - "for": "htmlFor", | ||
24 | - "class": "className" | ||
25 | - }, | ||
26 | - | ||
27 | - prop: function( elem, name, value ) { | ||
28 | - var ret, hooks, notxml, | ||
29 | - nType = elem.nodeType; | ||
30 | - | ||
31 | - // Don't get/set properties on text, comment and attribute nodes | ||
32 | - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { | ||
33 | - return; | ||
34 | - } | ||
35 | - | ||
36 | - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); | ||
37 | - | ||
38 | - if ( notxml ) { | ||
39 | - // Fix name and attach hooks | ||
40 | - name = jQuery.propFix[ name ] || name; | ||
41 | - hooks = jQuery.propHooks[ name ]; | ||
42 | - } | ||
43 | - | ||
44 | - if ( value !== undefined ) { | ||
45 | - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? | ||
46 | - ret : | ||
47 | - ( elem[ name ] = value ); | ||
48 | - | ||
49 | - } else { | ||
50 | - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? | ||
51 | - ret : | ||
52 | - elem[ name ]; | ||
53 | - } | ||
54 | - }, | ||
55 | - | ||
56 | - propHooks: { | ||
57 | - tabIndex: { | ||
58 | - get: function( elem ) { | ||
59 | - return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? | ||
60 | - elem.tabIndex : | ||
61 | - -1; | ||
62 | - } | ||
63 | - } | ||
64 | - } | ||
65 | -}); | ||
66 | - | ||
67 | -if ( !support.optSelected ) { | ||
68 | - jQuery.propHooks.selected = { | ||
69 | - get: function( elem ) { | ||
70 | - var parent = elem.parentNode; | ||
71 | - if ( parent && parent.parentNode ) { | ||
72 | - parent.parentNode.selectedIndex; | ||
73 | - } | ||
74 | - return null; | ||
75 | - } | ||
76 | - }; | ||
77 | -} | ||
78 | - | ||
79 | -jQuery.each([ | ||
80 | - "tabIndex", | ||
81 | - "readOnly", | ||
82 | - "maxLength", | ||
83 | - "cellSpacing", | ||
84 | - "cellPadding", | ||
85 | - "rowSpan", | ||
86 | - "colSpan", | ||
87 | - "useMap", | ||
88 | - "frameBorder", | ||
89 | - "contentEditable" | ||
90 | -], function() { | ||
91 | - jQuery.propFix[ this.toLowerCase() ] = this; | ||
92 | -}); | ||
93 | - | ||
94 | -}); |
1 | -define([ | ||
2 | - "../var/support" | ||
3 | -], function( support ) { | ||
4 | - | ||
5 | -(function() { | ||
6 | - var input = document.createElement( "input" ), | ||
7 | - select = document.createElement( "select" ), | ||
8 | - opt = select.appendChild( document.createElement( "option" ) ); | ||
9 | - | ||
10 | - input.type = "checkbox"; | ||
11 | - | ||
12 | - // Support: iOS<=5.1, Android<=4.2+ | ||
13 | - // Default value for a checkbox should be "on" | ||
14 | - support.checkOn = input.value !== ""; | ||
15 | - | ||
16 | - // Support: IE<=11+ | ||
17 | - // Must access selectedIndex to make default options select | ||
18 | - support.optSelected = opt.selected; | ||
19 | - | ||
20 | - // Support: Android<=2.3 | ||
21 | - // Options inside disabled selects are incorrectly marked as disabled | ||
22 | - select.disabled = true; | ||
23 | - support.optDisabled = !opt.disabled; | ||
24 | - | ||
25 | - // Support: IE<=11+ | ||
26 | - // An input loses its value after becoming a radio | ||
27 | - input = document.createElement( "input" ); | ||
28 | - input.value = "t"; | ||
29 | - input.type = "radio"; | ||
30 | - support.radioValue = input.value === "t"; | ||
31 | -})(); | ||
32 | - | ||
33 | -return support; | ||
34 | - | ||
35 | -}); |
1 | -define([ | ||
2 | - "../core" | ||
3 | -], function( jQuery ) { | ||
4 | - | ||
5 | -// Multifunctional method to get and set values of a collection | ||
6 | -// The value/s can optionally be executed if it's a function | ||
7 | -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { | ||
8 | - var i = 0, | ||
9 | - len = elems.length, | ||
10 | - bulk = key == null; | ||
11 | - | ||
12 | - // Sets many values | ||
13 | - if ( jQuery.type( key ) === "object" ) { | ||
14 | - chainable = true; | ||
15 | - for ( i in key ) { | ||
16 | - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); | ||
17 | - } | ||
18 | - | ||
19 | - // Sets one value | ||
20 | - } else if ( value !== undefined ) { | ||
21 | - chainable = true; | ||
22 | - | ||
23 | - if ( !jQuery.isFunction( value ) ) { | ||
24 | - raw = true; | ||
25 | - } | ||
26 | - | ||
27 | - if ( bulk ) { | ||
28 | - // Bulk operations run against the entire set | ||
29 | - if ( raw ) { | ||
30 | - fn.call( elems, value ); | ||
31 | - fn = null; | ||
32 | - | ||
33 | - // ...except when executing function values | ||
34 | - } else { | ||
35 | - bulk = fn; | ||
36 | - fn = function( elem, key, value ) { | ||
37 | - return bulk.call( jQuery( elem ), value ); | ||
38 | - }; | ||
39 | - } | ||
40 | - } | ||
41 | - | ||
42 | - if ( fn ) { | ||
43 | - for ( ; i < len; i++ ) { | ||
44 | - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); | ||
45 | - } | ||
46 | - } | ||
47 | - } | ||
48 | - | ||
49 | - return chainable ? | ||
50 | - elems : | ||
51 | - | ||
52 | - // Gets | ||
53 | - bulk ? | ||
54 | - fn.call( elems ) : | ||
55 | - len ? fn( elems[0], key ) : emptyGet; | ||
56 | -}; | ||
57 | - | ||
58 | -return access; | ||
59 | - | ||
60 | -}); |
1 | -// Initialize a jQuery object | ||
2 | -define([ | ||
3 | - "../core", | ||
4 | - "./var/rsingleTag", | ||
5 | - "../traversing/findFilter" | ||
6 | -], function( jQuery, rsingleTag ) { | ||
7 | - | ||
8 | -// A central reference to the root jQuery(document) | ||
9 | -var rootjQuery, | ||
10 | - | ||
11 | - // A simple way to check for HTML strings | ||
12 | - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) | ||
13 | - // Strict HTML recognition (#11290: must start with <) | ||
14 | - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, | ||
15 | - | ||
16 | - init = jQuery.fn.init = function( selector, context ) { | ||
17 | - var match, elem; | ||
18 | - | ||
19 | - // HANDLE: $(""), $(null), $(undefined), $(false) | ||
20 | - if ( !selector ) { | ||
21 | - return this; | ||
22 | - } | ||
23 | - | ||
24 | - // Handle HTML strings | ||
25 | - if ( typeof selector === "string" ) { | ||
26 | - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { | ||
27 | - // Assume that strings that start and end with <> are HTML and skip the regex check | ||
28 | - match = [ null, selector, null ]; | ||
29 | - | ||
30 | - } else { | ||
31 | - match = rquickExpr.exec( selector ); | ||
32 | - } | ||
33 | - | ||
34 | - // Match html or make sure no context is specified for #id | ||
35 | - if ( match && (match[1] || !context) ) { | ||
36 | - | ||
37 | - // HANDLE: $(html) -> $(array) | ||
38 | - if ( match[1] ) { | ||
39 | - context = context instanceof jQuery ? context[0] : context; | ||
40 | - | ||
41 | - // Option to run scripts is true for back-compat | ||
42 | - // Intentionally let the error be thrown if parseHTML is not present | ||
43 | - jQuery.merge( this, jQuery.parseHTML( | ||
44 | - match[1], | ||
45 | - context && context.nodeType ? context.ownerDocument || context : document, | ||
46 | - true | ||
47 | - ) ); | ||
48 | - | ||
49 | - // HANDLE: $(html, props) | ||
50 | - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { | ||
51 | - for ( match in context ) { | ||
52 | - // Properties of context are called as methods if possible | ||
53 | - if ( jQuery.isFunction( this[ match ] ) ) { | ||
54 | - this[ match ]( context[ match ] ); | ||
55 | - | ||
56 | - // ...and otherwise set as attributes | ||
57 | - } else { | ||
58 | - this.attr( match, context[ match ] ); | ||
59 | - } | ||
60 | - } | ||
61 | - } | ||
62 | - | ||
63 | - return this; | ||
64 | - | ||
65 | - // HANDLE: $(#id) | ||
66 | - } else { | ||
67 | - elem = document.getElementById( match[2] ); | ||
68 | - | ||
69 | - // Support: Blackberry 4.6 | ||
70 | - // gEBID returns nodes no longer in the document (#6963) | ||
71 | - if ( elem && elem.parentNode ) { | ||
72 | - // Inject the element directly into the jQuery object | ||
73 | - this.length = 1; | ||
74 | - this[0] = elem; | ||
75 | - } | ||
76 | - | ||
77 | - this.context = document; | ||
78 | - this.selector = selector; | ||
79 | - return this; | ||
80 | - } | ||
81 | - | ||
82 | - // HANDLE: $(expr, $(...)) | ||
83 | - } else if ( !context || context.jquery ) { | ||
84 | - return ( context || rootjQuery ).find( selector ); | ||
85 | - | ||
86 | - // HANDLE: $(expr, context) | ||
87 | - // (which is just equivalent to: $(context).find(expr) | ||
88 | - } else { | ||
89 | - return this.constructor( context ).find( selector ); | ||
90 | - } | ||
91 | - | ||
92 | - // HANDLE: $(DOMElement) | ||
93 | - } else if ( selector.nodeType ) { | ||
94 | - this.context = this[0] = selector; | ||
95 | - this.length = 1; | ||
96 | - return this; | ||
97 | - | ||
98 | - // HANDLE: $(function) | ||
99 | - // Shortcut for document ready | ||
100 | - } else if ( jQuery.isFunction( selector ) ) { | ||
101 | - return typeof rootjQuery.ready !== "undefined" ? | ||
102 | - rootjQuery.ready( selector ) : | ||
103 | - // Execute immediately if ready is not present | ||
104 | - selector( jQuery ); | ||
105 | - } | ||
106 | - | ||
107 | - if ( selector.selector !== undefined ) { | ||
108 | - this.selector = selector.selector; | ||
109 | - this.context = selector.context; | ||
110 | - } | ||
111 | - | ||
112 | - return jQuery.makeArray( selector, this ); | ||
113 | - }; | ||
114 | - | ||
115 | -// Give the init function the jQuery prototype for later instantiation | ||
116 | -init.prototype = jQuery.fn; | ||
117 | - | ||
118 | -// Initialize central reference | ||
119 | -rootjQuery = jQuery( document ); | ||
120 | - | ||
121 | -return init; | ||
122 | - | ||
123 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "./var/rsingleTag", | ||
4 | - "../manipulation" // buildFragment | ||
5 | -], function( jQuery, rsingleTag ) { | ||
6 | - | ||
7 | -// data: string of html | ||
8 | -// context (optional): If specified, the fragment will be created in this context, defaults to document | ||
9 | -// keepScripts (optional): If true, will include scripts passed in the html string | ||
10 | -jQuery.parseHTML = function( data, context, keepScripts ) { | ||
11 | - if ( !data || typeof data !== "string" ) { | ||
12 | - return null; | ||
13 | - } | ||
14 | - if ( typeof context === "boolean" ) { | ||
15 | - keepScripts = context; | ||
16 | - context = false; | ||
17 | - } | ||
18 | - context = context || document; | ||
19 | - | ||
20 | - var parsed = rsingleTag.exec( data ), | ||
21 | - scripts = !keepScripts && []; | ||
22 | - | ||
23 | - // Single tag | ||
24 | - if ( parsed ) { | ||
25 | - return [ context.createElement( parsed[1] ) ]; | ||
26 | - } | ||
27 | - | ||
28 | - parsed = jQuery.buildFragment( [ data ], context, scripts ); | ||
29 | - | ||
30 | - if ( scripts && scripts.length ) { | ||
31 | - jQuery( scripts ).remove(); | ||
32 | - } | ||
33 | - | ||
34 | - return jQuery.merge( [], parsed.childNodes ); | ||
35 | -}; | ||
36 | - | ||
37 | -return jQuery.parseHTML; | ||
38 | - | ||
39 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../core/init", | ||
4 | - "../deferred" | ||
5 | -], function( jQuery ) { | ||
6 | - | ||
7 | -// The deferred used on DOM ready | ||
8 | -var readyList; | ||
9 | - | ||
10 | -jQuery.fn.ready = function( fn ) { | ||
11 | - // Add the callback | ||
12 | - jQuery.ready.promise().done( fn ); | ||
13 | - | ||
14 | - return this; | ||
15 | -}; | ||
16 | - | ||
17 | -jQuery.extend({ | ||
18 | - // Is the DOM ready to be used? Set to true once it occurs. | ||
19 | - isReady: false, | ||
20 | - | ||
21 | - // A counter to track how many items to wait for before | ||
22 | - // the ready event fires. See #6781 | ||
23 | - readyWait: 1, | ||
24 | - | ||
25 | - // Hold (or release) the ready event | ||
26 | - holdReady: function( hold ) { | ||
27 | - if ( hold ) { | ||
28 | - jQuery.readyWait++; | ||
29 | - } else { | ||
30 | - jQuery.ready( true ); | ||
31 | - } | ||
32 | - }, | ||
33 | - | ||
34 | - // Handle when the DOM is ready | ||
35 | - ready: function( wait ) { | ||
36 | - | ||
37 | - // Abort if there are pending holds or we're already ready | ||
38 | - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { | ||
39 | - return; | ||
40 | - } | ||
41 | - | ||
42 | - // Remember that the DOM is ready | ||
43 | - jQuery.isReady = true; | ||
44 | - | ||
45 | - // If a normal DOM Ready event fired, decrement, and wait if need be | ||
46 | - if ( wait !== true && --jQuery.readyWait > 0 ) { | ||
47 | - return; | ||
48 | - } | ||
49 | - | ||
50 | - // If there are functions bound, to execute | ||
51 | - readyList.resolveWith( document, [ jQuery ] ); | ||
52 | - | ||
53 | - // Trigger any bound ready events | ||
54 | - if ( jQuery.fn.triggerHandler ) { | ||
55 | - jQuery( document ).triggerHandler( "ready" ); | ||
56 | - jQuery( document ).off( "ready" ); | ||
57 | - } | ||
58 | - } | ||
59 | -}); | ||
60 | - | ||
61 | -/** | ||
62 | - * The ready event handler and self cleanup method | ||
63 | - */ | ||
64 | -function completed() { | ||
65 | - document.removeEventListener( "DOMContentLoaded", completed, false ); | ||
66 | - window.removeEventListener( "load", completed, false ); | ||
67 | - jQuery.ready(); | ||
68 | -} | ||
69 | - | ||
70 | -jQuery.ready.promise = function( obj ) { | ||
71 | - if ( !readyList ) { | ||
72 | - | ||
73 | - readyList = jQuery.Deferred(); | ||
74 | - | ||
75 | - // Catch cases where $(document).ready() is called after the browser event has already occurred. | ||
76 | - // We once tried to use readyState "interactive" here, but it caused issues like the one | ||
77 | - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 | ||
78 | - if ( document.readyState === "complete" ) { | ||
79 | - // Handle it asynchronously to allow scripts the opportunity to delay ready | ||
80 | - setTimeout( jQuery.ready ); | ||
81 | - | ||
82 | - } else { | ||
83 | - | ||
84 | - // Use the handy event callback | ||
85 | - document.addEventListener( "DOMContentLoaded", completed, false ); | ||
86 | - | ||
87 | - // A fallback to window.onload, that will always work | ||
88 | - window.addEventListener( "load", completed, false ); | ||
89 | - } | ||
90 | - } | ||
91 | - return readyList.promise( obj ); | ||
92 | -}; | ||
93 | - | ||
94 | -// Kick off the DOM ready check even if the user does not | ||
95 | -jQuery.ready.promise(); | ||
96 | - | ||
97 | -}); |
1 | -define(function() { | ||
2 | - | ||
3 | -function addGetHookIf( conditionFn, hookFn ) { | ||
4 | - // Define the hook, we'll check on the first run if it's really needed. | ||
5 | - return { | ||
6 | - get: function() { | ||
7 | - if ( conditionFn() ) { | ||
8 | - // Hook not needed (or it's not possible to use it due | ||
9 | - // to missing dependency), remove it. | ||
10 | - delete this.get; | ||
11 | - return; | ||
12 | - } | ||
13 | - | ||
14 | - // Hook needed; redefine it so that the support test is not executed again. | ||
15 | - return (this.get = hookFn).apply( this, arguments ); | ||
16 | - } | ||
17 | - }; | ||
18 | -} | ||
19 | - | ||
20 | -return addGetHookIf; | ||
21 | - | ||
22 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "./var/rnumnonpx", | ||
4 | - "./var/rmargin", | ||
5 | - "./var/getStyles", | ||
6 | - "../selector" // contains | ||
7 | -], function( jQuery, rnumnonpx, rmargin, getStyles ) { | ||
8 | - | ||
9 | -function curCSS( elem, name, computed ) { | ||
10 | - var width, minWidth, maxWidth, ret, | ||
11 | - style = elem.style; | ||
12 | - | ||
13 | - computed = computed || getStyles( elem ); | ||
14 | - | ||
15 | - // Support: IE9 | ||
16 | - // getPropertyValue is only needed for .css('filter') (#12537) | ||
17 | - if ( computed ) { | ||
18 | - ret = computed.getPropertyValue( name ) || computed[ name ]; | ||
19 | - } | ||
20 | - | ||
21 | - if ( computed ) { | ||
22 | - | ||
23 | - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { | ||
24 | - ret = jQuery.style( elem, name ); | ||
25 | - } | ||
26 | - | ||
27 | - // Support: iOS < 6 | ||
28 | - // A tribute to the "awesome hack by Dean Edwards" | ||
29 | - // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels | ||
30 | - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values | ||
31 | - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { | ||
32 | - | ||
33 | - // Remember the original values | ||
34 | - width = style.width; | ||
35 | - minWidth = style.minWidth; | ||
36 | - maxWidth = style.maxWidth; | ||
37 | - | ||
38 | - // Put in the new values to get a computed value out | ||
39 | - style.minWidth = style.maxWidth = style.width = ret; | ||
40 | - ret = computed.width; | ||
41 | - | ||
42 | - // Revert the changed values | ||
43 | - style.width = width; | ||
44 | - style.minWidth = minWidth; | ||
45 | - style.maxWidth = maxWidth; | ||
46 | - } | ||
47 | - } | ||
48 | - | ||
49 | - return ret !== undefined ? | ||
50 | - // Support: IE | ||
51 | - // IE returns zIndex value as an integer. | ||
52 | - ret + "" : | ||
53 | - ret; | ||
54 | -} | ||
55 | - | ||
56 | -return curCSS; | ||
57 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../manipulation" // appendTo | ||
4 | -], function( jQuery ) { | ||
5 | - | ||
6 | -var iframe, | ||
7 | - elemdisplay = {}; | ||
8 | - | ||
9 | -/** | ||
10 | - * Retrieve the actual display of a element | ||
11 | - * @param {String} name nodeName of the element | ||
12 | - * @param {Object} doc Document object | ||
13 | - */ | ||
14 | -// Called only from within defaultDisplay | ||
15 | -function actualDisplay( name, doc ) { | ||
16 | - var style, | ||
17 | - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), | ||
18 | - | ||
19 | - // getDefaultComputedStyle might be reliably used only on attached element | ||
20 | - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? | ||
21 | - | ||
22 | - // Use of this method is a temporary fix (more like optimization) until something better comes along, | ||
23 | - // since it was removed from specification and supported only in FF | ||
24 | - style.display : jQuery.css( elem[ 0 ], "display" ); | ||
25 | - | ||
26 | - // We don't have any data stored on the element, | ||
27 | - // so use "detach" method as fast way to get rid of the element | ||
28 | - elem.detach(); | ||
29 | - | ||
30 | - return display; | ||
31 | -} | ||
32 | - | ||
33 | -/** | ||
34 | - * Try to determine the default display value of an element | ||
35 | - * @param {String} nodeName | ||
36 | - */ | ||
37 | -function defaultDisplay( nodeName ) { | ||
38 | - var doc = document, | ||
39 | - display = elemdisplay[ nodeName ]; | ||
40 | - | ||
41 | - if ( !display ) { | ||
42 | - display = actualDisplay( nodeName, doc ); | ||
43 | - | ||
44 | - // If the simple way fails, read from inside an iframe | ||
45 | - if ( display === "none" || !display ) { | ||
46 | - | ||
47 | - // Use the already-created iframe if possible | ||
48 | - iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); | ||
49 | - | ||
50 | - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse | ||
51 | - doc = iframe[ 0 ].contentDocument; | ||
52 | - | ||
53 | - // Support: IE | ||
54 | - doc.write(); | ||
55 | - doc.close(); | ||
56 | - | ||
57 | - display = actualDisplay( nodeName, doc ); | ||
58 | - iframe.detach(); | ||
59 | - } | ||
60 | - | ||
61 | - // Store the correct default display | ||
62 | - elemdisplay[ nodeName ] = display; | ||
63 | - } | ||
64 | - | ||
65 | - return display; | ||
66 | -} | ||
67 | - | ||
68 | -return defaultDisplay; | ||
69 | - | ||
70 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../var/support" | ||
4 | -], function( jQuery, support ) { | ||
5 | - | ||
6 | -(function() { | ||
7 | - var pixelPositionVal, boxSizingReliableVal, | ||
8 | - docElem = document.documentElement, | ||
9 | - container = document.createElement( "div" ), | ||
10 | - div = document.createElement( "div" ); | ||
11 | - | ||
12 | - if ( !div.style ) { | ||
13 | - return; | ||
14 | - } | ||
15 | - | ||
16 | - // Support: IE9-11+ | ||
17 | - // Style of cloned element affects source element cloned (#8908) | ||
18 | - div.style.backgroundClip = "content-box"; | ||
19 | - div.cloneNode( true ).style.backgroundClip = ""; | ||
20 | - support.clearCloneStyle = div.style.backgroundClip === "content-box"; | ||
21 | - | ||
22 | - container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + | ||
23 | - "position:absolute"; | ||
24 | - container.appendChild( div ); | ||
25 | - | ||
26 | - // Executing both pixelPosition & boxSizingReliable tests require only one layout | ||
27 | - // so they're executed at the same time to save the second computation. | ||
28 | - function computePixelPositionAndBoxSizingReliable() { | ||
29 | - div.style.cssText = | ||
30 | - // Support: Firefox<29, Android 2.3 | ||
31 | - // Vendor-prefix box-sizing | ||
32 | - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + | ||
33 | - "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + | ||
34 | - "border:1px;padding:1px;width:4px;position:absolute"; | ||
35 | - div.innerHTML = ""; | ||
36 | - docElem.appendChild( container ); | ||
37 | - | ||
38 | - var divStyle = window.getComputedStyle( div, null ); | ||
39 | - pixelPositionVal = divStyle.top !== "1%"; | ||
40 | - boxSizingReliableVal = divStyle.width === "4px"; | ||
41 | - | ||
42 | - docElem.removeChild( container ); | ||
43 | - } | ||
44 | - | ||
45 | - // Support: node.js jsdom | ||
46 | - // Don't assume that getComputedStyle is a property of the global object | ||
47 | - if ( window.getComputedStyle ) { | ||
48 | - jQuery.extend( support, { | ||
49 | - pixelPosition: function() { | ||
50 | - | ||
51 | - // This test is executed only once but we still do memoizing | ||
52 | - // since we can use the boxSizingReliable pre-computing. | ||
53 | - // No need to check if the test was already performed, though. | ||
54 | - computePixelPositionAndBoxSizingReliable(); | ||
55 | - return pixelPositionVal; | ||
56 | - }, | ||
57 | - boxSizingReliable: function() { | ||
58 | - if ( boxSizingReliableVal == null ) { | ||
59 | - computePixelPositionAndBoxSizingReliable(); | ||
60 | - } | ||
61 | - return boxSizingReliableVal; | ||
62 | - }, | ||
63 | - reliableMarginRight: function() { | ||
64 | - | ||
65 | - // Support: Android 2.3 | ||
66 | - // Check if div with explicit width and no margin-right incorrectly | ||
67 | - // gets computed margin-right based on width of container. (#3333) | ||
68 | - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right | ||
69 | - // This support function is only executed once so no memoizing is needed. | ||
70 | - var ret, | ||
71 | - marginDiv = div.appendChild( document.createElement( "div" ) ); | ||
72 | - | ||
73 | - // Reset CSS: box-sizing; display; margin; border; padding | ||
74 | - marginDiv.style.cssText = div.style.cssText = | ||
75 | - // Support: Firefox<29, Android 2.3 | ||
76 | - // Vendor-prefix box-sizing | ||
77 | - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + | ||
78 | - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; | ||
79 | - marginDiv.style.marginRight = marginDiv.style.width = "0"; | ||
80 | - div.style.width = "1px"; | ||
81 | - docElem.appendChild( container ); | ||
82 | - | ||
83 | - ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); | ||
84 | - | ||
85 | - docElem.removeChild( container ); | ||
86 | - div.removeChild( marginDiv ); | ||
87 | - | ||
88 | - return ret; | ||
89 | - } | ||
90 | - }); | ||
91 | - } | ||
92 | -})(); | ||
93 | - | ||
94 | -return support; | ||
95 | - | ||
96 | -}); |
1 | -define([ | ||
2 | - "../core" | ||
3 | -], function( jQuery ) { | ||
4 | - | ||
5 | -// A method for quickly swapping in/out CSS properties to get correct calculations. | ||
6 | -jQuery.swap = function( elem, options, callback, args ) { | ||
7 | - var ret, name, | ||
8 | - old = {}; | ||
9 | - | ||
10 | - // Remember the old values, and insert the new ones | ||
11 | - for ( name in options ) { | ||
12 | - old[ name ] = elem.style[ name ]; | ||
13 | - elem.style[ name ] = options[ name ]; | ||
14 | - } | ||
15 | - | ||
16 | - ret = callback.apply( elem, args || [] ); | ||
17 | - | ||
18 | - // Revert the old values | ||
19 | - for ( name in options ) { | ||
20 | - elem.style[ name ] = old[ name ]; | ||
21 | - } | ||
22 | - | ||
23 | - return ret; | ||
24 | -}; | ||
25 | - | ||
26 | -return jQuery.swap; | ||
27 | - | ||
28 | -}); |
1 | -define(function() { | ||
2 | - return function( elem ) { | ||
3 | - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) | ||
4 | - // IE throws on elements created in popups | ||
5 | - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" | ||
6 | - if ( elem.ownerDocument.defaultView.opener ) { | ||
7 | - return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); | ||
8 | - } | ||
9 | - | ||
10 | - return window.getComputedStyle( elem, null ); | ||
11 | - }; | ||
12 | -}); |
1 | -define([ | ||
2 | - "../../core", | ||
3 | - "../../selector" | ||
4 | - // css is assumed | ||
5 | -], function( jQuery ) { | ||
6 | - | ||
7 | - return function( elem, el ) { | ||
8 | - // isHidden might be called from jQuery#filter function; | ||
9 | - // in that case, element will be second argument | ||
10 | - elem = el || elem; | ||
11 | - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); | ||
12 | - }; | ||
13 | -}); |
1 | -define([ | ||
2 | - "../core" | ||
3 | -], function( jQuery ) { | ||
4 | - | ||
5 | -/** | ||
6 | - * Determines whether an object can have data | ||
7 | - */ | ||
8 | -jQuery.acceptData = function( owner ) { | ||
9 | - // Accepts only: | ||
10 | - // - Node | ||
11 | - // - Node.ELEMENT_NODE | ||
12 | - // - Node.DOCUMENT_NODE | ||
13 | - // - Object | ||
14 | - // - Any | ||
15 | - /* jshint -W018 */ | ||
16 | - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); | ||
17 | -}; | ||
18 | - | ||
19 | -return jQuery.acceptData; | ||
20 | -}); |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "./core/access", | ||
4 | - "./css" | ||
5 | -], function( jQuery, access ) { | ||
6 | - | ||
7 | -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods | ||
8 | -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { | ||
9 | - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { | ||
10 | - // Margin is only for outerHeight, outerWidth | ||
11 | - jQuery.fn[ funcName ] = function( margin, value ) { | ||
12 | - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), | ||
13 | - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); | ||
14 | - | ||
15 | - return access( this, function( elem, type, value ) { | ||
16 | - var doc; | ||
17 | - | ||
18 | - if ( jQuery.isWindow( elem ) ) { | ||
19 | - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there | ||
20 | - // isn't a whole lot we can do. See pull request at this URL for discussion: | ||
21 | - // https://github.com/jquery/jquery/pull/764 | ||
22 | - return elem.document.documentElement[ "client" + name ]; | ||
23 | - } | ||
24 | - | ||
25 | - // Get document width or height | ||
26 | - if ( elem.nodeType === 9 ) { | ||
27 | - doc = elem.documentElement; | ||
28 | - | ||
29 | - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], | ||
30 | - // whichever is greatest | ||
31 | - return Math.max( | ||
32 | - elem.body[ "scroll" + name ], doc[ "scroll" + name ], | ||
33 | - elem.body[ "offset" + name ], doc[ "offset" + name ], | ||
34 | - doc[ "client" + name ] | ||
35 | - ); | ||
36 | - } | ||
37 | - | ||
38 | - return value === undefined ? | ||
39 | - // Get width or height on the element, requesting but not forcing parseFloat | ||
40 | - jQuery.css( elem, type, extra ) : | ||
41 | - | ||
42 | - // Set width or height on the element | ||
43 | - jQuery.style( elem, type, value, extra ); | ||
44 | - }, type, chainable ? margin : undefined, chainable, null ); | ||
45 | - }; | ||
46 | - }); | ||
47 | -}); | ||
48 | - | ||
49 | -return jQuery; | ||
50 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../css" | ||
4 | -], function( jQuery ) { | ||
5 | - | ||
6 | -function Tween( elem, options, prop, end, easing ) { | ||
7 | - return new Tween.prototype.init( elem, options, prop, end, easing ); | ||
8 | -} | ||
9 | -jQuery.Tween = Tween; | ||
10 | - | ||
11 | -Tween.prototype = { | ||
12 | - constructor: Tween, | ||
13 | - init: function( elem, options, prop, end, easing, unit ) { | ||
14 | - this.elem = elem; | ||
15 | - this.prop = prop; | ||
16 | - this.easing = easing || "swing"; | ||
17 | - this.options = options; | ||
18 | - this.start = this.now = this.cur(); | ||
19 | - this.end = end; | ||
20 | - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); | ||
21 | - }, | ||
22 | - cur: function() { | ||
23 | - var hooks = Tween.propHooks[ this.prop ]; | ||
24 | - | ||
25 | - return hooks && hooks.get ? | ||
26 | - hooks.get( this ) : | ||
27 | - Tween.propHooks._default.get( this ); | ||
28 | - }, | ||
29 | - run: function( percent ) { | ||
30 | - var eased, | ||
31 | - hooks = Tween.propHooks[ this.prop ]; | ||
32 | - | ||
33 | - if ( this.options.duration ) { | ||
34 | - this.pos = eased = jQuery.easing[ this.easing ]( | ||
35 | - percent, this.options.duration * percent, 0, 1, this.options.duration | ||
36 | - ); | ||
37 | - } else { | ||
38 | - this.pos = eased = percent; | ||
39 | - } | ||
40 | - this.now = ( this.end - this.start ) * eased + this.start; | ||
41 | - | ||
42 | - if ( this.options.step ) { | ||
43 | - this.options.step.call( this.elem, this.now, this ); | ||
44 | - } | ||
45 | - | ||
46 | - if ( hooks && hooks.set ) { | ||
47 | - hooks.set( this ); | ||
48 | - } else { | ||
49 | - Tween.propHooks._default.set( this ); | ||
50 | - } | ||
51 | - return this; | ||
52 | - } | ||
53 | -}; | ||
54 | - | ||
55 | -Tween.prototype.init.prototype = Tween.prototype; | ||
56 | - | ||
57 | -Tween.propHooks = { | ||
58 | - _default: { | ||
59 | - get: function( tween ) { | ||
60 | - var result; | ||
61 | - | ||
62 | - if ( tween.elem[ tween.prop ] != null && | ||
63 | - (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { | ||
64 | - return tween.elem[ tween.prop ]; | ||
65 | - } | ||
66 | - | ||
67 | - // Passing an empty string as a 3rd parameter to .css will automatically | ||
68 | - // attempt a parseFloat and fallback to a string if the parse fails. | ||
69 | - // Simple values such as "10px" are parsed to Float; | ||
70 | - // complex values such as "rotate(1rad)" are returned as-is. | ||
71 | - result = jQuery.css( tween.elem, tween.prop, "" ); | ||
72 | - // Empty strings, null, undefined and "auto" are converted to 0. | ||
73 | - return !result || result === "auto" ? 0 : result; | ||
74 | - }, | ||
75 | - set: function( tween ) { | ||
76 | - // Use step hook for back compat. | ||
77 | - // Use cssHook if its there. | ||
78 | - // Use .style if available and use plain properties where available. | ||
79 | - if ( jQuery.fx.step[ tween.prop ] ) { | ||
80 | - jQuery.fx.step[ tween.prop ]( tween ); | ||
81 | - } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { | ||
82 | - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); | ||
83 | - } else { | ||
84 | - tween.elem[ tween.prop ] = tween.now; | ||
85 | - } | ||
86 | - } | ||
87 | - } | ||
88 | -}; | ||
89 | - | ||
90 | -// Support: IE9 | ||
91 | -// Panic based approach to setting things on disconnected nodes | ||
92 | -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { | ||
93 | - set: function( tween ) { | ||
94 | - if ( tween.elem.nodeType && tween.elem.parentNode ) { | ||
95 | - tween.elem[ tween.prop ] = tween.now; | ||
96 | - } | ||
97 | - } | ||
98 | -}; | ||
99 | - | ||
100 | -jQuery.easing = { | ||
101 | - linear: function( p ) { | ||
102 | - return p; | ||
103 | - }, | ||
104 | - swing: function( p ) { | ||
105 | - return 0.5 - Math.cos( p * Math.PI ) / 2; | ||
106 | - } | ||
107 | -}; | ||
108 | - | ||
109 | -jQuery.fx = Tween.prototype.init; | ||
110 | - | ||
111 | -// Back Compat <1.8 extension point | ||
112 | -jQuery.fx.step = {}; | ||
113 | - | ||
114 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../event" | ||
4 | -], function( jQuery ) { | ||
5 | - | ||
6 | -// Attach a bunch of functions for handling common AJAX events | ||
7 | -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { | ||
8 | - jQuery.fn[ type ] = function( fn ) { | ||
9 | - return this.on( type, fn ); | ||
10 | - }; | ||
11 | -}); | ||
12 | - | ||
13 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../event" | ||
4 | -], function( jQuery ) { | ||
5 | - | ||
6 | -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + | ||
7 | - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + | ||
8 | - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { | ||
9 | - | ||
10 | - // Handle event binding | ||
11 | - jQuery.fn[ name ] = function( data, fn ) { | ||
12 | - return arguments.length > 0 ? | ||
13 | - this.on( name, null, data, fn ) : | ||
14 | - this.trigger( name ); | ||
15 | - }; | ||
16 | -}); | ||
17 | - | ||
18 | -jQuery.fn.extend({ | ||
19 | - hover: function( fnOver, fnOut ) { | ||
20 | - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); | ||
21 | - }, | ||
22 | - | ||
23 | - bind: function( types, data, fn ) { | ||
24 | - return this.on( types, null, data, fn ); | ||
25 | - }, | ||
26 | - unbind: function( types, fn ) { | ||
27 | - return this.off( types, null, fn ); | ||
28 | - }, | ||
29 | - | ||
30 | - delegate: function( selector, types, data, fn ) { | ||
31 | - return this.on( types, selector, data, fn ); | ||
32 | - }, | ||
33 | - undelegate: function( selector, types, fn ) { | ||
34 | - // ( namespace ) or ( selector, types [, fn] ) | ||
35 | - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); | ||
36 | - } | ||
37 | -}); | ||
38 | - | ||
39 | -}); |
1 | -define([ | ||
2 | - "../core" | ||
3 | -], function( jQuery ) { | ||
4 | - | ||
5 | -// Register as a named AMD module, since jQuery can be concatenated with other | ||
6 | -// files that may use define, but not via a proper concatenation script that | ||
7 | -// understands anonymous AMD modules. A named AMD is safest and most robust | ||
8 | -// way to register. Lowercase jquery is used because AMD module names are | ||
9 | -// derived from file names, and jQuery is normally delivered in a lowercase | ||
10 | -// file name. Do this after creating the global so that if an AMD module wants | ||
11 | -// to call noConflict to hide this version of jQuery, it will work. | ||
12 | - | ||
13 | -// Note that for maximum portability, libraries that are not jQuery should | ||
14 | -// declare themselves as anonymous modules, and avoid setting a global if an | ||
15 | -// AMD loader is present. jQuery is a special case. For more information, see | ||
16 | -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon | ||
17 | - | ||
18 | -if ( typeof define === "function" && define.amd ) { | ||
19 | - define( "jquery", [], function() { | ||
20 | - return jQuery; | ||
21 | - }); | ||
22 | -} | ||
23 | - | ||
24 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../var/strundefined" | ||
4 | -], function( jQuery, strundefined ) { | ||
5 | - | ||
6 | -var | ||
7 | - // Map over jQuery in case of overwrite | ||
8 | - _jQuery = window.jQuery, | ||
9 | - | ||
10 | - // Map over the $ in case of overwrite | ||
11 | - _$ = window.$; | ||
12 | - | ||
13 | -jQuery.noConflict = function( deep ) { | ||
14 | - if ( window.$ === jQuery ) { | ||
15 | - window.$ = _$; | ||
16 | - } | ||
17 | - | ||
18 | - if ( deep && window.jQuery === jQuery ) { | ||
19 | - window.jQuery = _jQuery; | ||
20 | - } | ||
21 | - | ||
22 | - return jQuery; | ||
23 | -}; | ||
24 | - | ||
25 | -// Expose jQuery and $ identifiers, even in AMD | ||
26 | -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) | ||
27 | -// and CommonJS for browser emulators (#13566) | ||
28 | -if ( typeof noGlobal === strundefined ) { | ||
29 | - window.jQuery = window.$ = jQuery; | ||
30 | -} | ||
31 | - | ||
32 | -}); |
1 | -/*! | ||
2 | - * jQuery JavaScript Library v@VERSION | ||
3 | - * http://jquery.com/ | ||
4 | - * | ||
5 | - * Includes Sizzle.js | ||
6 | - * http://sizzlejs.com/ | ||
7 | - * | ||
8 | - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors | ||
9 | - * Released under the MIT license | ||
10 | - * http://jquery.org/license | ||
11 | - * | ||
12 | - * Date: @DATE | ||
13 | - */ | ||
14 | - | ||
15 | -(function( global, factory ) { | ||
16 | - | ||
17 | - if ( typeof module === "object" && typeof module.exports === "object" ) { | ||
18 | - // For CommonJS and CommonJS-like environments where a proper `window` | ||
19 | - // is present, execute the factory and get jQuery. | ||
20 | - // For environments that do not have a `window` with a `document` | ||
21 | - // (such as Node.js), expose a factory as module.exports. | ||
22 | - // This accentuates the need for the creation of a real `window`. | ||
23 | - // e.g. var jQuery = require("jquery")(window); | ||
24 | - // See ticket #14549 for more info. | ||
25 | - module.exports = global.document ? | ||
26 | - factory( global, true ) : | ||
27 | - function( w ) { | ||
28 | - if ( !w.document ) { | ||
29 | - throw new Error( "jQuery requires a window with a document" ); | ||
30 | - } | ||
31 | - return factory( w ); | ||
32 | - }; | ||
33 | - } else { | ||
34 | - factory( global ); | ||
35 | - } | ||
36 | - | ||
37 | -// Pass this if window is not defined yet | ||
38 | -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { | ||
39 | - | ||
40 | -// Support: Firefox 18+ | ||
41 | -// Can't be in strict mode, several libs including ASP.NET trace | ||
42 | -// the stack via arguments.caller.callee and Firefox dies if | ||
43 | -// you try to trace through "use strict" call chains. (#13335) | ||
44 | -//"use strict"; |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "./selector", | ||
4 | - "./traversing", | ||
5 | - "./callbacks", | ||
6 | - "./deferred", | ||
7 | - "./core/ready", | ||
8 | - "./data", | ||
9 | - "./queue", | ||
10 | - "./queue/delay", | ||
11 | - "./attributes", | ||
12 | - "./event", | ||
13 | - "./event/alias", | ||
14 | - "./manipulation", | ||
15 | - "./manipulation/_evalUrl", | ||
16 | - "./wrap", | ||
17 | - "./css", | ||
18 | - "./css/hiddenVisibleSelectors", | ||
19 | - "./serialize", | ||
20 | - "./ajax", | ||
21 | - "./ajax/xhr", | ||
22 | - "./ajax/script", | ||
23 | - "./ajax/jsonp", | ||
24 | - "./ajax/load", | ||
25 | - "./event/ajax", | ||
26 | - "./effects", | ||
27 | - "./effects/animatedSelector", | ||
28 | - "./offset", | ||
29 | - "./dimensions", | ||
30 | - "./deprecated", | ||
31 | - "./exports/amd", | ||
32 | - "./exports/global" | ||
33 | -], function( jQuery ) { | ||
34 | - | ||
35 | -return jQuery; | ||
36 | - | ||
37 | -}); |
1 | -define([ | ||
2 | - "../var/support" | ||
3 | -], function( support ) { | ||
4 | - | ||
5 | -(function() { | ||
6 | - var fragment = document.createDocumentFragment(), | ||
7 | - div = fragment.appendChild( document.createElement( "div" ) ), | ||
8 | - input = document.createElement( "input" ); | ||
9 | - | ||
10 | - // Support: Safari<=5.1 | ||
11 | - // Check state lost if the name is set (#11217) | ||
12 | - // Support: Windows Web Apps (WWA) | ||
13 | - // `name` and `type` must use .setAttribute for WWA (#14901) | ||
14 | - input.setAttribute( "type", "radio" ); | ||
15 | - input.setAttribute( "checked", "checked" ); | ||
16 | - input.setAttribute( "name", "t" ); | ||
17 | - | ||
18 | - div.appendChild( input ); | ||
19 | - | ||
20 | - // Support: Safari<=5.1, Android<4.2 | ||
21 | - // Older WebKit doesn't clone checked state correctly in fragments | ||
22 | - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; | ||
23 | - | ||
24 | - // Support: IE<=11+ | ||
25 | - // Make sure textarea (and checkbox) defaultValue is properly cloned | ||
26 | - div.innerHTML = "<textarea>x</textarea>"; | ||
27 | - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; | ||
28 | -})(); | ||
29 | - | ||
30 | -return support; | ||
31 | - | ||
32 | -}); |
1 | -})); |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "./data/var/data_priv", | ||
4 | - "./deferred", | ||
5 | - "./callbacks" | ||
6 | -], function( jQuery, data_priv ) { | ||
7 | - | ||
8 | -jQuery.extend({ | ||
9 | - queue: function( elem, type, data ) { | ||
10 | - var queue; | ||
11 | - | ||
12 | - if ( elem ) { | ||
13 | - type = ( type || "fx" ) + "queue"; | ||
14 | - queue = data_priv.get( elem, type ); | ||
15 | - | ||
16 | - // Speed up dequeue by getting out quickly if this is just a lookup | ||
17 | - if ( data ) { | ||
18 | - if ( !queue || jQuery.isArray( data ) ) { | ||
19 | - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); | ||
20 | - } else { | ||
21 | - queue.push( data ); | ||
22 | - } | ||
23 | - } | ||
24 | - return queue || []; | ||
25 | - } | ||
26 | - }, | ||
27 | - | ||
28 | - dequeue: function( elem, type ) { | ||
29 | - type = type || "fx"; | ||
30 | - | ||
31 | - var queue = jQuery.queue( elem, type ), | ||
32 | - startLength = queue.length, | ||
33 | - fn = queue.shift(), | ||
34 | - hooks = jQuery._queueHooks( elem, type ), | ||
35 | - next = function() { | ||
36 | - jQuery.dequeue( elem, type ); | ||
37 | - }; | ||
38 | - | ||
39 | - // If the fx queue is dequeued, always remove the progress sentinel | ||
40 | - if ( fn === "inprogress" ) { | ||
41 | - fn = queue.shift(); | ||
42 | - startLength--; | ||
43 | - } | ||
44 | - | ||
45 | - if ( fn ) { | ||
46 | - | ||
47 | - // Add a progress sentinel to prevent the fx queue from being | ||
48 | - // automatically dequeued | ||
49 | - if ( type === "fx" ) { | ||
50 | - queue.unshift( "inprogress" ); | ||
51 | - } | ||
52 | - | ||
53 | - // Clear up the last queue stop function | ||
54 | - delete hooks.stop; | ||
55 | - fn.call( elem, next, hooks ); | ||
56 | - } | ||
57 | - | ||
58 | - if ( !startLength && hooks ) { | ||
59 | - hooks.empty.fire(); | ||
60 | - } | ||
61 | - }, | ||
62 | - | ||
63 | - // Not public - generate a queueHooks object, or return the current one | ||
64 | - _queueHooks: function( elem, type ) { | ||
65 | - var key = type + "queueHooks"; | ||
66 | - return data_priv.get( elem, key ) || data_priv.access( elem, key, { | ||
67 | - empty: jQuery.Callbacks("once memory").add(function() { | ||
68 | - data_priv.remove( elem, [ type + "queue", key ] ); | ||
69 | - }) | ||
70 | - }); | ||
71 | - } | ||
72 | -}); | ||
73 | - | ||
74 | -jQuery.fn.extend({ | ||
75 | - queue: function( type, data ) { | ||
76 | - var setter = 2; | ||
77 | - | ||
78 | - if ( typeof type !== "string" ) { | ||
79 | - data = type; | ||
80 | - type = "fx"; | ||
81 | - setter--; | ||
82 | - } | ||
83 | - | ||
84 | - if ( arguments.length < setter ) { | ||
85 | - return jQuery.queue( this[0], type ); | ||
86 | - } | ||
87 | - | ||
88 | - return data === undefined ? | ||
89 | - this : | ||
90 | - this.each(function() { | ||
91 | - var queue = jQuery.queue( this, type, data ); | ||
92 | - | ||
93 | - // Ensure a hooks for this queue | ||
94 | - jQuery._queueHooks( this, type ); | ||
95 | - | ||
96 | - if ( type === "fx" && queue[0] !== "inprogress" ) { | ||
97 | - jQuery.dequeue( this, type ); | ||
98 | - } | ||
99 | - }); | ||
100 | - }, | ||
101 | - dequeue: function( type ) { | ||
102 | - return this.each(function() { | ||
103 | - jQuery.dequeue( this, type ); | ||
104 | - }); | ||
105 | - }, | ||
106 | - clearQueue: function( type ) { | ||
107 | - return this.queue( type || "fx", [] ); | ||
108 | - }, | ||
109 | - // Get a promise resolved when queues of a certain type | ||
110 | - // are emptied (fx is the type by default) | ||
111 | - promise: function( type, obj ) { | ||
112 | - var tmp, | ||
113 | - count = 1, | ||
114 | - defer = jQuery.Deferred(), | ||
115 | - elements = this, | ||
116 | - i = this.length, | ||
117 | - resolve = function() { | ||
118 | - if ( !( --count ) ) { | ||
119 | - defer.resolveWith( elements, [ elements ] ); | ||
120 | - } | ||
121 | - }; | ||
122 | - | ||
123 | - if ( typeof type !== "string" ) { | ||
124 | - obj = type; | ||
125 | - type = undefined; | ||
126 | - } | ||
127 | - type = type || "fx"; | ||
128 | - | ||
129 | - while ( i-- ) { | ||
130 | - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); | ||
131 | - if ( tmp && tmp.empty ) { | ||
132 | - count++; | ||
133 | - tmp.empty.add( resolve ); | ||
134 | - } | ||
135 | - } | ||
136 | - resolve(); | ||
137 | - return defer.promise( obj ); | ||
138 | - } | ||
139 | -}); | ||
140 | - | ||
141 | -return jQuery; | ||
142 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../queue", | ||
4 | - "../effects" // Delay is optional because of this dependency | ||
5 | -], function( jQuery ) { | ||
6 | - | ||
7 | -// Based off of the plugin by Clint Helfers, with permission. | ||
8 | -// http://blindsignals.com/index.php/2009/07/jquery-delay/ | ||
9 | -jQuery.fn.delay = function( time, type ) { | ||
10 | - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; | ||
11 | - type = type || "fx"; | ||
12 | - | ||
13 | - return this.queue( type, function( next, hooks ) { | ||
14 | - var timeout = setTimeout( next, time ); | ||
15 | - hooks.stop = function() { | ||
16 | - clearTimeout( timeout ); | ||
17 | - }; | ||
18 | - }); | ||
19 | -}; | ||
20 | - | ||
21 | -return jQuery.fn.delay; | ||
22 | -}); |
1 | -define([ | ||
2 | - "./core" | ||
3 | -], function( jQuery ) { | ||
4 | - | ||
5 | -/* | ||
6 | - * Optional (non-Sizzle) selector module for custom builds. | ||
7 | - * | ||
8 | - * Note that this DOES NOT SUPPORT many documented jQuery | ||
9 | - * features in exchange for its smaller size: | ||
10 | - * | ||
11 | - * Attribute not equal selector | ||
12 | - * Positional selectors (:first; :eq(n); :odd; etc.) | ||
13 | - * Type selectors (:input; :checkbox; :button; etc.) | ||
14 | - * State-based selectors (:animated; :visible; :hidden; etc.) | ||
15 | - * :has(selector) | ||
16 | - * :not(complex selector) | ||
17 | - * custom selectors via Sizzle extensions | ||
18 | - * Leading combinators (e.g., $collection.find("> *")) | ||
19 | - * Reliable functionality on XML fragments | ||
20 | - * Requiring all parts of a selector to match elements under context | ||
21 | - * (e.g., $div.find("div > *") now matches children of $div) | ||
22 | - * Matching against non-elements | ||
23 | - * Reliable sorting of disconnected nodes | ||
24 | - * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit) | ||
25 | - * | ||
26 | - * If any of these are unacceptable tradeoffs, either use Sizzle or | ||
27 | - * customize this stub for the project's specific needs. | ||
28 | - */ | ||
29 | - | ||
30 | -var docElem = window.document.documentElement, | ||
31 | - selector_hasDuplicate, | ||
32 | - matches = docElem.matches || | ||
33 | - docElem.webkitMatchesSelector || | ||
34 | - docElem.mozMatchesSelector || | ||
35 | - docElem.oMatchesSelector || | ||
36 | - docElem.msMatchesSelector, | ||
37 | - selector_sortOrder = function( a, b ) { | ||
38 | - // Flag for duplicate removal | ||
39 | - if ( a === b ) { | ||
40 | - selector_hasDuplicate = true; | ||
41 | - return 0; | ||
42 | - } | ||
43 | - | ||
44 | - var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); | ||
45 | - | ||
46 | - if ( compare ) { | ||
47 | - // Disconnected nodes | ||
48 | - if ( compare & 1 ) { | ||
49 | - | ||
50 | - // Choose the first element that is related to our document | ||
51 | - if ( a === document || jQuery.contains(document, a) ) { | ||
52 | - return -1; | ||
53 | - } | ||
54 | - if ( b === document || jQuery.contains(document, b) ) { | ||
55 | - return 1; | ||
56 | - } | ||
57 | - | ||
58 | - // Maintain original order | ||
59 | - return 0; | ||
60 | - } | ||
61 | - | ||
62 | - return compare & 4 ? -1 : 1; | ||
63 | - } | ||
64 | - | ||
65 | - // Not directly comparable, sort on existence of method | ||
66 | - return a.compareDocumentPosition ? -1 : 1; | ||
67 | - }; | ||
68 | - | ||
69 | -jQuery.extend({ | ||
70 | - find: function( selector, context, results, seed ) { | ||
71 | - var elem, nodeType, | ||
72 | - i = 0; | ||
73 | - | ||
74 | - results = results || []; | ||
75 | - context = context || document; | ||
76 | - | ||
77 | - // Same basic safeguard as Sizzle | ||
78 | - if ( !selector || typeof selector !== "string" ) { | ||
79 | - return results; | ||
80 | - } | ||
81 | - | ||
82 | - // Early return if context is not an element or document | ||
83 | - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { | ||
84 | - return []; | ||
85 | - } | ||
86 | - | ||
87 | - if ( seed ) { | ||
88 | - while ( (elem = seed[i++]) ) { | ||
89 | - if ( jQuery.find.matchesSelector(elem, selector) ) { | ||
90 | - results.push( elem ); | ||
91 | - } | ||
92 | - } | ||
93 | - } else { | ||
94 | - jQuery.merge( results, context.querySelectorAll(selector) ); | ||
95 | - } | ||
96 | - | ||
97 | - return results; | ||
98 | - }, | ||
99 | - unique: function( results ) { | ||
100 | - var elem, | ||
101 | - duplicates = [], | ||
102 | - i = 0, | ||
103 | - j = 0; | ||
104 | - | ||
105 | - selector_hasDuplicate = false; | ||
106 | - results.sort( selector_sortOrder ); | ||
107 | - | ||
108 | - if ( selector_hasDuplicate ) { | ||
109 | - while ( (elem = results[i++]) ) { | ||
110 | - if ( elem === results[ i ] ) { | ||
111 | - j = duplicates.push( i ); | ||
112 | - } | ||
113 | - } | ||
114 | - while ( j-- ) { | ||
115 | - results.splice( duplicates[ j ], 1 ); | ||
116 | - } | ||
117 | - } | ||
118 | - | ||
119 | - return results; | ||
120 | - }, | ||
121 | - text: function( elem ) { | ||
122 | - var node, | ||
123 | - ret = "", | ||
124 | - i = 0, | ||
125 | - nodeType = elem.nodeType; | ||
126 | - | ||
127 | - if ( !nodeType ) { | ||
128 | - // If no nodeType, this is expected to be an array | ||
129 | - while ( (node = elem[i++]) ) { | ||
130 | - // Do not traverse comment nodes | ||
131 | - ret += jQuery.text( node ); | ||
132 | - } | ||
133 | - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { | ||
134 | - // Use textContent for elements | ||
135 | - return elem.textContent; | ||
136 | - } else if ( nodeType === 3 || nodeType === 4 ) { | ||
137 | - return elem.nodeValue; | ||
138 | - } | ||
139 | - // Do not include comment or processing instruction nodes | ||
140 | - | ||
141 | - return ret; | ||
142 | - }, | ||
143 | - contains: function( a, b ) { | ||
144 | - var adown = a.nodeType === 9 ? a.documentElement : a, | ||
145 | - bup = b && b.parentNode; | ||
146 | - return a === bup || !!( bup && bup.nodeType === 1 && adown.contains(bup) ); | ||
147 | - }, | ||
148 | - isXMLDoc: function( elem ) { | ||
149 | - return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML"; | ||
150 | - }, | ||
151 | - expr: { | ||
152 | - attrHandle: {}, | ||
153 | - match: { | ||
154 | - bool: /^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i, | ||
155 | - needsContext: /^[\x20\t\r\n\f]*[>+~]/ | ||
156 | - } | ||
157 | - } | ||
158 | -}); | ||
159 | - | ||
160 | -jQuery.extend( jQuery.find, { | ||
161 | - matches: function( expr, elements ) { | ||
162 | - return jQuery.find( expr, null, null, elements ); | ||
163 | - }, | ||
164 | - matchesSelector: function( elem, expr ) { | ||
165 | - return matches.call( elem, expr ); | ||
166 | - }, | ||
167 | - attr: function( elem, name ) { | ||
168 | - return elem.getAttribute( name ); | ||
169 | - } | ||
170 | -}); | ||
171 | - | ||
172 | -}); |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "sizzle" | ||
4 | -], function( jQuery, Sizzle ) { | ||
5 | - | ||
6 | -jQuery.find = Sizzle; | ||
7 | -jQuery.expr = Sizzle.selectors; | ||
8 | -jQuery.expr[":"] = jQuery.expr.pseudos; | ||
9 | -jQuery.unique = Sizzle.uniqueSort; | ||
10 | -jQuery.text = Sizzle.getText; | ||
11 | -jQuery.isXMLDoc = Sizzle.isXML; | ||
12 | -jQuery.contains = Sizzle.contains; | ||
13 | - | ||
14 | -}); |
1 | -define([ "./selector-sizzle" ]); |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "./manipulation/var/rcheckableType", | ||
4 | - "./core/init", | ||
5 | - "./traversing", // filter | ||
6 | - "./attributes/prop" | ||
7 | -], function( jQuery, rcheckableType ) { | ||
8 | - | ||
9 | -var r20 = /%20/g, | ||
10 | - rbracket = /\[\]$/, | ||
11 | - rCRLF = /\r?\n/g, | ||
12 | - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, | ||
13 | - rsubmittable = /^(?:input|select|textarea|keygen)/i; | ||
14 | - | ||
15 | -function buildParams( prefix, obj, traditional, add ) { | ||
16 | - var name; | ||
17 | - | ||
18 | - if ( jQuery.isArray( obj ) ) { | ||
19 | - // Serialize array item. | ||
20 | - jQuery.each( obj, function( i, v ) { | ||
21 | - if ( traditional || rbracket.test( prefix ) ) { | ||
22 | - // Treat each array item as a scalar. | ||
23 | - add( prefix, v ); | ||
24 | - | ||
25 | - } else { | ||
26 | - // Item is non-scalar (array or object), encode its numeric index. | ||
27 | - buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); | ||
28 | - } | ||
29 | - }); | ||
30 | - | ||
31 | - } else if ( !traditional && jQuery.type( obj ) === "object" ) { | ||
32 | - // Serialize object item. | ||
33 | - for ( name in obj ) { | ||
34 | - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); | ||
35 | - } | ||
36 | - | ||
37 | - } else { | ||
38 | - // Serialize scalar item. | ||
39 | - add( prefix, obj ); | ||
40 | - } | ||
41 | -} | ||
42 | - | ||
43 | -// Serialize an array of form elements or a set of | ||
44 | -// key/values into a query string | ||
45 | -jQuery.param = function( a, traditional ) { | ||
46 | - var prefix, | ||
47 | - s = [], | ||
48 | - add = function( key, value ) { | ||
49 | - // If value is a function, invoke it and return its value | ||
50 | - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); | ||
51 | - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); | ||
52 | - }; | ||
53 | - | ||
54 | - // Set traditional to true for jQuery <= 1.3.2 behavior. | ||
55 | - if ( traditional === undefined ) { | ||
56 | - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; | ||
57 | - } | ||
58 | - | ||
59 | - // If an array was passed in, assume that it is an array of form elements. | ||
60 | - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { | ||
61 | - // Serialize the form elements | ||
62 | - jQuery.each( a, function() { | ||
63 | - add( this.name, this.value ); | ||
64 | - }); | ||
65 | - | ||
66 | - } else { | ||
67 | - // If traditional, encode the "old" way (the way 1.3.2 or older | ||
68 | - // did it), otherwise encode params recursively. | ||
69 | - for ( prefix in a ) { | ||
70 | - buildParams( prefix, a[ prefix ], traditional, add ); | ||
71 | - } | ||
72 | - } | ||
73 | - | ||
74 | - // Return the resulting serialization | ||
75 | - return s.join( "&" ).replace( r20, "+" ); | ||
76 | -}; | ||
77 | - | ||
78 | -jQuery.fn.extend({ | ||
79 | - serialize: function() { | ||
80 | - return jQuery.param( this.serializeArray() ); | ||
81 | - }, | ||
82 | - serializeArray: function() { | ||
83 | - return this.map(function() { | ||
84 | - // Can add propHook for "elements" to filter or add form elements | ||
85 | - var elements = jQuery.prop( this, "elements" ); | ||
86 | - return elements ? jQuery.makeArray( elements ) : this; | ||
87 | - }) | ||
88 | - .filter(function() { | ||
89 | - var type = this.type; | ||
90 | - | ||
91 | - // Use .is( ":disabled" ) so that fieldset[disabled] works | ||
92 | - return this.name && !jQuery( this ).is( ":disabled" ) && | ||
93 | - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && | ||
94 | - ( this.checked || !rcheckableType.test( type ) ); | ||
95 | - }) | ||
96 | - .map(function( i, elem ) { | ||
97 | - var val = jQuery( this ).val(); | ||
98 | - | ||
99 | - return val == null ? | ||
100 | - null : | ||
101 | - jQuery.isArray( val ) ? | ||
102 | - jQuery.map( val, function( val ) { | ||
103 | - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; | ||
104 | - }) : | ||
105 | - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; | ||
106 | - }).get(); | ||
107 | - } | ||
108 | -}); | ||
109 | - | ||
110 | -return jQuery; | ||
111 | -}); |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "./var/indexOf", | ||
4 | - "./traversing/var/rneedsContext", | ||
5 | - "./core/init", | ||
6 | - "./traversing/findFilter", | ||
7 | - "./selector" | ||
8 | -], function( jQuery, indexOf, rneedsContext ) { | ||
9 | - | ||
10 | -var rparentsprev = /^(?:parents|prev(?:Until|All))/, | ||
11 | - // Methods guaranteed to produce a unique set when starting from a unique set | ||
12 | - guaranteedUnique = { | ||
13 | - children: true, | ||
14 | - contents: true, | ||
15 | - next: true, | ||
16 | - prev: true | ||
17 | - }; | ||
18 | - | ||
19 | -jQuery.extend({ | ||
20 | - dir: function( elem, dir, until ) { | ||
21 | - var matched = [], | ||
22 | - truncate = until !== undefined; | ||
23 | - | ||
24 | - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { | ||
25 | - if ( elem.nodeType === 1 ) { | ||
26 | - if ( truncate && jQuery( elem ).is( until ) ) { | ||
27 | - break; | ||
28 | - } | ||
29 | - matched.push( elem ); | ||
30 | - } | ||
31 | - } | ||
32 | - return matched; | ||
33 | - }, | ||
34 | - | ||
35 | - sibling: function( n, elem ) { | ||
36 | - var matched = []; | ||
37 | - | ||
38 | - for ( ; n; n = n.nextSibling ) { | ||
39 | - if ( n.nodeType === 1 && n !== elem ) { | ||
40 | - matched.push( n ); | ||
41 | - } | ||
42 | - } | ||
43 | - | ||
44 | - return matched; | ||
45 | - } | ||
46 | -}); | ||
47 | - | ||
48 | -jQuery.fn.extend({ | ||
49 | - has: function( target ) { | ||
50 | - var targets = jQuery( target, this ), | ||
51 | - l = targets.length; | ||
52 | - | ||
53 | - return this.filter(function() { | ||
54 | - var i = 0; | ||
55 | - for ( ; i < l; i++ ) { | ||
56 | - if ( jQuery.contains( this, targets[i] ) ) { | ||
57 | - return true; | ||
58 | - } | ||
59 | - } | ||
60 | - }); | ||
61 | - }, | ||
62 | - | ||
63 | - closest: function( selectors, context ) { | ||
64 | - var cur, | ||
65 | - i = 0, | ||
66 | - l = this.length, | ||
67 | - matched = [], | ||
68 | - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? | ||
69 | - jQuery( selectors, context || this.context ) : | ||
70 | - 0; | ||
71 | - | ||
72 | - for ( ; i < l; i++ ) { | ||
73 | - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { | ||
74 | - // Always skip document fragments | ||
75 | - if ( cur.nodeType < 11 && (pos ? | ||
76 | - pos.index(cur) > -1 : | ||
77 | - | ||
78 | - // Don't pass non-elements to Sizzle | ||
79 | - cur.nodeType === 1 && | ||
80 | - jQuery.find.matchesSelector(cur, selectors)) ) { | ||
81 | - | ||
82 | - matched.push( cur ); | ||
83 | - break; | ||
84 | - } | ||
85 | - } | ||
86 | - } | ||
87 | - | ||
88 | - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); | ||
89 | - }, | ||
90 | - | ||
91 | - // Determine the position of an element within the set | ||
92 | - index: function( elem ) { | ||
93 | - | ||
94 | - // No argument, return index in parent | ||
95 | - if ( !elem ) { | ||
96 | - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; | ||
97 | - } | ||
98 | - | ||
99 | - // Index in selector | ||
100 | - if ( typeof elem === "string" ) { | ||
101 | - return indexOf.call( jQuery( elem ), this[ 0 ] ); | ||
102 | - } | ||
103 | - | ||
104 | - // Locate the position of the desired element | ||
105 | - return indexOf.call( this, | ||
106 | - | ||
107 | - // If it receives a jQuery object, the first element is used | ||
108 | - elem.jquery ? elem[ 0 ] : elem | ||
109 | - ); | ||
110 | - }, | ||
111 | - | ||
112 | - add: function( selector, context ) { | ||
113 | - return this.pushStack( | ||
114 | - jQuery.unique( | ||
115 | - jQuery.merge( this.get(), jQuery( selector, context ) ) | ||
116 | - ) | ||
117 | - ); | ||
118 | - }, | ||
119 | - | ||
120 | - addBack: function( selector ) { | ||
121 | - return this.add( selector == null ? | ||
122 | - this.prevObject : this.prevObject.filter(selector) | ||
123 | - ); | ||
124 | - } | ||
125 | -}); | ||
126 | - | ||
127 | -function sibling( cur, dir ) { | ||
128 | - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} | ||
129 | - return cur; | ||
130 | -} | ||
131 | - | ||
132 | -jQuery.each({ | ||
133 | - parent: function( elem ) { | ||
134 | - var parent = elem.parentNode; | ||
135 | - return parent && parent.nodeType !== 11 ? parent : null; | ||
136 | - }, | ||
137 | - parents: function( elem ) { | ||
138 | - return jQuery.dir( elem, "parentNode" ); | ||
139 | - }, | ||
140 | - parentsUntil: function( elem, i, until ) { | ||
141 | - return jQuery.dir( elem, "parentNode", until ); | ||
142 | - }, | ||
143 | - next: function( elem ) { | ||
144 | - return sibling( elem, "nextSibling" ); | ||
145 | - }, | ||
146 | - prev: function( elem ) { | ||
147 | - return sibling( elem, "previousSibling" ); | ||
148 | - }, | ||
149 | - nextAll: function( elem ) { | ||
150 | - return jQuery.dir( elem, "nextSibling" ); | ||
151 | - }, | ||
152 | - prevAll: function( elem ) { | ||
153 | - return jQuery.dir( elem, "previousSibling" ); | ||
154 | - }, | ||
155 | - nextUntil: function( elem, i, until ) { | ||
156 | - return jQuery.dir( elem, "nextSibling", until ); | ||
157 | - }, | ||
158 | - prevUntil: function( elem, i, until ) { | ||
159 | - return jQuery.dir( elem, "previousSibling", until ); | ||
160 | - }, | ||
161 | - siblings: function( elem ) { | ||
162 | - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); | ||
163 | - }, | ||
164 | - children: function( elem ) { | ||
165 | - return jQuery.sibling( elem.firstChild ); | ||
166 | - }, | ||
167 | - contents: function( elem ) { | ||
168 | - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); | ||
169 | - } | ||
170 | -}, function( name, fn ) { | ||
171 | - jQuery.fn[ name ] = function( until, selector ) { | ||
172 | - var matched = jQuery.map( this, fn, until ); | ||
173 | - | ||
174 | - if ( name.slice( -5 ) !== "Until" ) { | ||
175 | - selector = until; | ||
176 | - } | ||
177 | - | ||
178 | - if ( selector && typeof selector === "string" ) { | ||
179 | - matched = jQuery.filter( selector, matched ); | ||
180 | - } | ||
181 | - | ||
182 | - if ( this.length > 1 ) { | ||
183 | - // Remove duplicates | ||
184 | - if ( !guaranteedUnique[ name ] ) { | ||
185 | - jQuery.unique( matched ); | ||
186 | - } | ||
187 | - | ||
188 | - // Reverse order for parents* and prev-derivatives | ||
189 | - if ( rparentsprev.test( name ) ) { | ||
190 | - matched.reverse(); | ||
191 | - } | ||
192 | - } | ||
193 | - | ||
194 | - return this.pushStack( matched ); | ||
195 | - }; | ||
196 | -}); | ||
197 | - | ||
198 | -return jQuery; | ||
199 | -}); |
1 | -define([ | ||
2 | - "../core", | ||
3 | - "../var/indexOf", | ||
4 | - "./var/rneedsContext", | ||
5 | - "../selector" | ||
6 | -], function( jQuery, indexOf, rneedsContext ) { | ||
7 | - | ||
8 | -var risSimple = /^.[^:#\[\.,]*$/; | ||
9 | - | ||
10 | -// Implement the identical functionality for filter and not | ||
11 | -function winnow( elements, qualifier, not ) { | ||
12 | - if ( jQuery.isFunction( qualifier ) ) { | ||
13 | - return jQuery.grep( elements, function( elem, i ) { | ||
14 | - /* jshint -W018 */ | ||
15 | - return !!qualifier.call( elem, i, elem ) !== not; | ||
16 | - }); | ||
17 | - | ||
18 | - } | ||
19 | - | ||
20 | - if ( qualifier.nodeType ) { | ||
21 | - return jQuery.grep( elements, function( elem ) { | ||
22 | - return ( elem === qualifier ) !== not; | ||
23 | - }); | ||
24 | - | ||
25 | - } | ||
26 | - | ||
27 | - if ( typeof qualifier === "string" ) { | ||
28 | - if ( risSimple.test( qualifier ) ) { | ||
29 | - return jQuery.filter( qualifier, elements, not ); | ||
30 | - } | ||
31 | - | ||
32 | - qualifier = jQuery.filter( qualifier, elements ); | ||
33 | - } | ||
34 | - | ||
35 | - return jQuery.grep( elements, function( elem ) { | ||
36 | - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; | ||
37 | - }); | ||
38 | -} | ||
39 | - | ||
40 | -jQuery.filter = function( expr, elems, not ) { | ||
41 | - var elem = elems[ 0 ]; | ||
42 | - | ||
43 | - if ( not ) { | ||
44 | - expr = ":not(" + expr + ")"; | ||
45 | - } | ||
46 | - | ||
47 | - return elems.length === 1 && elem.nodeType === 1 ? | ||
48 | - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : | ||
49 | - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { | ||
50 | - return elem.nodeType === 1; | ||
51 | - })); | ||
52 | -}; | ||
53 | - | ||
54 | -jQuery.fn.extend({ | ||
55 | - find: function( selector ) { | ||
56 | - var i, | ||
57 | - len = this.length, | ||
58 | - ret = [], | ||
59 | - self = this; | ||
60 | - | ||
61 | - if ( typeof selector !== "string" ) { | ||
62 | - return this.pushStack( jQuery( selector ).filter(function() { | ||
63 | - for ( i = 0; i < len; i++ ) { | ||
64 | - if ( jQuery.contains( self[ i ], this ) ) { | ||
65 | - return true; | ||
66 | - } | ||
67 | - } | ||
68 | - }) ); | ||
69 | - } | ||
70 | - | ||
71 | - for ( i = 0; i < len; i++ ) { | ||
72 | - jQuery.find( selector, self[ i ], ret ); | ||
73 | - } | ||
74 | - | ||
75 | - // Needed because $( selector, context ) becomes $( context ).find( selector ) | ||
76 | - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); | ||
77 | - ret.selector = this.selector ? this.selector + " " + selector : selector; | ||
78 | - return ret; | ||
79 | - }, | ||
80 | - filter: function( selector ) { | ||
81 | - return this.pushStack( winnow(this, selector || [], false) ); | ||
82 | - }, | ||
83 | - not: function( selector ) { | ||
84 | - return this.pushStack( winnow(this, selector || [], true) ); | ||
85 | - }, | ||
86 | - is: function( selector ) { | ||
87 | - return !!winnow( | ||
88 | - this, | ||
89 | - | ||
90 | - // If this is a positional/relative selector, check membership in the returned set | ||
91 | - // so $("p:first").is("p:last") won't return true for a doc with two "p". | ||
92 | - typeof selector === "string" && rneedsContext.test( selector ) ? | ||
93 | - jQuery( selector ) : | ||
94 | - selector || [], | ||
95 | - false | ||
96 | - ).length; | ||
97 | - } | ||
98 | -}); | ||
99 | - | ||
100 | -}); |
1 | -define([ | ||
2 | - "./core", | ||
3 | - "./core/init", | ||
4 | - "./manipulation", // clone | ||
5 | - "./traversing" // parent, contents | ||
6 | -], function( jQuery ) { | ||
7 | - | ||
8 | -jQuery.fn.extend({ | ||
9 | - wrapAll: function( html ) { | ||
10 | - var wrap; | ||
11 | - | ||
12 | - if ( jQuery.isFunction( html ) ) { | ||
13 | - return this.each(function( i ) { | ||
14 | - jQuery( this ).wrapAll( html.call(this, i) ); | ||
15 | - }); | ||
16 | - } | ||
17 | - | ||
18 | - if ( this[ 0 ] ) { | ||
19 | - | ||
20 | - // The elements to wrap the target around | ||
21 | - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); | ||
22 | - | ||
23 | - if ( this[ 0 ].parentNode ) { | ||
24 | - wrap.insertBefore( this[ 0 ] ); | ||
25 | - } | ||
26 | - | ||
27 | - wrap.map(function() { | ||
28 | - var elem = this; | ||
29 | - | ||
30 | - while ( elem.firstElementChild ) { | ||
31 | - elem = elem.firstElementChild; | ||
32 | - } | ||
33 | - | ||
34 | - return elem; | ||
35 | - }).append( this ); | ||
36 | - } | ||
37 | - | ||
38 | - return this; | ||
39 | - }, | ||
40 | - | ||
41 | - wrapInner: function( html ) { | ||
42 | - if ( jQuery.isFunction( html ) ) { | ||
43 | - return this.each(function( i ) { | ||
44 | - jQuery( this ).wrapInner( html.call(this, i) ); | ||
45 | - }); | ||
46 | - } | ||
47 | - | ||
48 | - return this.each(function() { | ||
49 | - var self = jQuery( this ), | ||
50 | - contents = self.contents(); | ||
51 | - | ||
52 | - if ( contents.length ) { | ||
53 | - contents.wrapAll( html ); | ||
54 | - | ||
55 | - } else { | ||
56 | - self.append( html ); | ||
57 | - } | ||
58 | - }); | ||
59 | - }, | ||
60 | - | ||
61 | - wrap: function( html ) { | ||
62 | - var isFunction = jQuery.isFunction( html ); | ||
63 | - | ||
64 | - return this.each(function( i ) { | ||
65 | - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); | ||
66 | - }); | ||
67 | - }, | ||
68 | - | ||
69 | - unwrap: function() { | ||
70 | - return this.parent().each(function() { | ||
71 | - if ( !jQuery.nodeName( this, "body" ) ) { | ||
72 | - jQuery( this ).replaceWith( this.childNodes ); | ||
73 | - } | ||
74 | - }).end(); | ||
75 | - } | ||
76 | -}); | ||
77 | - | ||
78 | -return jQuery; | ||
79 | -}); |
08_mongodb/gulpfile.js
deleted
100644 → 0
1 | -// Include gulp | ||
2 | -var gulp = require('gulp'); | ||
3 | - | ||
4 | -// Include Our Plugins | ||
5 | -var jshint = require('gulp-jshint'); | ||
6 | -var sass = require('gulp-sass'); | ||
7 | -var nodemon = require('gulp-nodemon'); | ||
8 | -var concat = require('gulp-concat'); | ||
9 | - | ||
10 | -// Lint Task | ||
11 | -gulp.task('lint', function() { | ||
12 | - return gulp.src(['app.js', 'routes/**/*.js', 'models/**/*.js', 'config/**/*.js', 'public/javascripts/**/*.js']) | ||
13 | - .pipe(jshint()) | ||
14 | - .pipe(jshint.reporter('default')); | ||
15 | -}); | ||
16 | - | ||
17 | -// Compile Our Sass | ||
18 | -gulp.task('sass', function() { | ||
19 | - return gulp.src(['scss/*.scss']) | ||
20 | - .pipe(sass()) | ||
21 | - .pipe(concat('style.css')) | ||
22 | - .pipe(gulp.dest('public/stylesheets')); | ||
23 | -}); | ||
24 | - | ||
25 | -// Watch Files For Changes | ||
26 | -gulp.task('watch', function() { | ||
27 | - gulp.watch('scss/**/*.scss', ['sass']); | ||
28 | -}); | ||
29 | - | ||
30 | -gulp.task('nodemon', function (cb) { | ||
31 | - var started = false; | ||
32 | - return nodemon({ | ||
33 | - script: 'bin/www' | ||
34 | - }).on('start', function () { | ||
35 | - // to avoid nodemon being started multiple times | ||
36 | - // thanks @matthisk | ||
37 | - if (!started) { | ||
38 | - cb(); | ||
39 | - started = true; | ||
40 | - } | ||
41 | - }); | ||
42 | -}); | ||
43 | - | ||
44 | -// Default Task | ||
45 | -gulp.task('default', ['lint', 'sass', 'watch', 'nodemon']); |
08_mongodb/models/User.js
deleted
100644 → 0
1 | -var mongoose = require('mongoose'), | ||
2 | - Schema = mongoose.Schema; | ||
3 | - | ||
4 | -var schema = new Schema({ | ||
5 | - name: {type: String, required: true, trim: true}, | ||
6 | - email: {type: String, required: true, index: true, unique: true, trim: true}, | ||
7 | - password: {type: String}, | ||
8 | - createdAt: {type: Date, default: Date.now} | ||
9 | -}, { | ||
10 | - toJSON: { virtuals: true}, | ||
11 | - toObject: {virtuals: true} | ||
12 | -}); | ||
13 | - | ||
14 | -var User = mongoose.model('User', schema); | ||
15 | - | ||
16 | -module.exports = User; |
08_mongodb/mongodbtest.sh
deleted
100644 → 0
1 | -// 전체 삭제 | ||
2 | -db.users.drop() | ||
3 | - | ||
4 | -// Insert (Create) | ||
5 | -db.users.insert({name: 'Kim', age: 30, tel: '555-6666', gender: 'm'}) | ||
6 | -db.users.insert({name: 'Lee', age: 22, tel: '444-6666', gender: 'm'}) | ||
7 | -db.users.insert({name: 'Cho', age: 23, tel: '222-2222', gender: 'm'}) | ||
8 | -db.users.insert({name: 'Park', age: 43, gender: 'f', scores: [100, 200, 600]}) | ||
9 | -db.users.insert({name: 'Choi', age: 26, gender: 'f', department: {name: 'CS', loc: 'Yongin'}}) | ||
10 | - | ||
11 | -// Query (Read) | ||
12 | -db.users.find() | ||
13 | -db.users.find({gender: 'm'}) | ||
14 | -db.users.find({name: { $in: ['Park', 'Choi']}}) | ||
15 | -db.users.find({gender: 'm', age: { $gt: 25}}) | ||
16 | -db.users.find({$or: [{age: {$lte: 23}}, {gender: 'f'}]}) | ||
17 | - | ||
18 | -db.users.find({scores: 200}) | ||
19 | -db.users.find({'department.name': 'CS'}) | ||
20 | - | ||
21 | -// Modify (Update) | ||
22 | -db.users.update({name: 'Lee'}, {$set: {age: 23}}) | ||
23 | -db.users.update({name: 'Cho'}, {name: 'Choo', age: 40, scores: [100, 200]}) | ||
24 | -db.users.update({name: 'Jay'}, {name: 'Jay', gender: 'm', age: 50}, {upsert: true}) | ||
25 | -db.users.update({name: 'Jay'}, {name: 'Jay', gender: 'f', age: 25}, {upsert: true}) | ||
26 | -db.users.update({name: 'Choo'}, {$set: {gender: 'f'}}) | ||
27 | -db.users.update({name: 'Lee'}, {$unset: {tel: 1}}) | ||
28 | - | ||
29 | -// Remove (Delete) | ||
30 | -db.users.count() | ||
31 | -db.users.remove({name: 'Choi'}) | ||
32 | -db.users.count() | ||
33 | - | ||
34 | -// Aggregate | ||
35 | -db.users.find() | ||
36 | -db.users.aggregate([ | ||
37 | - {$match: {age: {$gt: 23}}}, | ||
38 | - {$group: {_id: "$gender", cnt: {$sum: 1} }}, | ||
39 | - {$sort: {cnt: -1}} | ||
40 | -]) |
08_mongodb/package.json
deleted
100644 → 0
1 | -{ | ||
2 | - "name": "ex01", | ||
3 | - "version": "0.0.0", | ||
4 | - "private": true, | ||
5 | - "scripts": { | ||
6 | - "start": "node ./bin/www" | ||
7 | - }, | ||
8 | - "dependencies": { | ||
9 | - "body-parser": "~1.13.1", | ||
10 | - "connect-flash": "^0.1.1", | ||
11 | - "cookie-parser": "~1.3.5", | ||
12 | - "debug": "~2.2.0", | ||
13 | - "express": "~4.13.0", | ||
14 | - "express-session": "^1.11.3", | ||
15 | - "jade": "~1.11.0", | ||
16 | - "method-override": "^2.3.5", | ||
17 | - "moment": "^2.10.6", | ||
18 | - "mongoose": "^4.1.11", | ||
19 | - "morgan": "~1.6.1", | ||
20 | - "node-sass-middleware": "0.8.0", | ||
21 | - "serve-favicon": "~2.3.0" | ||
22 | - }, | ||
23 | - "devDependencies": { | ||
24 | - "gulp": "^3.9.0", | ||
25 | - "gulp-concat": "^2.6.0", | ||
26 | - "gulp-jshint": "^1.11.2", | ||
27 | - "gulp-nodemon": "^2.0.4", | ||
28 | - "gulp-sass": "^2.0.4" | ||
29 | - } | ||
30 | -} |
1 | -form.todos { | ||
2 | - width: 100%; | ||
3 | - margin: 0 0 1em 0; | ||
4 | - padding: 1em; | ||
5 | - background: #acddf2; } | ||
6 | - form.todos .main input[type='text'] { | ||
7 | - font-size: 1.4em; | ||
8 | - border: 1px solid #2c9cd2; | ||
9 | - padding: 0.5em 1em; | ||
10 | - margin-bottom: 1em; | ||
11 | - width: 100%; | ||
12 | - box-sizing: border-box; } | ||
13 | - form.todos .actions button { | ||
14 | - margin-top: 1em; } | ||
15 | - | ||
16 | -.tasks { | ||
17 | - width: 100%; | ||
18 | - list-style: none; | ||
19 | - padding: 0; | ||
20 | - margin: 0; } | ||
21 | - .tasks li.task { | ||
22 | - border-bottom: 1px solid #eaeaea; | ||
23 | - padding: 1em 0; } | ||
24 | - .tasks li.task span { | ||
25 | - display: inline-block; | ||
26 | - margin-right: 1em; } | ||
27 | - .tasks li.task .check { | ||
28 | - width: 2em; | ||
29 | - height: 2em; | ||
30 | - border-radius: 1em; | ||
31 | - border: 1px solid #2c9cd2; | ||
32 | - vertical-align: bottom; } | ||
33 | - .tasks li.task .content { | ||
34 | - font-size: 1.1em; | ||
35 | - font-weight: bold; | ||
36 | - line-height: 2em; } | ||
37 | - .tasks li.task .category { | ||
38 | - float: right; | ||
39 | - min-width: 5em; | ||
40 | - font-size: 0.9em; } | ||
41 | - .tasks li.task .priority { | ||
42 | - font-size: 0.8em; | ||
43 | - border-radius: 0.8em; | ||
44 | - background-color: #888; | ||
45 | - color: #fff; | ||
46 | - height: 200%; | ||
47 | - line-height: 1.6em; | ||
48 | - text-align: center; | ||
49 | - padding: 0 1em; } | ||
50 | - .tasks li.task .priority.p2 { | ||
51 | - background-color: #b0b33c; } | ||
52 | - .tasks li.task .priority.p3 { | ||
53 | - background-color: #a51e23; } | ||
54 | - .tasks li.task .deadline { | ||
55 | - color: #ccc; | ||
56 | - font-size: 0.9em; } | ||
57 | - | ||
58 | -.side .section { | ||
59 | - background: #888; | ||
60 | - width: 100%; | ||
61 | - color: #fff; } | ||
62 | - .side .section a { | ||
63 | - color: #fff; | ||
64 | - display: inline-block; | ||
65 | - text-decoration: none; | ||
66 | - width: 100%; | ||
67 | - box-sizing: border-box; | ||
68 | - padding: 0.5em 1em 0.5em 3em; | ||
69 | - border-bottom: 1px solid #fff; } | ||
70 | - .side .section a:last-child { | ||
71 | - border-bottom: 0; } | ||
72 | - .side .section a.all { | ||
73 | - background: #444; } | ||
74 | - .side .section a.selected { | ||
75 | - padding-left: 1em; | ||
76 | - background-color: #009eec; } | ||
77 | - .side .section a.selected:before { | ||
78 | - font-family: FontAwesome; | ||
79 | - content: "\f00c"; | ||
80 | - display: inline-block; | ||
81 | - vertical-align: middle; | ||
82 | - padding-right: 1em; } | ||
83 | - .side .section a:hover, .side .section a.selected:hover { | ||
84 | - background-color: #337AB7; } | ||
85 | - | ||
86 | -.form-signin { | ||
87 | - width: 320px; | ||
88 | - height: 300px; | ||
89 | - padding: 0; | ||
90 | - top: 10em; | ||
91 | - left: 50%; | ||
92 | - position: absolute; | ||
93 | - margin: 0 0 0 -160px; } | ||
94 | - .form-signin .checkbox { | ||
95 | - margin-bottom: 10px; | ||
96 | - font-weight: normal; } | ||
97 | - .form-signin .form-control { | ||
98 | - position: relative; | ||
99 | - height: auto; | ||
100 | - box-sizing: border-box; | ||
101 | - padding: 10px; | ||
102 | - font-size: 16px; } | ||
103 | - .form-signin .form-control:focus { | ||
104 | - z-index: 2; } | ||
105 | - .form-signin input[type="email"] { | ||
106 | - margin-bottom: -1px; | ||
107 | - border-bottom-right-radius: 0; | ||
108 | - border-bottom-left-radius: 0; } | ||
109 | - .form-signin input[type="password"] { | ||
110 | - margin-bottom: 10px; | ||
111 | - border-top-left-radius: 0; | ||
112 | - border-top-right-radius: 0; } | ||
113 | - | ||
114 | -body { | ||
115 | - font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; | ||
116 | - margin-top: 50px; | ||
117 | - padding-top: 1em; } | ||
118 | - | ||
119 | -a { | ||
120 | - color: #00B7FF; } | ||
121 | - | ||
122 | -.jumbotron { | ||
123 | - margin-top: -1em; | ||
124 | - background: url("/images/bg.jpg") no-repeat left top; | ||
125 | - -webkit-background-size: 100%; | ||
126 | - -moz-background-size: 100%; | ||
127 | - -o-background-size: 100%; | ||
128 | - background-size: 100%; | ||
129 | - min-height: 20em; | ||
130 | - color: #fff; | ||
131 | - text-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3); } | ||
132 | - | ||
133 | -.form-actions { | ||
134 | - padding: 19px 20px 20px; | ||
135 | - margin-top: 20px; | ||
136 | - margin-bottom: 20px; | ||
137 | - background-color: #f5f5f5; | ||
138 | - border-top: 1px solid #e5e5e5; } | ||
139 | - | ||
140 | -.footer { | ||
141 | - position: absolute; | ||
142 | - bottom: 0; | ||
143 | - width: 100%; | ||
144 | - height: 60px; | ||
145 | - background-color: #f5f5f5; } | ||
146 | - .footer .container { | ||
147 | - padding-right: 1em; | ||
148 | - padding-left: 1em; } | ||
149 | - .footer .container .text-muted { | ||
150 | - margin: 20px 0; | ||
151 | - color: #bbb; } |
08_mongodb/routes/index.js
deleted
100644 → 0
1 | -var express = require('express'), | ||
2 | - todos = require('./todos'), | ||
3 | - User = require('../models/User'); | ||
4 | -var router = express.Router(); | ||
5 | - | ||
6 | -/* GET home page. */ | ||
7 | -router.get('/', function(req, res, next) { | ||
8 | - res.render('index'); | ||
9 | -}); | ||
10 | - | ||
11 | -router.get('/signin', function(req, res, next) { | ||
12 | - res.render('signin'); | ||
13 | -}); | ||
14 | - | ||
15 | -router.post('/signin', function(req, res, next) { | ||
16 | - User.findOne({email: req.body.email}, function(err, user) { | ||
17 | - if (err) { | ||
18 | - res.render('error', {message: "Error", error: err}); | ||
19 | - } else if (!user) { | ||
20 | - req.flash('danger', '존재하지 않는 사용자 입니다.'); | ||
21 | - res.redirect('back'); | ||
22 | - } else if (user.password !== req.body.password) { | ||
23 | - req.flash('danger', '비밀번호가 일치하지 않습니다.'); | ||
24 | - res.redirect('back'); | ||
25 | - } else { | ||
26 | - req.session.user = user; | ||
27 | - req.flash('success', '로그인 되었습니다.'); | ||
28 | - res.redirect('/todos'); | ||
29 | - } | ||
30 | - }); | ||
31 | -}); | ||
32 | - | ||
33 | -router.get('/signout', function(req, res, next) { | ||
34 | - delete req.session.user; | ||
35 | - req.flash('success', '로그아웃 되었습니다.'); | ||
36 | - res.redirect('/'); | ||
37 | -}); | ||
38 | -router.use('/todos', todos); | ||
39 | - | ||
40 | -module.exports = router; |
08_mongodb/routes/todos.js
deleted
100644 → 0
1 | -var express = require('express'); | ||
2 | -var router = express.Router(); | ||
3 | - | ||
4 | -router.get('/', function(req, res, next) { | ||
5 | - res.render('todos', { | ||
6 | - tasks: [ | ||
7 | - {_id: 1, content: '이런저런일1', category: '학교', priority: 3, deadline: null}, | ||
8 | - {_id: 2, content: '이런저런일2', category: null, priority: 2, deadline: null}, | ||
9 | - {_id: 3, content: '이런저런일3', category: '집', priority: 3, deadline: new Date("2015-12-25")}, | ||
10 | - {_id: 4, content: '이런저런일4', category: '학교', priority: 1, deadline: new Date("2015-11-21")}, | ||
11 | - {_id: 5, content: '이런저런일5', category: '집', priority: 2, deadline: null}, | ||
12 | - ], | ||
13 | - categories: [ | ||
14 | - '학교', | ||
15 | - '집', | ||
16 | - ] | ||
17 | - }); | ||
18 | -}); | ||
19 | - | ||
20 | -router.post('/', function(req, res, next) { | ||
21 | - req.flash('success', '새로운 할 일이 저장되었습니다.'); | ||
22 | - res.redirect('/todos'); | ||
23 | -}); | ||
24 | - | ||
25 | -router.put('/:id', function(req, res, next) { | ||
26 | - req.flash('success', '할 일이 변경되었습니다.'); | ||
27 | - res.redirect('/todos'); | ||
28 | -}); | ||
29 | - | ||
30 | -router.delete('/:id', function(req, res, next) { | ||
31 | - req.flash('success', '할 일이 삭제되었습니다.'); | ||
32 | - res.redirect('/todos'); | ||
33 | -}); | ||
34 | - | ||
35 | -module.exports = router; |
08_mongodb/routes/users.js
deleted
100644 → 0
1 | -var express = require('express'), | ||
2 | - User = require('../models/User'); | ||
3 | -var router = express.Router(); | ||
4 | - | ||
5 | -function needAuth(req, res, next) { | ||
6 | - if (req.session.user) { | ||
7 | - next(); | ||
8 | - } else { | ||
9 | - req.flash('danger', '로그인이 필요합니다.'); | ||
10 | - res.redirect('/signin'); | ||
11 | - } | ||
12 | -} | ||
13 | - | ||
14 | -function validateForm(form, options) { | ||
15 | - var name = form.name || ""; | ||
16 | - var email = form.email || ""; | ||
17 | - name = name.trim(); | ||
18 | - email = email.trim(); | ||
19 | - | ||
20 | - if (!name) { | ||
21 | - return '이름을 입력해주세요.'; | ||
22 | - } | ||
23 | - | ||
24 | - if (!email) { | ||
25 | - return '이메일을 입력해주세요.'; | ||
26 | - } | ||
27 | - | ||
28 | - if (!form.password && options.needPassword) { | ||
29 | - return '비밀번호를 입력해주세요.'; | ||
30 | - } | ||
31 | - | ||
32 | - if (form.password !== form.password_confirmation) { | ||
33 | - return '비밀번호가 일치하지 않습니다.'; | ||
34 | - } | ||
35 | - | ||
36 | - if (form.password.length < 6) { | ||
37 | - return '비밀번호는 6글자 이상이어야 합니다.'; | ||
38 | - } | ||
39 | - | ||
40 | - return null; | ||
41 | -} | ||
42 | - | ||
43 | -/* GET users listing. */ | ||
44 | -router.get('/', needAuth, function(req, res, next) { | ||
45 | - User.find({}, function(err, users) { | ||
46 | - if (err) { | ||
47 | - return next(err); | ||
48 | - } | ||
49 | - res.render('users/index', {users: users}); | ||
50 | - }); | ||
51 | -}); | ||
52 | - | ||
53 | -router.get('/new', function(req, res, next) { | ||
54 | - res.render('users/new', {messages: req.flash()}); | ||
55 | -}); | ||
56 | - | ||
57 | -router.get('/:id/edit', function(req, res, next) { | ||
58 | - User.findById(req.params.id, function(err, user) { | ||
59 | - if (err) { | ||
60 | - return next(err); | ||
61 | - } | ||
62 | - res.render('users/edit', {user: user}); | ||
63 | - }); | ||
64 | -}); | ||
65 | - | ||
66 | -router.put('/:id', function(req, res, next) { | ||
67 | - var err = validateForm(req.body); | ||
68 | - if (err) { | ||
69 | - req.flash('danger', err); | ||
70 | - return res.redirect('back'); | ||
71 | - } | ||
72 | - | ||
73 | - User.findById({_id: req.params.id}, function(err, user) { | ||
74 | - if (err) { | ||
75 | - return next(err); | ||
76 | - } | ||
77 | - if (!user) { | ||
78 | - req.flash('danger', '존재하지 않는 사용자입니다.'); | ||
79 | - return res.redirect('back'); | ||
80 | - } | ||
81 | - | ||
82 | - if (user.password !== req.body.current_password) { | ||
83 | - req.flash('danger', '현재 비밀번호가 일치하지 않습니다.'); | ||
84 | - return res.redirect('back'); | ||
85 | - } | ||
86 | - | ||
87 | - user.name = req.body.name; | ||
88 | - user.email = req.body.email; | ||
89 | - if (req.body.password) { | ||
90 | - user.password = req.body.password; | ||
91 | - } | ||
92 | - | ||
93 | - user.save(function(err) { | ||
94 | - if (err) { | ||
95 | - return next(err); | ||
96 | - } | ||
97 | - req.flash('success', '사용자 정보가 변경되었습니다.'); | ||
98 | - res.redirect('/users'); | ||
99 | - }); | ||
100 | - }); | ||
101 | -}); | ||
102 | - | ||
103 | -router.delete('/:id', function(req, res, next) { | ||
104 | - User.findOneAndRemove({_id: req.params.id}, function(err) { | ||
105 | - if (err) { | ||
106 | - return next(err); | ||
107 | - } | ||
108 | - req.flash('success', '사용자 계정이 삭제되었습니다.'); | ||
109 | - res.redirect('/users'); | ||
110 | - }); | ||
111 | -}); | ||
112 | - | ||
113 | -router.get('/:id', function(req, res, next) { | ||
114 | - User.findById(req.params.id, function(err, user) { | ||
115 | - if (err) { | ||
116 | - return next(err); | ||
117 | - } | ||
118 | - res.render('users/show', {user: user}); | ||
119 | - }); | ||
120 | -}); | ||
121 | - | ||
122 | -router.post('/', function(req, res, next) { | ||
123 | - var err = validateForm(req.body, {needPassword: true}); | ||
124 | - if (err) { | ||
125 | - req.flash('danger', err); | ||
126 | - return res.redirect('back'); | ||
127 | - } | ||
128 | - User.findOne({email: req.body.email}, function(err, user) { | ||
129 | - if (err) { | ||
130 | - return next(err); | ||
131 | - } | ||
132 | - if (user) { | ||
133 | - req.flash('danger', '동일한 이메일 주소가 이미 존재합니다.'); | ||
134 | - res.redirect('back'); | ||
135 | - } | ||
136 | - var newUser = new User({ | ||
137 | - name: req.body.name, | ||
138 | - email: req.body.email, | ||
139 | - }); | ||
140 | - newUser.password = req.body.password; | ||
141 | - | ||
142 | - newUser.save(function(err) { | ||
143 | - if (err) { | ||
144 | - return next(err); | ||
145 | - } else { | ||
146 | - req.flash('success', '가입이 완료되었습니다. 로그인 해주세요.'); | ||
147 | - res.redirect('/'); | ||
148 | - } | ||
149 | - }); | ||
150 | - }); | ||
151 | -}); | ||
152 | - | ||
153 | - | ||
154 | -module.exports = router; |
08_mongodb/scss/signin.scss
deleted
100644 → 0
1 | -.form-signin { | ||
2 | - width: 320px; | ||
3 | - height: 300px; | ||
4 | - padding: 0; | ||
5 | - top: 10em; | ||
6 | - left: 50%; | ||
7 | - position: absolute; | ||
8 | - margin: 0 0 0 -160px; | ||
9 | - | ||
10 | - .checkbox { | ||
11 | - margin-bottom: 10px; | ||
12 | - font-weight: normal; | ||
13 | - } | ||
14 | - .form-control { | ||
15 | - position: relative; | ||
16 | - height: auto; | ||
17 | - box-sizing: border-box; | ||
18 | - padding: 10px; | ||
19 | - font-size: 16px; | ||
20 | - } | ||
21 | - .form-control:focus { | ||
22 | - z-index: 2; | ||
23 | - } | ||
24 | - input[type="email"] { | ||
25 | - margin-bottom: -1px; | ||
26 | - border-bottom-right-radius: 0; | ||
27 | - border-bottom-left-radius: 0; | ||
28 | - } | ||
29 | - input[type="password"] { | ||
30 | - margin-bottom: 10px; | ||
31 | - border-top-left-radius: 0; | ||
32 | - border-top-right-radius: 0; | ||
33 | - } | ||
34 | -} |
08_mongodb/scss/style.scss
deleted
100644 → 0
1 | -body { | ||
2 | - font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; | ||
3 | - margin-top: 50px; | ||
4 | - padding-top: 1em; | ||
5 | - & > .main-content { | ||
6 | - min-height: 400px; | ||
7 | - } | ||
8 | -} | ||
9 | -a { | ||
10 | - color: #00B7FF | ||
11 | -} | ||
12 | - | ||
13 | -.jumbotron { | ||
14 | - margin-top: -1em; | ||
15 | - background: url('/images/bg.jpg') no-repeat left top; | ||
16 | - -webkit-background-size: 100%; | ||
17 | - -moz-background-size: 100%; | ||
18 | - -o-background-size: 100%; | ||
19 | - background-size: 100%; | ||
20 | - min-height: 20em; | ||
21 | - color: #fff; | ||
22 | - text-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3); | ||
23 | -} | ||
24 | - | ||
25 | -.form-actions { | ||
26 | - padding: 19px 20px 20px; | ||
27 | - margin-top: 20px; | ||
28 | - margin-bottom: 20px; | ||
29 | - background-color: #f5f5f5; | ||
30 | - border-top: 1px solid #e5e5e5; | ||
31 | -} | ||
32 | - | ||
33 | -.footer { | ||
34 | - margin-top: 1em; | ||
35 | - width: 100%; | ||
36 | - height: 60px; | ||
37 | - background-color: #f5f5f5; | ||
38 | - | ||
39 | - .container { | ||
40 | - padding-right: 1em; | ||
41 | - padding-left: 1em; | ||
42 | - | ||
43 | - .text-muted { | ||
44 | - margin: 20px 0; | ||
45 | - color: #bbb; | ||
46 | - } | ||
47 | - } | ||
48 | -} |
08_mongodb/scss/todos.scss
deleted
100644 → 0
1 | -form.todos { | ||
2 | - width: 100%; | ||
3 | - margin: 0 0 1em 0; | ||
4 | - padding: 1em; | ||
5 | - background: #acddf2; | ||
6 | - .main { | ||
7 | - input[type='text'] { | ||
8 | - font-size: 1.4em; | ||
9 | - border: 1px solid #2c9cd2; | ||
10 | - padding: 0.5em 1em; | ||
11 | - margin-bottom: 1em; | ||
12 | - width: 100%; | ||
13 | - box-sizing: border-box; | ||
14 | - } | ||
15 | - } | ||
16 | - .actions button { | ||
17 | - margin-top: 1em; | ||
18 | - } | ||
19 | -} | ||
20 | - | ||
21 | -.tasks { | ||
22 | - width: 100%; | ||
23 | - list-style: none; | ||
24 | - padding: 0; | ||
25 | - margin: 0; | ||
26 | - li.task { | ||
27 | - border-bottom: 1px solid #eaeaea; | ||
28 | - padding: 1em 0; | ||
29 | - span { | ||
30 | - display: inline-block; | ||
31 | - margin-right: 1em; | ||
32 | - } | ||
33 | - .check { | ||
34 | - width: 2em; | ||
35 | - height: 2em; | ||
36 | - border-radius: 1em; | ||
37 | - border: 1px solid #2c9cd2; | ||
38 | - vertical-align: bottom; | ||
39 | - } | ||
40 | - .content { | ||
41 | - font-size: 1.1em; | ||
42 | - font-weight: bold; | ||
43 | - line-height: 2em; | ||
44 | - } | ||
45 | - .category { | ||
46 | - float: right; | ||
47 | - min-width: 5em; | ||
48 | - font-size: 0.9em; | ||
49 | - } | ||
50 | - .priority { | ||
51 | - font-size: 0.8em; | ||
52 | - border-radius: 0.8em; | ||
53 | - background-color: #888; | ||
54 | - color: #fff; | ||
55 | - height: 200%; | ||
56 | - line-height: 1.6em; | ||
57 | - text-align: center; | ||
58 | - padding: 0 1em; | ||
59 | - | ||
60 | - &.p2 { | ||
61 | - background-color: #b0b33c; | ||
62 | - } | ||
63 | - &.p3 { | ||
64 | - background-color: #a51e23; | ||
65 | - } | ||
66 | - } | ||
67 | - .deadline { | ||
68 | - color: #ccc; | ||
69 | - font-size: 0.9em; | ||
70 | - } | ||
71 | - } | ||
72 | -} | ||
73 | -.side { | ||
74 | - .section { | ||
75 | - background: #888; | ||
76 | - width: 100%; | ||
77 | - color: #fff; | ||
78 | - a { | ||
79 | - color: #fff; | ||
80 | - display: inline-block; | ||
81 | - text-decoration: none; | ||
82 | - width: 100%; | ||
83 | - box-sizing: border-box; | ||
84 | - padding: 0.5em 1em 0.5em 3em; | ||
85 | - border-bottom: 1px solid #fff; | ||
86 | - | ||
87 | - &:last-child { | ||
88 | - border-bottom: 0; | ||
89 | - } | ||
90 | - | ||
91 | - &.all { | ||
92 | - background: #444; | ||
93 | - } | ||
94 | - } | ||
95 | - | ||
96 | - a.selected { | ||
97 | - padding-left: 1em; | ||
98 | - background-color: #009eec; | ||
99 | - &:before { | ||
100 | - font-family: FontAwesome; | ||
101 | - content: "\f00c"; | ||
102 | - display: inline-block; | ||
103 | - vertical-align: middle; | ||
104 | - padding-right: 1em; | ||
105 | - } | ||
106 | - } | ||
107 | - | ||
108 | - a:hover, a.selected:hover { | ||
109 | - background-color: #337AB7; | ||
110 | - } | ||
111 | - } | ||
112 | -} |
08_mongodb/views/error.jade
deleted
100644 → 0
1 | -form.form-inline(action='/todos', method='POST', class='todos') | ||
2 | - .form | ||
3 | - .main | ||
4 | - input(type='text', id='task', name='task', placeholder='해야할 일이 무엇인가요?') | ||
5 | - .sub | ||
6 | - .form-group | ||
7 | - input.form-control(type='text', id='category', name='category', placeholder='분류') | ||
8 | - .form-group | ||
9 | - select.form-control(name='priority') | ||
10 | - option(value='1') 중요 | ||
11 | - option(value='2', selected) 보통 | ||
12 | - option(value='3') 사소 | ||
13 | - .form-group | ||
14 | - input.form-control(type='date', id='deadline', name='deadline') | ||
15 | - .actions | ||
16 | - button.btn.btn-primary.btn-lg.btn-block(type='submit') 저장 | ||
17 | - | ||
18 | -ul.tasks | ||
19 | - each task in tasks | ||
20 | - li.task(data-id='#{task._id}') | ||
21 | - span.check | ||
22 | - span.content= task.content | ||
23 | - if task.category | ||
24 | - span.label.label-default.category= task.category | ||
25 | - span.priority(class='p#{task.priority}') | ||
26 | - case task.priority | ||
27 | - when 1 | ||
28 | - | 사소 | ||
29 | - when 2 | ||
30 | - | 보통 | ||
31 | - when 3 | ||
32 | - | 중요 | ||
33 | - if task.deadline | ||
34 | - span.deadline= moment(task.deadline).format('YYYY-MM-DD') | ||
35 | - |
1 | -h3 완료여부 | ||
2 | -.section.priority | ||
3 | - a(data-value='completed').selected 완료 | ||
4 | - a(data-value='uncompleted').selected 미완료 | ||
5 | - a(data-value='all').all 전체 | ||
6 | - | ||
7 | -h3 마감 | ||
8 | -.section.deadline | ||
9 | - a(data-value='past') 과거 | ||
10 | - a(data-value='today').selected 오늘 | ||
11 | - a(data-value='week') 이번주 | ||
12 | - a(data-value='month') 이번달 | ||
13 | - a(data-value='all').all 전체 | ||
14 | - | ||
15 | -h3 중요도 | ||
16 | -.section.priority | ||
17 | - a(data-value='3').selected 중요 | ||
18 | - a(data-value='2') 보통 | ||
19 | - a(data-value='1') 사소 | ||
20 | - a(data-value='all').all 전체 | ||
21 | - | ||
22 | - | ||
23 | -h3 분류 | ||
24 | -.section.categories | ||
25 | - each category in categories | ||
26 | - a(data-value='text').selected= category | ||
27 | - a(data-value='none').selected <분류없음> | ||
28 | - a(data-value='all').all 전체 |
1 | -.navbar.navbar-inverse.navbar-fixed-top | ||
2 | - .container | ||
3 | - .navbar-header | ||
4 | - button.navbar-toggle.collapsed(type='button', data-toggle='collapse', data-target='#navbar', aria-expanded='false', aria-controls='navbar') | ||
5 | - span.sr-only Toggle navigation | ||
6 | - span.icon-bar | ||
7 | - span.icon-bar | ||
8 | - span.icon-bar | ||
9 | - a.navbar-brand(href='/') | ||
10 | - i.fa.fa-home | ||
11 | - #navbar.collapse.navbar-collapse | ||
12 | - ul.nav.navbar-nav | ||
13 | - li | ||
14 | - a(href='/todos') Todo List | ||
15 | - li | ||
16 | - a(href='/users') Users | ||
17 | - ul.nav.navbar-nav.navbar-right | ||
18 | - if (!currentUser) | ||
19 | - li | ||
20 | - a(href='/signin') Signin | ||
21 | - li | ||
22 | - a(href='/users/new') Signup | ||
23 | - else | ||
24 | - li | ||
25 | - a(href='/users/#{currentUser._id}') Profile | ||
26 | - li | ||
27 | - a(href='/signout') Signout | ||
28 | - |
08_mongodb/views/index.jade
deleted
100644 → 0
1 | -extends layout | ||
2 | - | ||
3 | -block hero-unit | ||
4 | - .jumbotron | ||
5 | - .container | ||
6 | - h1 BIGBANG-TODO | ||
7 | - | ||
8 | -block content | ||
9 | - .container | ||
10 | - .row | ||
11 | - .col-md-6 | ||
12 | - h3 서비스 목적 | ||
13 | - p 본 서비스는 웹프로그래밍 수업을 위해서 sample로 만들어보는 것입니다. | ||
14 | - .col-md-6 | ||
15 | - h3 주요 기능 | ||
16 | - ul | ||
17 | - li 사용자 관리 | ||
18 | - li 할 일 기록 | ||
19 | - li 기록 내용: 분류, 내용, 중요도, deadline | ||
20 | - li 완료된 일 체크 | ||
21 | - |
08_mongodb/views/layout.jade
deleted
100644 → 0
1 | -doctype html | ||
2 | -html(lang='ko') | ||
3 | - head | ||
4 | - block title | ||
5 | - title BBDO | ||
6 | - meta(charset='UTF-8') | ||
7 | - link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap-theme.css') | ||
8 | - link(rel='stylesheet', href='/bower_components/bootstrap/dist/css/bootstrap.css') | ||
9 | - link(rel='stylesheet', href='/bower_components/font-awesome/css/font-awesome.min.css') | ||
10 | - link(rel='stylesheet', href='/stylesheets/style.css') | ||
11 | - script(type='text/javascript', src='/bower_components/jquery/dist/jquery.js') | ||
12 | - script(type='text/javascript', src='/bower_components/bootstrap/dist/js/bootstrap.js') | ||
13 | - body | ||
14 | - block top-nav | ||
15 | - include ./includes/topnav | ||
16 | - block hero-unit | ||
17 | - if flashMessages | ||
18 | - each texts, type in flashMessages | ||
19 | - .container | ||
20 | - .alert(class='alert-#{type}') | ||
21 | - each msg in texts | ||
22 | - p= msg | ||
23 | - block content | ||
24 | - | ||
25 | - block footer | ||
26 | - include ./includes/footer |
08_mongodb/views/signin.jade
deleted
100644 → 0
1 | -extends layout | ||
2 | - | ||
3 | -block content | ||
4 | - .container | ||
5 | - form.form-signin(action='/signin', method='POST') | ||
6 | - label(for='email', class='sr-only') Email address | ||
7 | - input( | ||
8 | - type='email', id='email', name='email', class='form-control', | ||
9 | - placeholder='Email address', required, autofocus | ||
10 | - ) | ||
11 | - label(for='password', class='sr-only') Password | ||
12 | - input( | ||
13 | - type='password', id='password', name='password', class='form-control', | ||
14 | - placeholder='Password', required, autofocus | ||
15 | - ) | ||
16 | - button.btn.btn-lg.btn-primary.btn-block(type='submit') 로그인 | ||
17 | - hr | ||
18 | - a.btn.btn-default.btn-mini(href='/users/new') 회원가입 | ||
19 | - | | ||
20 | - a.btn.btn-default.btn-mini(href='/reset-password') 비밀번호 재설정 | ||
21 | - |
08_mongodb/views/todos.jade
deleted
100644 → 0
08_mongodb/views/users/edit.jade
deleted
100644 → 0
1 | -extends ../layout | ||
2 | - | ||
3 | -block content | ||
4 | - .container | ||
5 | - h1.page-header 회원정보 수정 | ||
6 | - form(action='/users/#{user._id}?_method=PUT', method='POST') | ||
7 | - .form-group | ||
8 | - label(for='name') Name | ||
9 | - input.form-control(type='text', id='name', name='name', placeholder='Your name', value=user.name) | ||
10 | - .form-group | ||
11 | - label(for='email') Email address | ||
12 | - input.form-control(type='email', id='email', name='email', placeholder='Email', value=user.email) | ||
13 | - .form-group | ||
14 | - label(for='current_password') 현재 Password | ||
15 | - input.form-control(type='password', id='current_password', name='current_password', placeholder='현재 Password') | ||
16 | - .form-group | ||
17 | - label(for='password') 변경할 Password | ||
18 | - input.form-control(type='password', id='password', name='password', placeholder='변경할 Password') | ||
19 | - .form-group | ||
20 | - label(for='password_confirmation') Password 확인 | ||
21 | - input.form-control(type='password', id='password_confirmation', name='password_confirmation', placeholder='변경할 Password 확인') | ||
22 | - div.form-actions | ||
23 | - a.btn.btn-default(href='javascript:window.history.back();') 뒤로 | ||
24 | - | | ||
25 | - button.btn.btn-primary(type='submit') 수정 |
08_mongodb/views/users/index.jade
deleted
100644 → 0
1 | -extends ../layout | ||
2 | - | ||
3 | -block content | ||
4 | - .container | ||
5 | - h1.page-header 회원 목록 | ||
6 | - | ||
7 | - table.table.table-striped.table-bordered | ||
8 | - thead | ||
9 | - tr | ||
10 | - th 이름 | ||
11 | - th 이메일 | ||
12 | - th 가입일시 | ||
13 | - th | ||
14 | - tbody | ||
15 | - each user in users | ||
16 | - tr | ||
17 | - td | ||
18 | - a(href='/users/#{user._id}')= user.name | ||
19 | - td= user.email | ||
20 | - td= moment(user.createdAt).format('YYYY-MM-DD HH:mm:ss') | ||
21 | - td | ||
22 | - a.btn.btn-xs.btn-default(href='/users/#{user._id}/edit') 수정 | ||
23 | - | | ||
24 | - a.btn.btn-xs.btn-default(href='/users/#{user._id}?_method=DELETE') 삭제 | ||
25 | - a.btn.btn-primary(href='/users/new') 사용자추가 |
08_mongodb/views/users/new.jade
deleted
100644 → 0
1 | -extends ../layout | ||
2 | - | ||
3 | -block content | ||
4 | - .container | ||
5 | - h1.page-header 회원가입 | ||
6 | - form(action='/users', method='POST') | ||
7 | - .form-group | ||
8 | - label(for='name') Name | ||
9 | - input.form-control(type='text', id='name', name='name', placeholder='Your name') | ||
10 | - .form-group | ||
11 | - label(for='email') Email address | ||
12 | - input.form-control(type='email', id='email', name='email', placeholder='Email') | ||
13 | - .form-group | ||
14 | - label(for='password') Password | ||
15 | - input.form-control(type='password', id='password', name='password', placeholder='Password') | ||
16 | - .form-group | ||
17 | - label(for='password_confirmation') Password 확인 | ||
18 | - input.form-control(type='password', id='password_confirmation', name='password_confirmation', placeholder='Password') | ||
19 | - div.form-actions | ||
20 | - a.btn.btn-default(href='javascript:window.history.back();') 뒤로 | ||
21 | - | | ||
22 | - button.btn.btn-primary(type='submit') 회원가입 |
08_mongodb/views/users/show.jade
deleted
100644 → 0
1 | -extends ../layout | ||
2 | - | ||
3 | -block content | ||
4 | - .container | ||
5 | - h1.page-header 회원 정보 | ||
6 | - | ||
7 | - ul | ||
8 | - li 이름: #{user.name} | ||
9 | - li 이메일: #{user.email} | ||
10 | - | ||
11 | - hr | ||
12 | - p | ||
13 | - a.btn.btn-default(href='/users/') 목록 | ||
14 | - | | ||
15 | - a.btn.btn-default(href='/users/#{user._id}/edit') 수정 | ||
16 | - | | ||
17 | - a.btn.btn-default(href='/users/#{user._id}?_method=DELETE') 삭제 |
File moved
File moved
File moved
File moved
File moved
File moved
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
No preview for this file type
No preview for this file type
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
This diff is collapsed. Click to expand it.
No preview for this file type
No preview for this file type
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
13_mongodb/bower_components/bourbon/index.js
0 → 100644
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
No preview for this file type
No preview for this file type
This diff is collapsed. Click to expand it.
No preview for this file type
No preview for this file type
No preview for this file type
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
13_mongodb/gulpfile.js
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/models/User.js
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/mongodbtest.sh
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/package.json
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/public/stylesheets/style.css
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/routes/index.js
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/routes/todos.js
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/routes/users.js
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/scss/signin.scss
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/scss/style.scss
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/scss/todos.scss
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/error.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/includes/footer.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/includes/todo-main.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/includes/todo-side.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/includes/topnav.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/index.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/layout.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/signin.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/todos.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/users/edit.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/users/index.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/users/new.jade
0 → 100644
This diff is collapsed. Click to expand it.
13_mongodb/views/users/show.jade
0 → 100644
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment