Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F35072827
app.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
12 KB
Referenced Files
None
Subscribers
None
app.js
View Options
/* -------------------------------------------------------------
Obsidian Workspaces
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Author: Dereckson, SpryMedia
Tags: Sidebar, Datatables
Dependencies: JQuery
Filaname: sb-admin.js
Created: 2014-01-24
License: BSD, Apache License 2.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* -------------------------------------------------------------
Table of contents
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:: UI features
:: Datatables
*/
/* -------------------------------------------------------------
UI features
Code from:
- metisMenu jQuery plugin
- https://github.com/IronSummitMedia/startbootstrap/pull/35
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
;(
function
(
$
,
window
,
document
,
undefined
)
{
var
pluginName
=
"metisMenu"
,
defaults
=
{
toggle
:
true
};
function
Plugin
(
element
,
options
)
{
this
.
element
=
element
;
this
.
settings
=
$
.
extend
({},
defaults
,
options
);
this
.
_defaults
=
defaults
;
this
.
_name
=
pluginName
;
this
.
init
();
}
Plugin
.
prototype
=
{
init
:
function
()
{
var
$this
=
$
(
this
.
element
),
$toggle
=
this
.
settings
.
toggle
;
$this
.
find
(
'li.active'
).
has
(
'ul'
).
children
(
'ul'
).
addClass
(
'collapse in'
);
$this
.
find
(
'li'
).
not
(
'.active'
).
has
(
'ul'
).
children
(
'ul'
).
addClass
(
'collapse'
);
$this
.
find
(
'li'
).
has
(
'ul'
).
children
(
'a'
).
on
(
'click'
,
function
(
e
)
{
e
.
preventDefault
();
$
(
this
).
parent
(
'li'
).
toggleClass
(
'active'
).
children
(
'ul'
).
collapse
(
'toggle'
);
if
(
$toggle
)
{
$
(
this
).
parent
(
'li'
).
siblings
().
removeClass
(
'active'
).
children
(
'ul.in'
).
collapse
(
'hide'
);
}
});
}
};
$
.
fn
[
pluginName
]
=
function
(
options
)
{
return
this
.
each
(
function
()
{
if
(
!
$
.
data
(
this
,
"plugin_"
+
pluginName
))
{
$
.
data
(
this
,
"plugin_"
+
pluginName
,
new
Plugin
(
this
,
options
));
}
});
};
})(
jQuery
,
window
,
document
);
$
(
function
()
{
// #side-menu
$
(
'#side-menu'
).
metisMenu
();
// .sidebar-collapse
$
(
window
).
bind
(
"load resize"
,
function
()
{
console
.
log
(
$
(
this
).
width
())
if
(
$
(
this
).
width
()
<
768
)
{
$
(
'div.sidebar-collapse'
).
addClass
(
'collapse'
)
}
else
{
$
(
'div.sidebar-collapse'
).
removeClass
(
'collapse'
)
}
})
});
/* -------------------------------------------------------------
Datatables
Tweak to Datatables code, for better Bootstrap compatibility.
Code from:
http://datatables.net/blog/Twitter_Bootstrap_2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Set the defaults for DataTables initialisation */
$
.
extend
(
true
,
$
.
fn
.
dataTable
.
defaults
,
{
"sDom"
:
"<'row'<'col-sm-6'l><'col-sm-6'f>r>"
+
"t"
+
"<'row'<'col-sm-6'i><'col-sm-6'p>>"
,
"oLanguage"
:
{
"sLengthMenu"
:
"_MENU_ records per page"
}
});
/* Default class modification */
$
.
extend
(
$
.
fn
.
dataTableExt
.
oStdClasses
,
{
"sWrapper"
:
"dataTables_wrapper form-inline"
,
"sFilterInput"
:
"form-control input-sm"
,
"sLengthSelect"
:
"form-control input-sm"
});
// In 1.10 we use the pagination renderers to draw the Bootstrap paging,
// rather than custom plug-in
if
(
$
.
fn
.
dataTable
.
Api
)
{
$
.
fn
.
dataTable
.
defaults
.
renderer
=
'bootstrap'
;
$
.
fn
.
dataTable
.
ext
.
renderer
.
pageButton
.
bootstrap
=
function
(
settings
,
host
,
idx
,
buttons
,
page
,
pages
)
{
var
api
=
new
$
.
fn
.
dataTable
.
Api
(
settings
);
var
classes
=
settings
.
oClasses
;
var
lang
=
settings
.
oLanguage
.
oPaginate
;
var
btnDisplay
,
btnClass
;
var
attach
=
function
(
container
,
buttons
)
{
var
i
,
ien
,
node
,
button
;
var
clickHandler
=
function
(
e
)
{
e
.
preventDefault
();
if
(
e
.
data
.
action
!==
'ellipsis'
)
{
api
.
page
(
e
.
data
.
action
).
draw
(
false
);
}
};
for
(
i
=
0
,
ien
=
buttons
.
length
;
i
<
ien
;
i
++
)
{
button
=
buttons
[
i
];
if
(
$
.
isArray
(
button
))
{
attach
(
container
,
button
);
}
else
{
btnDisplay
=
''
;
btnClass
=
''
;
switch
(
button
)
{
case
'ellipsis'
:
btnDisplay
=
'…'
;
btnClass
=
'disabled'
;
break
;
case
'first'
:
btnDisplay
=
lang
.
sFirst
;
btnClass
=
button
+
(
page
>
0
?
''
:
' disabled'
);
break
;
case
'previous'
:
btnDisplay
=
lang
.
sPrevious
;
btnClass
=
button
+
(
page
>
0
?
''
:
' disabled'
);
break
;
case
'next'
:
btnDisplay
=
lang
.
sNext
;
btnClass
=
button
+
(
page
<
pages
-
1
?
''
:
' disabled'
);
break
;
case
'last'
:
btnDisplay
=
lang
.
sLast
;
btnClass
=
button
+
(
page
<
pages
-
1
?
''
:
' disabled'
);
break
;
default
:
btnDisplay
=
button
+
1
;
btnClass
=
page
===
button
?
'active'
:
''
;
break
;
}
if
(
btnDisplay
)
{
node
=
$
(
'<li>'
,
{
'class'
:
classes
.
sPageButton
+
' '
+
btnClass
,
'aria-controls'
:
settings
.
sTableId
,
'tabindex'
:
settings
.
iTabIndex
,
'id'
:
idx
===
0
&&
typeof
button
===
'string'
?
settings
.
sTableId
+
'_'
+
button
:
null
})
.
append
(
$
(
'<a>'
,
{
'href'
:
'#'
})
.
html
(
btnDisplay
)
)
.
appendTo
(
container
);
settings
.
oApi
.
_fnBindAction
(
node
,
{
action
:
button
},
clickHandler
);
}
}
}
};
attach
(
$
(
host
).
empty
().
html
(
'<ul class="pagination"/>'
).
children
(
'ul'
),
buttons
);
}
}
else
{
// Integration for 1.9-
$
.
fn
.
dataTable
.
defaults
.
sPaginationType
=
'bootstrap'
;
/* API method to get paging information */
$
.
fn
.
dataTableExt
.
oApi
.
fnPagingInfo
=
function
(
oSettings
)
{
return
{
"iStart"
:
oSettings
.
_iDisplayStart
,
"iEnd"
:
oSettings
.
fnDisplayEnd
(),
"iLength"
:
oSettings
.
_iDisplayLength
,
"iTotal"
:
oSettings
.
fnRecordsTotal
(),
"iFilteredTotal"
:
oSettings
.
fnRecordsDisplay
(),
"iPage"
:
oSettings
.
_iDisplayLength
===
-
1
?
0
:
Math
.
ceil
(
oSettings
.
_iDisplayStart
/
oSettings
.
_iDisplayLength
),
"iTotalPages"
:
oSettings
.
_iDisplayLength
===
-
1
?
0
:
Math
.
ceil
(
oSettings
.
fnRecordsDisplay
()
/
oSettings
.
_iDisplayLength
)
};
};
/* Bootstrap style pagination control */
$
.
extend
(
$
.
fn
.
dataTableExt
.
oPagination
,
{
"bootstrap"
:
{
"fnInit"
:
function
(
oSettings
,
nPaging
,
fnDraw
)
{
var
oLang
=
oSettings
.
oLanguage
.
oPaginate
;
var
fnClickHandler
=
function
(
e
)
{
e
.
preventDefault
();
if
(
oSettings
.
oApi
.
_fnPageChange
(
oSettings
,
e
.
data
.
action
))
{
fnDraw
(
oSettings
);
}
};
$
(
nPaging
).
append
(
'<ul class="pagination">'
+
'<li class="prev disabled"><a href="#">← '
+
oLang
.
sPrevious
+
'</a></li>'
+
'<li class="next disabled"><a href="#">'
+
oLang
.
sNext
+
' → </a></li>'
+
'</ul>'
);
var
els
=
$
(
'a'
,
nPaging
);
$
(
els
[
0
]).
bind
(
'click.DT'
,
{
action
:
"previous"
},
fnClickHandler
);
$
(
els
[
1
]).
bind
(
'click.DT'
,
{
action
:
"next"
},
fnClickHandler
);
},
"fnUpdate"
:
function
(
oSettings
,
fnDraw
)
{
var
iListLength
=
5
;
var
oPaging
=
oSettings
.
oInstance
.
fnPagingInfo
();
var
an
=
oSettings
.
aanFeatures
.
p
;
var
i
,
ien
,
j
,
sClass
,
iStart
,
iEnd
,
iHalf
=
Math
.
floor
(
iListLength
/
2
);
if
(
oPaging
.
iTotalPages
<
iListLength
)
{
iStart
=
1
;
iEnd
=
oPaging
.
iTotalPages
;
}
else
if
(
oPaging
.
iPage
<=
iHalf
)
{
iStart
=
1
;
iEnd
=
iListLength
;
}
else
if
(
oPaging
.
iPage
>=
(
oPaging
.
iTotalPages
-
iHalf
))
{
iStart
=
oPaging
.
iTotalPages
-
iListLength
+
1
;
iEnd
=
oPaging
.
iTotalPages
;
}
else
{
iStart
=
oPaging
.
iPage
-
iHalf
+
1
;
iEnd
=
iStart
+
iListLength
-
1
;
}
for
(
i
=
0
,
ien
=
an
.
length
;
i
<
ien
;
i
++
)
{
// Remove the middle elements
$
(
'li:gt(0)'
,
an
[
i
]).
filter
(
':not(:last)'
).
remove
();
// Add the new list items and their event handlers
for
(
j
=
iStart
;
j
<=
iEnd
;
j
++
)
{
sClass
=
(
j
==
oPaging
.
iPage
+
1
)
?
'class="active"'
:
''
;
$
(
'<li '
+
sClass
+
'><a href="#">'
+
j
+
'</a></li>'
)
.
insertBefore
(
$
(
'li:last'
,
an
[
i
])[
0
])
.
bind
(
'click'
,
function
(
e
)
{
e
.
preventDefault
();
oSettings
.
_iDisplayStart
=
(
parseInt
(
$
(
'a'
,
this
).
text
(),
10
)
-
1
)
*
oPaging
.
iLength
;
fnDraw
(
oSettings
);
});
}
// Add / remove disabled classes from the static elements
if
(
oPaging
.
iPage
===
0
)
{
$
(
'li:first'
,
an
[
i
]).
addClass
(
'disabled'
);
}
else
{
$
(
'li:first'
,
an
[
i
]).
removeClass
(
'disabled'
);
}
if
(
oPaging
.
iPage
===
oPaging
.
iTotalPages
-
1
||
oPaging
.
iTotalPages
===
0
)
{
$
(
'li:last'
,
an
[
i
]).
addClass
(
'disabled'
);
}
else
{
$
(
'li:last'
,
an
[
i
]).
removeClass
(
'disabled'
);
}
}
}
}
});
}
/*
* TableTools Bootstrap compatibility
* Required TableTools 2.1+
*/
if
(
$
.
fn
.
DataTable
.
TableTools
)
{
// Set the classes that TableTools uses to something suitable for Bootstrap
$
.
extend
(
true
,
$
.
fn
.
DataTable
.
TableTools
.
classes
,
{
"container"
:
"DTTT btn-group"
,
"buttons"
:
{
"normal"
:
"btn btn-default"
,
"disabled"
:
"disabled"
},
"collection"
:
{
"container"
:
"DTTT_dropdown dropdown-menu"
,
"buttons"
:
{
"normal"
:
""
,
"disabled"
:
"disabled"
}
},
"print"
:
{
"info"
:
"DTTT_print_info modal"
},
"select"
:
{
"row"
:
"active"
}
});
// Have the collection use a bootstrap compatible dropdown
$
.
extend
(
true
,
$
.
fn
.
DataTable
.
TableTools
.
DEFAULTS
.
oTags
,
{
"collection"
:
{
"container"
:
"ul"
,
"button"
:
"li"
,
"liner"
:
"a"
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jul 8, 15:01 (56 m, 18 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3875665
Default Alt Text
app.js (12 KB)
Attached To
Mode
rOBSIDIAN Obsidian Workspaces
Attached
Detach File
Event Timeline
Log In to Comment