Skip to content

Commit e5b265e

Browse files
committed
add tagging
1 parent 56175ec commit e5b265e

9 files changed

Lines changed: 72 additions & 14 deletions

File tree

src/main.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ body {
1717
label{
1818
font-family: "Lato", sans-serif;
1919
}
20+
textarea{
21+
resize: vertical;
22+
}
2023

2124
#side-view{
2225
position:absolute;

src/modals/new-snippet-modal.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ angular.module('codexen.modals')
1111
open: open
1212
}
1313
})
14-
.controller('NewSnippetModalController', function ($modalInstance, aceModes, $log, Snippet, $rootScope){
14+
.controller('NewSnippetModalController', function ($modalInstance, aceModes, $log, Snippet, $rootScope, Tag){
1515
var vm = this
1616

1717
vm.aceModes = aceModes
@@ -22,7 +22,8 @@ angular.module('codexen.modals')
2222
description: vm.description,
2323
prefix: vm.prefix,
2424
mode: vm.mode==null?null:vm.mode.name.toLowerCase(),
25-
content: vm.content
25+
content: vm.content,
26+
tags: angular.isArray(vm.tags)?vm.tags.map(function (tag) { return {_id: tag._id, name: tag.name} }):[]
2627
}
2728

2829
Snippet.create(params)
@@ -32,6 +33,23 @@ angular.module('codexen.modals')
3233
})
3334
}
3435

36+
// vm.tags = []
37+
vm.tagCandidates = []
38+
vm.refreshTagCandidates = function(tagName) {
39+
if (tagName == null || tagName == '') return null
40+
return Tag.findByName(tagName)
41+
.success(function (data) {
42+
console.log('tags fetched!!', data)
43+
vm.tagCandidates = data.tags
44+
})
45+
}
46+
vm.transform = function (tagName) {
47+
return {
48+
_id:0,
49+
name:tagName
50+
}
51+
}
52+
3553
vm.cancel = function () {
3654
$modalInstance.dismiss()
3755
}

src/modals/new-snippet-modal.tpl.html

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
<div class="form-group">
1111
<input ng-model="vm.prefix" type="text" name="prefix" class="inline-form-control" placeholder="Prefix">
1212

13-
<ui-select ng-model="vm.mode" style="display: inline-block;" on-select="vm.log(vm.mode.name.toLowerCase())" theme="bootstrap" ng-disabled="disabled">
13+
<ui-select ng-model="vm.mode" style="display: inline-block;" on-select="vm.log(vm.mode.name.toLowerCase())" theme="bootstrap">
1414
<ui-select-match placeholder="Select Type">{{$select.selected.name}}</ui-select-match>
15-
<ui-select-choices repeat="mode in vm.aceModes | filter: {name: $select.search}">
15+
<ui-select-choices repeat="mode in vm.aceModes | filter: {name: $select.search}">
1616
<div ng-bind-html="mode.name | highlight: $select.search"></div>
1717
</ui-select-choices>
1818
</ui-select>
@@ -25,6 +25,19 @@
2525
}"
2626
ng-model="vm.content"
2727
></div>
28+
29+
<div class="form-group">
30+
<ui-select multiple tagging="vm.transform" tagging-tokens="SPACE|,|/" ng-model="vm.tags" theme="bootstrap">
31+
<ui-select-match placeholder="Write Tags">{{$item.name}}</ui-select-match>
32+
<ui-select-choices repeat="tag in vm.tagCandidates" refresh="vm.refreshTagCandidates($select.search)"
33+
refresh-delay="200">
34+
<div><span ng-bind-html="tag.name | highlight: $select.search"></span><span ng-if="tag.isTag">(new)</span></div>
35+
</ui-select-choices>
36+
</ui-select>
37+
38+
39+
</div>
40+
2841
</div>
2942

3043
<div class="modal-footer">

src/services/snippet.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
angular.module('codexen.services')
22
.factory('Snippet', function ($http, $auth, apiUrl) {
33
var findByUser = function (user) {
4-
var url = apiUrl + 'snippets'
4+
var url = apiUrl + 'snippets/search'
55

66
return $http.get(url, {
77
params: {
@@ -11,13 +11,13 @@ angular.module('codexen.services')
1111
}
1212

1313
var create = function (params) {
14-
var url = apiUrl + 'snippets'
14+
var url = apiUrl + 'snippets/create'
1515

1616
return $http.post(url, params)
1717
}
1818

1919
var show = function (id) {
20-
var url = apiUrl + 'snippets/' + id
20+
var url = apiUrl + 'snippets/id/' + id
2121

2222
return $http.get(url)
2323
}

src/services/tag.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
angular.module('codexen.services')
2+
.factory('Tag', function ($http, apiUrl) {
3+
var findByName = function (tagName) {
4+
var url = apiUrl + 'tags/search'
5+
6+
return $http.get(url, {
7+
params: {
8+
name: tagName
9+
}
10+
})
11+
}
12+
13+
return {
14+
findByName: findByName
15+
}
16+
})

src/states/home/home.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* global angular */
22
angular.module('codexen.states')
33
.controller('HomeController', function ($auth, Snippet, $scope) {
4-
4+
55

66
})

src/states/snippets/detail.tpl.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<div class="detail-header">
44
<span class="detail-header-title">
5-
<small>Title : </small>
5+
<small>Title : </small>
66
<span ng-bind="vm.snippet.title"></span></span>
77
<span class="detail-header-control pull-right">
88
<button type="button" name="button" class="btn btn-default"><i class="fa fa-share"></i></button>
@@ -18,15 +18,18 @@
1818
</div>
1919

2020
<div ng-if="vm.isLoaded" class="">
21-
<p>
22-
<span ng-repeat="tag in vm.snippet.tags" ng-bind="tag.name"></span>
21+
<p class="tags">
22+
<small><i class="fa fa-tags"></i></small> <a ng-repeat="tag in vm.snippet.tags" ng-bind="tag.name" href="#" class="label label-default"></a>
2323
</p>
2424
<label>Description</label>
2525
<p ng-bind="vm.snippet.description"></p>
2626
<label>Content</label>
2727
<div ui-ace="{
2828
readonly: true,
29-
showGutter: false
29+
showGutter: false,
30+
rendererOptions: {
31+
maxLinks: Infinity
32+
}
3033
}" ng-model="vm.snippet.content"></div>
3134
</div>
3235
</div>

src/states/snippets/list.tpl.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ <h4 ng-bind="snippet.title"></h4>
3434
</div>
3535
</div>
3636
<p ng-bind="snippet.description"></p>
37-
<p>
38-
<a ng-repeat="tag in snippet.tags" ng-bind="tag.name" href="#" class="label label-default"></a>
37+
<p class="tags">
38+
<small><i class="fa fa-tags"></i></small> <a ng-repeat="tag in snippet.tags" ng-bind="tag.name" href="#" class="label label-default"></a>
3939
</p>
4040
</li>
4141
</ul>

src/states/snippets/snippets.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,8 @@ $snippet-list-item-hover-bg: #EEE;
7575
}
7676
}
7777
}
78+
.tags{
79+
a{
80+
margin: 0 2px;
81+
}
82+
}

0 commit comments

Comments
 (0)