Skip to content

Commit e05155c

Browse files
committed
stage 3
1 parent c3cbe2c commit e05155c

File tree

10 files changed

+1266
-149
lines changed

10 files changed

+1266
-149
lines changed

Diff for: Gruntfile.js

+49-4
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,41 @@ module.exports = function (grunt) {
2222
grunt.initConfig({
2323
yeoman : yeomanConfig,
2424
watch : {
25+
less: {
26+
files: ['<%= yeoman.app %>/styles/{,*/}*.less'],
27+
tasks: ['recess', 'copy:styles'],
28+
options:{
29+
nospawn: true
30+
}
31+
},
32+
styles: {
33+
files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
34+
tasks: ['copy:styles']
35+
},
2536
livereload: {
2637
files: [
2738
'<%= yeoman.app %>/{,*/}*.html',
28-
'{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
39+
// '{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css',
40+
'.tmp/styles/{,*/}*.css',
2941
'{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
3042
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
31-
],
32-
tasks: ['livereload']
43+
]
3344
}
3445
},
46+
recess: {
47+
options: {
48+
compile: true
49+
},
50+
dist: {
51+
files: [{
52+
expand: true,
53+
cwd: '<%= yeoman.app %>/styles',
54+
src: 'style.less',
55+
dest: '.tmp/styles/',
56+
ext: '.css'
57+
}]
58+
}
59+
},
3560
connect: {
3661
options : {
3762
port : 9000,
@@ -122,6 +147,12 @@ module.exports = function (grunt) {
122147
}
123148
},
124149
copy : {
150+
styles: {
151+
expand: true,
152+
cwd: '<%= yeoman.app %>/styles',
153+
dest: '.tmp/styles/',
154+
src: '{,*/}*.css'
155+
},
125156
dist: {
126157
files: [
127158
{
@@ -147,6 +178,18 @@ module.exports = function (grunt) {
147178
dest : '.tmp/templates.js'
148179
}
149180
},
181+
concurrent: {
182+
server: [
183+
'recess',
184+
'copy:styles'
185+
],
186+
test: [
187+
'copy:styles'
188+
],
189+
dist: [
190+
'copy:styles'
191+
]
192+
},
150193
concat: {
151194
options: {
152195
separator: '\n'
@@ -166,7 +209,8 @@ module.exports = function (grunt) {
166209

167210
grunt.registerTask('server', [
168211
'clean:server',
169-
'livereload-start',
212+
// 'livereload-start',
213+
'concurrent:server',
170214
'connect:livereload',
171215
'open',
172216
'watch'
@@ -180,6 +224,7 @@ module.exports = function (grunt) {
180224

181225
grunt.registerTask('build', [
182226
'clean:dist',
227+
'recess',
183228
'jshint',
184229
'ngtemplates',
185230
'concat',

Diff for: app/index.html

+5-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<meta name="viewport" content="width=device-width">
99
<!-- build:css styles/main.css -->
1010
<link rel="stylesheet" href="styles/bootstrap.css">
11-
<link rel="stylesheet" href="styles/date.css"/>
11+
<link rel="stylesheet" href="styles/style.css"/>
1212
<!-- endbuild -->
1313
</head>
1414
<body ng-app="sample">
@@ -42,12 +42,13 @@ <h5>minutes</h5>
4242
<h3>Input</h3>
4343
<h5>default</h5>
4444
<pre></pre>
45-
<input type="text" date-time ng-model="start" required="true" view="hours">
45+
<input type="text" date-time ng-model="start" required="true" view="hours" position="absolute">
4646

4747
<h3>Input with append</h3>
4848
<h5>default</h5>
4949
<pre>&lt;input type="datetime" <strong>ng-model="model" date-time</strong>&gt;&lt;/div&gt; </pre>
50-
<div class="input-append" date-time-append>
50+
<div class="input-append input-prepend" date-time-append>
51+
<span class="add-on"><i class="icon-calendar"></i></span>
5152
<input type="text" date-time ng-model="start" required="true" view="hours">
5253
<span class="add-on"><i class="icon-calendar"></i></span>
5354
</div>
@@ -56,7 +57,7 @@ <h5>default</h5>
5657
<pre>&lt;input type="datetime" <strong>ng-model="model" date-time</strong>&gt;&lt;/div&gt; </pre>
5758
<div class="input-prepend" date-time-append>
5859
<span class="add-on"><i class="icon-calendar"></i></span>
59-
<input type="text" date-time ng-model="start" required="true" view="hours">
60+
<input type="text" date-time ng-model="start" required="true" view="hours" position="absolute">
6061
</div>
6162

6263
<h5>Input format</h5>

Diff for: app/scripts/datePicker.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
Module.constant('datePickerConfig', {
77
template: 'templates/datepicker.html',
88
view: 'month',
9-
views: ['year', 'month', 'date', 'hours', 'minutes']
9+
views: ['year', 'month', 'date', 'hours', 'minutes'],
10+
step: 5
1011
});
1112

12-
function getVisibleMinutes(date) {
13+
function getVisibleMinutes(date, step) {
1314
date = new Date(date || new Date());
1415
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());
1516
var minutes = [];
16-
var step = 5;
1717
var stop = date.getTime() + 60 * 60 * 1000;
1818
while (date.getTime() < stop) {
1919
minutes.push(date);
@@ -103,7 +103,6 @@
103103
return {
104104
// this is a bug ?
105105
template:'<div ng-include="template"></div>',
106-
// replace: true,
107106
scope: {
108107
model: '=datePicker',
109108
after: '=?',
@@ -116,6 +115,8 @@
116115
scope.view = attrs.view || datePickerConfig.view;
117116
scope.now = new Date();
118117
scope.template = attrs.template || datePickerConfig.template;
118+
119+
var step = parseInt(attrs.step || datePickerConfig.step);
119120
var index;
120121

121122
if (attrs.minView) {
@@ -184,7 +185,7 @@
184185
scope.hours = getVisibleHours(date);
185186
break;
186187
case 'minutes':
187-
scope.minutes = getVisibleMinutes(date);
188+
scope.minutes = getVisibleMinutes(date, step);
188189
break;
189190
}
190191
}

Diff for: app/scripts/input.js

+30-17
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@
1515
(attrs.maxView ? 'max-view="'+attrs.maxView+'" ' : '')+
1616
(attrs.template ? 'template="'+attrs.template+'" ' : '')+
1717
(attrs.minView ? 'min-view="'+attrs.minView+'" ' : '')+
18-
'class="datetimepicker datetimepicker-dropdown-bottom-left dropdown-menu"></div>';
18+
'class="dropdown-menu"></div>';
1919
},
2020
format:'yyyy-MM-dd HH:mm',
2121
views: ['date', 'year', 'month', 'hours', 'minutes', 'month'],
22-
dismiss:false
22+
dismiss:false,
23+
position:'relative'
2324
});
2425

2526
Module.directive('dateTimeAppend',function(){
@@ -47,6 +48,8 @@
4748
var index = views.indexOf(view);
4849
var dismiss = attrs.dismiss ? $parse(attrs.dismiss)(scope) : dateTimeConfig.dismiss;
4950
var picker = null;
51+
var position = attrs.position || dateTimeConfig.position;
52+
var container = null;
5053

5154
if(index == -1){
5255
views.splice(index,1);
@@ -83,40 +86,50 @@
8386
}
8487
}
8588

86-
function dismissPicker(){
87-
if(dismiss){
88-
clear();
89-
}
90-
}
91-
9289
function clear() {
9390
if (picker) {
94-
console.log('remove',picker);
95-
window.picker = picker;
9691
picker.remove();
9792
picker = null;
9893
}
94+
if(container){
95+
container.remove();
96+
container = null;
97+
}
9998
}
10099

101100
function showPicker() {
102101
if (picker)return;
103102

104103
// create picker element
105104
picker = $compile(template)(scope);
106-
body.append(picker);
107-
108105
scope.$digest();
109-
console.log(picker[0]);
110-
window.picker = picker;
111106

112107
scope.$on('setDate', function(event){
113108
updateInput(event);
114-
dismissPicker();
109+
if(dismiss){
110+
clear()
111+
}
115112
});
116113

114+
scope.$on('$destroy',clear);
115+
117116
// move picker below input element
118-
var pos = angular.extend(element.offset(), { height: element[0].offsetHeight });
119-
picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: 'absolute'});
117+
118+
if(position=='absolute'){
119+
console.log('absolute');
120+
var pos = angular.extend(element.offset(), { height: element[0].offsetHeight });
121+
picker.css({ top: pos.top + pos.height, left: pos.left, display: 'block', position: position});
122+
body.append(picker);
123+
}else{
124+
// relative
125+
console.log('relative')
126+
// container = angular.element('<div date-picker-wrapper></div>');
127+
// element.before(container);
128+
// container.append(picker);
129+
element.before(picker);
130+
picker.css({position:'relative',top:element[0].offsetHeight, display:'block'});
131+
}
132+
120133
picker.bind('mousedown', function () {
121134
return false;
122135
});

Diff for: app/styles/date.css

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
table-layout: fixed;
2020
}
2121

22+
23+
2224
[date-picker] {
2325
z-index: 11000; /* to avoid bootstrap-modal issues */
2426
padding: 4px;

0 commit comments

Comments
 (0)