Skip to content

Commit fec1d38

Browse files
authored
Merge pull request #28 from cristianmusic7/master
Test case functional and cosmetic issues fixed.
2 parents 1540fbc + 499655d commit fec1d38

File tree

12 files changed

+102
-69
lines changed

12 files changed

+102
-69
lines changed

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
"screenfull": "^3.0.0",
1818
"node-uuid": "^1.4.7",
1919
"comma-separated-values": "^3.6.4",
20-
"FileSaver.js": "^0.0.2",
20+
"file-saver": "^1.3.3",
2121
"zepto": "^1.1.6",
2222
"eventemitter3": "^1.2.0",
2323
"lodash": "3.10.1",
2424
"almond": "~0.3.2",
2525
"html2canvas": "^0.4.1",
2626
"moment-timezone": "^0.5.13"
2727
}
28-
}
28+
}

example/notebook/bundle.js

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,11 @@ define([
139139
"key": "mctEntryDnd",
140140
"implementation": MCTEntryDnd,
141141
"depends": [
142-
"$rootScope","$compile","dndService","typeService"
142+
"$rootScope",
143+
"$compile",
144+
"dndService",
145+
"typeService",
146+
"notificationService"
143147
]
144148
}
145149
],
@@ -166,7 +170,22 @@ define([
166170
"dndService",
167171
"$rootScope",
168172
]
169-
},
173+
},
174+
175+
{
176+
"key": "remove-embed",
177+
"implementation": removeEmbedAction,
178+
"name": "Remove...",
179+
"cssClass": "icon-trash labeled",
180+
"description": "Remove this embed",
181+
"category": [
182+
"embed",
183+
"embed-no-snap"
184+
],
185+
"depends":[
186+
"dialogService"
187+
]
188+
},
170189
{
171190
"key": "remove-snapshot",
172191
"implementation": removeSnapshotAction,
@@ -189,20 +208,6 @@ define([
189208
"$compile"
190209
]
191210
},
192-
{
193-
"key": "remove-embed",
194-
"implementation": removeEmbedAction,
195-
"name": "Remove...",
196-
"cssClass": "icon-trash labeled",
197-
"description": "Remove this embed",
198-
"category": [
199-
"embed",
200-
"embed-no-snap"
201-
],
202-
"depends":[
203-
"dialogService"
204-
]
205-
},
206211
{
207212
"key": "notebook-new-entry",
208213
"implementation": newEntryAction,

example/notebook/res/templates/controls/embedControl.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@
3131
</div>
3232
<div class="embed-info l-flex-col">
3333
<div class="embed-title">{{objectName}}</div>
34-
<div class="embed-date">{{snapshot.modified| date:'yyyy-MM-dd hh:mm:ss'}}</div>
34+
<div class="embed-date">{{snapshot.modified| date:'yyyy-MM-dd HH:mm:ss'}}</div>
3535
</div>
3636
</div>
3737
<div ng-if="!snapToggle" class="l-flex-row nosnapshot">
3838
<div class="l-flex-row">
3939
<span ng-class="cssClass" class="abs embed-icon"></span>
4040
<div class="embed-info">
4141
<span class="embed-title">{{objectName}}</span>
42-
<span class="embed-date">{{snapshot.modified| date:'yyyy-MM-dd hh:mm:ss'}}
42+
<span class="embed-date">{{snapshot.modified| date:'yyyy-MM-dd HH:mm:ss'}}
4343
</span>
4444
</div>
4545
</div>

example/notebook/res/templates/notebook.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@
5454
<div class="entries-wrapper" ng-mouseover="handleActive()">
5555
<ul class="entries-list">
5656
<li class="entry l-flex-row" id="{{'entry_'+entry.createdOn}}" ng-if="hoursFilter(showTime,entry.createdOn)" ng-repeat="entry in model.entries | filter:entrySearch | orderBy: sortEntries track by $index" ng-init="$last && finished(model.entries)" mct-entry-dnd>
57-
<div class="entry-time">{{entry.createdOn | date:'yyyy-MM-dd hh:mm:ss'}}</div>
57+
<div class="entry-time">{{entry.createdOn | date:'yyyy-MM-dd HH:mm:ss'}}</div>
5858
<div class="entry-info">
5959
<div class="entry-text">
6060
<div class="unedited-text">
6161
<p ng-repeat="line in parseText(entry.text) track by $index">
6262
{{line}}
6363
</p>
6464
</div>
65-
<textarea ng-blur="textBlur($event,entry.createdOn)" ng-model="entry.text" placeholder="Enter text here" class="sm" rows="{{parseText(entry.text).length}}">{{entry.text}}</textarea>
65+
<textarea ng-blur="textBlur($event,entry.createdOn)" ng-focus="textFocus($event)" ng-model="entry.text" placeholder="Enter text here" class="sm" rows="{{parseText(entry.text).length}}">{{entry.text}}</textarea>
6666
</div>
6767
<!-- embeds -->
6868
<div class="embeds l-flex-row">
@@ -98,15 +98,15 @@
9898
</li>
9999
<li ng-repeat="menu in embedActions"
100100
ng-click="menu.perform()"
101-
title="{{menu.getMetadata().description}}"
102-
class="{{menu.getMetadata().cssClass}}">
103-
{{menu.getMetadata().name}}
101+
title="{{menu.name}}"
102+
class="{{menu.cssClass}}">
103+
{{menu.name}}
104104
</li>
105105
</ul>
106106
</div>
107107
</div>
108108
</div>
109-
<div class="embed-date">{{embed.id| date:'yyyy-MM-dd hh:mm:ss'}}</div>
109+
<div class="embed-date">{{embed.id| date:'yyyy-MM-dd HH:mm:ss'}}</div>
110110
</div>
111111
</div>
112112
</div>

example/notebook/src/actions/annotateSnapshot.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ define(
9696
function saveNotes(param){
9797
if(param=='ok'){
9898
painterro.save();
99+
}else{
100+
rootscope.snapshot = "annotationCancelled";
99101
}
100102
}
101103

example/notebook/src/actions/newEntryContextual.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ define(
3636
name: 'Entry',
3737
key: 'entry',
3838
control: 'textarea',
39+
required: true,
3940
"cssClass": "l-textarea-sm"
4041
},
4142
{
@@ -90,15 +91,23 @@ define(
9091
var linkService = this.linkService;
9192
var dialogService = this.dialogService;
9293
var rootScope = this.$rootScope;
94+
rootScope.newEntryText = '';
9395
// Create the overlay element and add it to the document's body
9496
this.$rootScope.selObj = domainObj;
9597
this.$rootScope.selValue = "";
96-
var element = this.$compile(SNAPSHOT_TEMPLATE)(this.$rootScope);
98+
var newScope = rootScope.$new();
99+
newScope.selObj = domainObj;
100+
newScope.selValue = "";
101+
var element = this.$compile(SNAPSHOT_TEMPLATE)(newScope);
102+
//newScope.$destroy();
97103

98104
this.$rootScope.$watch("snapshot", setSnapshot);
99105

100106
function setSnapshot(value){
101-
if(value){
107+
if(value === "annotationCancelled"){
108+
rootScope.snapshot = rootScope.lastValue;
109+
rootScope.lastValue = '';
110+
}else if(value && value !== rootScope.lastValue){
102111
var overlayModel = {
103112
title: NEW_TASK_FORM.name,
104113
message: NEW_TASK_FORM.message,
@@ -111,19 +120,16 @@ define(
111120
return overlayModel.value;
112121
}
113122

114-
if(value !== rootScope.lastValue){
115-
rootScope.currentDialog = overlayModel;
123+
rootScope.currentDialog = overlayModel;
116124

117-
dialogService.getDialogResponse(
118-
"overlay-dialog",
119-
overlayModel,
120-
resultGetter
121-
).then(addNewEntry);
122-
}
123-
125+
dialogService.getDialogResponse(
126+
"overlay-dialog",
127+
overlayModel,
128+
resultGetter
129+
).then(addNewEntry);
124130

125131
rootScope.lastValue = value;
126-
}
132+
}
127133
}
128134

129135
function addNewEntry(options){
@@ -139,12 +145,8 @@ define(
139145
if(!options.withSnapshot){
140146
options.snapshot = '';
141147
}
142-
143-
if (options.saveNotebook.getModel().composition.indexOf(options.embedObject.getId()) !== -1) {
144-
createSnap(options)
145-
}else{
146-
linkService.perform(options.embedObject, options.saveNotebook).then(createSnap(options));
147-
}
148+
149+
createSnap(options);
148150
}
149151

150152
function createSnap(options){
@@ -179,8 +181,6 @@ define(
179181
notification.info({
180182
title: "Notebook Entry created"
181183
});
182-
183-
self.$rootScope.newEntryText = '';
184184
}
185185
};
186186

example/notebook/src/actions/viewSnapshot.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,9 @@ define(
103103
'<ul>'+
104104
'<li ng-repeat="menu in embedActions"'+
105105
'ng-click="menu.perform()"'+
106-
'title="{{menu.getMetadata().description}}"'+
107-
'class="{{menu.getMetadata().cssClass}}">'+
108-
'{{menu.getMetadata().name}}'+
106+
'title="{{menu.name}}"'+
107+
'class="{{menu.cssClass}}">'+
108+
'{{menu.name}}'+
109109
'</li>'+
110110
'</ul>'+
111111
'</div>'+
@@ -115,7 +115,7 @@ define(
115115
'<div class="view-date">'+
116116
'<span class="icon-alert-rect" title="Snapshot">'+
117117
'</span> '+
118-
'SNAPSHOT {{snapDate | date:\'yyyy-MM-dd hh:mm:ss\'}}'+
118+
'SNAPSHOT {{snapDate | date:\'yyyy-MM-dd HH:mm:ss\'}}'+
119119
'</div>'+
120120
'<a class="s-button icon-pencil" title="Annotate">'+
121121
'<span class="title-label">Annotate</span>'+

example/notebook/src/controllers/notebookController.js

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ define(
5555
$scope.entrySearch = '';
5656
$scope.entryTypes = [];
5757
$scope.embedActions = [];
58+
$scope.currentEntryValue = '';
5859

5960
/*--seconds in an hour--*/
6061

@@ -126,12 +127,21 @@ define(
126127
});
127128
};
128129

130+
$scope.textFocus = function($event){
131+
if($event.currentTarget && $event.currentTarget.value){
132+
$scope.currentEntryValue = $event.currentTarget.value;
133+
}
134+
}
135+
129136
$scope.textBlur = function($event,entryId){
130137
if($event.target && $event.target.value !== ""){
131138
var elementPos = $scope.domainObject.model.entries.map(function(x) {return x.createdOn}).indexOf(+(entryId));
132-
$scope.domainObject.model.entries[elementPos].text = $event.target.value;
139+
$scope.domainObject.model.entries[elementPos].text = $event.target.value;
140+
if($scope.currentEntryValue !== $event.target.value){
141+
$scope.domainObject.model.entries[elementPos].createdOn = now();
142+
}
133143
$scope.domainObject.useCapability('mutation', function(model) {});
134-
}
144+
}
135145
}
136146

137147
$scope.finished = function(model){
@@ -182,11 +192,12 @@ define(
182192

183193

184194

185-
function actionToMenuOption(action) {
195+
$scope.actionToMenuOption = function(action) {
186196
return {
187-
key: action,
197+
key: action.getMetadata().key,
188198
name: action.getMetadata().name,
189-
cssClass: action.getMetadata().cssClass
199+
cssClass: action.getMetadata().cssClass,
200+
perform: action.perform
190201
};
191202
};
192203

@@ -204,18 +215,16 @@ define(
204215
$scope.menuActions = $scope.action ?
205216
$scope.action.getActions({key: 'window'}) :
206217
[];
207-
208-
if($scope.action){
209-
$scope.menuActions.push(actionToMenuOption($scope.action.getActions({key: 'navigate'})[0]));
210-
}
211218
};
212219

213220
// Update set of actions whenever the action capability
214221
// changes or becomes available.
215222
$scope.$watch("action", updateActions);
216223

217224
$scope.navigate = function($event,embedType){
218-
$event.preventDefault();
225+
if($event){
226+
$event.preventDefault();
227+
}
219228
$scope.getDomainObj(embedType).then(function(resp){
220229
navigationService.setNavigation(resp[embedType]);
221230
});
@@ -250,10 +259,20 @@ define(
250259

251260
/*---popups menu embeds----*/
252261

253-
function getEmbedActions(embedType){
262+
function getEmbedActions(embedType){
263+
var self = this;
254264
if(!$scope.embedActions.length){
255265
$scope.getDomainObj(embedType).then(function(resp){
256-
$scope.embedActions = $scope.action.getActions({key: 'window',selectedObject:resp[embedType]});
266+
$scope.embedActions = [];
267+
$scope.embedActions.push($scope.actionToMenuOption(
268+
$scope.action.getActions({key: 'window',selectedObject:resp[embedType]})[0]
269+
));
270+
$scope.embedActions.push({
271+
key:'navigate',
272+
name: 'Go to Original',
273+
cssClass: '',
274+
perform: function(){$scope.navigate('',embedType)}
275+
});
257276
});
258277
}
259278
};

example/notebook/src/directives/MCTSnapshot.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ define([
3030
function MCTSnapshot($rootScope,$document,exportImageService,dialogService,notificationService) {
3131
var document = $document[0];
3232

33-
function link($scope, $element) {
34-
33+
function link($scope, $element,$attrs) {
3534
var element = $element[0];
3635
var layoutContainer = element.parentElement,
3736
toggleOverlay,
@@ -50,7 +49,8 @@ define([
5049
layoutContainer.remove();
5150
}
5251
document.body.removeChild(snapshot);
53-
snapshot = undefined;
52+
snapshot = undefined;
53+
$element.remove();
5454
}
5555

5656
toggleOverlay = function () {
@@ -90,6 +90,7 @@ define([
9090
'modified':Date.now()
9191
};
9292
closeOverlay(false);
93+
scope.$destroy();
9394
};
9495

9596
}
@@ -119,6 +120,7 @@ define([
119120

120121
$scope.$on('$destroy', function () {
121122
$element.off('click', toggleOverlay);
123+
$element.remove();
122124
});
123125
}
124126

0 commit comments

Comments
 (0)