Skip to content

Commit 1807249

Browse files
authored
Merge pull request #1 from jcardonadcdev/jcardonadcdev/issue25-add-modules-to-nav
Jcardonadcdev/issue25 add modules to nav
2 parents 56aa60f + d7d7846 commit 1807249

File tree

6 files changed

+209
-70
lines changed

6 files changed

+209
-70
lines changed

Gruntfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ module.exports = function (grunt) {
108108
'grunt-contrib-copy',
109109
'grunt-contrib-clean',
110110
'grunt-contrib-less',
111-
'grunt-jsdoc',
111+
'grunt-jsdoc'
112112
].forEach(function (taskName) {
113113
grunt.loadNpmTasks(taskName);
114114
});

demo/sample/dateUtils.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* A utility that has methods for converting dates to different formats.
3+
* @module samples/dateUtils
4+
*/
5+
define([
6+
], function(
7+
8+
) {
9+
10+
return /** @alias module:samples/dateUtils */{
11+
12+
/**
13+
* Converts a timestamp in epoch time (milliseconds since Jan 1, 1970) to a string.
14+
* The string gets returned as a string in format "date month year hour:minute:second.
15+
* For example "13 Feb 1999 12:18:32"
16+
*
17+
* @param {number} UNIX_timestamp The date in milliseconds after Jan 1, 1970
18+
*
19+
* @returns {string}
20+
*
21+
* @static
22+
*/
23+
unixToDateTime: function (UNIX_timestamp) {
24+
var a = new Date(UNIX_timestamp);
25+
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
26+
var year = a.getFullYear();
27+
var month = months[a.getMonth()];
28+
var date = a.getDate();
29+
var hour = a.getHours();
30+
var min = a.getMinutes();
31+
var sec = a.getSeconds();
32+
var time = date + " " + month + " " + year + " " + hour + ":" + min + ":" + sec;
33+
return time;
34+
},
35+
36+
/**
37+
* Date parser that handles date string generation.
38+
* @param {Date|number|string} value The date to convert to a string. It can be a JavaScript Date object,
39+
* a unix time stamp, or a string that represents a date.
40+
* @param {string} format The desired date format from the parser. Valid examples are
41+
* * "MM/DD/YYYY HH:mm:ss" - "09/09/2000 13:02:08"
42+
* * "DDD MMM DD YYYY h:mm A" - "Tue Jan 3 2002 8:08 AM"
43+
* @returns {String} Returns a string representation of the passed in date value
44+
* following the format definition provided as the format parameter. If the value cannot
45+
* be parsed, the method returns "<value> (Not parsed)"
46+
*
47+
* @static
48+
*/
49+
getDateString: function (value, format) {
50+
//var isValid = moment(value).isValid();
51+
var isValid = true;
52+
var dateString;
53+
54+
if (isValid && value instanceof Date) {
55+
dateString = moment(value).format(format);
56+
} else if (isValid && !isNaN(value)) {
57+
dateString = moment.unix(value).format(format);
58+
} else if (isValid && typeof(value) === "string") {
59+
dateString = moment(value).format(format);
60+
} else {
61+
dateString = value + " (Not parsed)";
62+
}
63+
return dateString;
64+
}
65+
};
66+
});

less/main.less

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,4 +299,20 @@
299299
list-style-type: disc;
300300
}
301301
}
302+
303+
.class-description {
304+
ol, ul {
305+
margin-left: 25px;
306+
}
307+
308+
ol > li {
309+
list-style-type: decimal;
310+
margin-bottom: 5px;
311+
}
312+
313+
ul > li {
314+
margin-bottom: 5px;
315+
list-style-type: disc;
316+
}
317+
}
302318
}

less/navigation.less

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@
2929
}
3030
}
3131

32+
.typeHeading {
33+
font: 600 1.1em Helvetica;
34+
color: #f5f5f5;
35+
border-bottom: 1px solid #333;
36+
}
37+
3238
.search {
3339
padding: 10px 15px;
3440

publish.js

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,19 @@ function attachModuleSymbols(doclets, modules) {
200200
* @return {string} The HTML for the navigation sidebar.
201201
*/
202202
function buildNav(members) {
203-
var nav = [];
203+
var nav = {};
204204

205205
if (members.namespaces.length) {
206+
var namespaces = [];
207+
206208
_.each(members.namespaces, function (v) {
207-
nav.push({
209+
namespaces.push({
208210
type: 'namespace',
209211
longname: v.longname,
210212
name: v.name,
213+
displayName: v.name.replace(/\b(module|event):/g, ''),
214+
215+
url: helper.longnameToUrl[v.longname] || v.longname,
211216
members: find({
212217
kind: 'member',
213218
memberof: v.longname
@@ -226,14 +231,54 @@ function buildNav(members) {
226231
})
227232
});
228233
});
234+
nav.Namespaces = namespaces;
229235
}
230236

231237
if (members.classes.length) {
238+
var classes = [];
239+
232240
_.each(members.classes, function (v) {
233-
nav.push({
241+
classes.push({
234242
type: 'class',
235243
longname: v.longname,
236244
name: v.name,
245+
displayName: v.name.replace(/\b(module|event):/g, ''),
246+
247+
url: helper.longnameToUrl[v.longname] || v.longname,
248+
249+
members: find({
250+
kind: 'member',
251+
memberof: v.longname
252+
}),
253+
methods: find({
254+
kind: 'function',
255+
memberof: v.longname
256+
}),
257+
typedefs: find({
258+
kind: 'typedef',
259+
memberof: v.longname
260+
}),
261+
events: find({
262+
kind: 'event',
263+
memberof: v.longname
264+
})
265+
});
266+
});
267+
nav.Classes = classes;
268+
}
269+
270+
if (members.modules.length) {
271+
var modules = [];
272+
273+
_.each(members.modules, function(v) {
274+
modules.push({
275+
type: 'module',
276+
longname: v.longname,
277+
name: v.name,
278+
displayName: v.name.replace(/\b(module|event):/g, ''),
279+
280+
url: helper.longnameToUrl[v.longname] || v.longname,
281+
237282
members: find({
238283
kind: 'member',
239284
memberof: v.longname
@@ -252,6 +297,7 @@ function buildNav(members) {
252297
})
253298
});
254299
});
300+
nav.Modules = modules;
255301
}
256302

257303
return nav;

tmpl/navigation.tmpl

Lines changed: 71 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -9,73 +9,78 @@ var self = this;
99
</div>
1010
<ul class="list">
1111
<?js
12-
this.nav.forEach(function (item) {
12+
Object.keys(this.nav).forEach(function(key) {
1313
?>
14-
<li class="item" data-name="<?js= item.longname ?>">
15-
<span class="title">
16-
<?js= self.linkto(item.longname, item.longname) ?>
17-
<?js if (item.type === 'namespace') { ?>
18-
<span class="static">static</span>
19-
<?js } ?>
20-
</span>
21-
<ul class="members itemMembers">
22-
<?js
23-
if (item.members.length) {
24-
?>
25-
<span class="subtitle">Members</span>
26-
<?js
27-
item.members.forEach(function (v) {
28-
?>
29-
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
30-
<?js
31-
});
32-
}
33-
?>
34-
</ul>
35-
<ul class="typedefs itemMembers">
36-
<?js
37-
if (item.typedefs.length) {
38-
?>
39-
<span class="subtitle">Typedefs</span>
40-
<?js
41-
item.typedefs.forEach(function (v) {
42-
?>
43-
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
44-
<?js
45-
});
46-
}
47-
?>
48-
</ul>
49-
<ul class="methods itemMembers">
50-
<?js
51-
if (item.methods.length) {
52-
?>
53-
<span class="subtitle">Methods</span>
54-
<?js
14+
<h3 class="typeHeading"><?js= key ?></h3>
15+
<?js
16+
this.nav[key].forEach(function (item) {
17+
?>
18+
<li class="item" data-name="<?js= item.url || item.longname ?>">
19+
<span class="title">
20+
<?js= self.linkto(item.longname, item.displayName) ?>
21+
<?js if (item.type === 'namespace') { ?>
22+
<span class="static">static</span>
23+
<?js } ?>
24+
</span>
25+
<ul class="members itemMembers">
26+
<?js
27+
if (item.members.length) {
28+
?>
29+
<span class="subtitle">Members</span>
30+
<?js
31+
item.members.forEach(function (v) {
32+
?>
33+
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
34+
<?js
35+
});
36+
}
37+
?>
38+
</ul>
39+
<ul class="typedefs itemMembers">
40+
<?js
41+
if (item.typedefs.length) {
42+
?>
43+
<span class="subtitle">Typedefs</span>
44+
<?js
45+
item.typedefs.forEach(function (v) {
46+
?>
47+
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
48+
<?js
49+
});
50+
}
51+
?>
52+
</ul>
53+
<ul class="methods itemMembers">
54+
<?js
55+
if (item.methods.length) {
56+
?>
57+
<span class="subtitle">Methods</span>
58+
<?js
5559

56-
item.methods.forEach(function (v) {
57-
?>
58-
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
59-
<?js
60-
});
61-
}
62-
?>
63-
</ul>
64-
<ul class="events itemMembers">
65-
<?js
66-
if (item.events.length) {
67-
?>
68-
<span class="subtitle">Events</span>
69-
<?js
70-
item.events.forEach(function (v) {
71-
?>
72-
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
73-
<?js
74-
});
75-
}
76-
?>
77-
</ul>
78-
</li>
79-
<?js }); ?>
60+
item.methods.forEach(function (v) {
61+
?>
62+
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
63+
<?js
64+
});
65+
}
66+
?>
67+
</ul>
68+
<ul class="events itemMembers">
69+
<?js
70+
if (item.events.length) {
71+
?>
72+
<span class="subtitle">Events</span>
73+
<?js
74+
item.events.forEach(function (v) {
75+
?>
76+
<li data-name="<?js= v.longname ?>"><?js= self.linkto(v.longname, v.name) ?></li>
77+
<?js
78+
});
79+
}
80+
?>
81+
</ul>
82+
</li>
83+
<?js }); ?>
84+
<?js }.bind(this)); ?>
8085
</ul>
8186
</div>

0 commit comments

Comments
 (0)