Commit 219f5b28 authored by Tristan Cavelier's avatar Tristan Cavelier Committed by Sebastien Robin

Adding Slickgrid to show document list.

parent 437e88f1
...@@ -54,19 +54,19 @@ $().ready(function() { ...@@ -54,19 +54,19 @@ $().ready(function() {
placeholder="File name here" />  placeholder="File name here" /> 
<button type="submit" <button type="submit"
class="btn btn-primary" class="btn btn-primary"
onclick="OfficeJS.save($('#input_fileName').attr('value'),OfficeJS.getContentOf('elrte'));"> onclick="OfficeJS.save($('#input_fileName').attr('value'));">
<i class="icon-download-alt icon-white"></i> <i class="icon-download-alt icon-white"></i>
Save Save
</button>&nbsp; </button>&nbsp;
<button type="submit" <button type="submit"
class="btn" class="btn"
onclick="OfficeJS.load($('#input_fileName'));"> onclick="OfficeJS.load($('#input_fileName').attr('value'));">
<i class="icon-upload"></i> <i class="icon-upload"></i>
Load Load
</button>&nbsp; </button>&nbsp;
<button type="submit" <button type="submit"
class="btn btn-danger" class="btn btn-danger"
onclick="OfficeJS.remove($('#input_fileName'));"> onclick="OfficeJS.remove($('#input_fileName').attr('value'));">
<i class="icon-remove icon-white"></i> <i class="icon-remove icon-white"></i>
Remove Remove
</button> </button>
......
<div class="container-fluid"> <div class="container-fluid">
<div class="row-fluid"> <div class="well">
<div class="well"> <ul class="nav nav-list">
<ul class="nav nav-list"> <li class="nav-header">Nav</li>
<li class="nav-header">Nav</li> <li>
<li> <a href="#/login"
<a href="#/login" onclick="javascript:
onclick="javascript: OfficeJS.open({app:'login'});
OfficeJS.open({app:'login'}); return false;">
return false;"> <i class="icon-ok">
<i class="icon-ok"> </i>
</i> Login
Login </a>
</a> </li>
</li> <li class="nav-header">Tools</li>
<li class="nav-header">Tools</li> <li class="texteditor">
<li class="texteditor"> <a href="#/texteditor"
<a href="#/texteditor" onclick="javascript:
onclick="javascript: OfficeJS.open({app:'textEditor'});
OfficeJS.open({app:'textEditor'}); return false;">
return false;"> <i class="icon-font"></i>
<i class="icon-font"></i> Writer
Writer </a>
</a> </li>
</li> <li class="imgeditor">
<li class="imgeditor"> <a href="#/imgeditor"
<a href="#/imgeditor" onclick="javascript:
onclick="javascript: OfficeJS.open({app:'imgEditor'});
OfficeJS.open({app:'imgEditor'}); return false;">
'page-content'); <i class="icon-pencil"></i>
return false;"> Image Editor
<i class="icon-pencil"></i> </a>
Image Editor </li>
</a> <li class="spreadsheet">
</li> <a href="#/spreadsheet"
<li class="spreadsheet"> onclick="javascript:
<a href="#/spreadsheet" OfficeJS.open({app:'speadsheet'});
onclick="javascript: return false;">
OfficeJS.open({app:'speadsheet'}); <i class="icon-signal"></i>
return false;"> Spreadsheet
<i class="icon-signal"></i> </a>
Spreadsheet </li>
</a> <li class="editpreferences">
</li> <a href="#/editpreferences"
<li id="nav_document_list_header" onclick="javascript:
style="display:none"> OfficeJS.open({app:'editpreferences'});
<a href="#/doclist" return false;">
onclick="javascript: <i class="icon-check"></i>
OfficeJS.open({app:'documentLister'}); Edit Preferences
return false;"> </a>
<!-- <i class="icon-list"></i> --> </li>
Document List <li id="nav_document_list_header"
</a> style="display:none">
<div id="nav_document_list"> <a href="#/doclist"
</div> onclick="javascript:
</li> OfficeJS.open({app:'documentLister'});
</ul> return false;">
</div> <!-- <i class="icon-list"></i> -->
Document List
</a>
<div id="nav_document_list">
</div>
</li>
</ul>
</div> </div>
</div> </div>
<article> <div class="control-group">
<div class="control-group"> <label class="control-label"
<label class="control-label" for="input_json_storage">
for="input_json_storage"> JSON Storage
JSON Storage </label>
</label> <div class="controls docs-input-sizes">
<div class="controls docs-input-sizes"> <input class="input-xlarge"
<input class="input-xlarge" value="{&quot;type&quot;:&quot;local&quot;,&quot;userName&quot;:&quot;tristan&quot;}"
value="{&quot;type&quot;:&quot;local&quot;,&quot;userName&quot;:&quot;tristan&quot;}" type="text" name="JSONstorage" id="input_json_storage"
type="text" name="JSONstorage" id="input_json_storage" placeholder="storage" />
placeholder="storage" /> <!-- value="{&quot;type&quot;:&quot;replicate&quot;,&quot;storageArray&quot;:[{&quot;type&quot;:&quot;local&quot;,&quot;userName&quot;:&quot;tristan&quot;},{&quot;type&quot;:&quot;dav&quot;,&quot;userName&quot;:&quot;tristan&quot;,&quot;password&quot;:&quot;mdp&quot;,&quot;location&quot;:&quot;http://localhost:80&quot;}]}" -->
<!-- value="{&quot;type&quot;:&quot;replicate&quot;,&quot;storageArray&quot;:[{&quot;type&quot;:&quot;local&quot;,&quot;userName&quot;:&quot;tristan&quot;},{&quot;type&quot;:&quot;dav&quot;,&quot;userName&quot;:&quot;tristan&quot;,&quot;password&quot;:&quot;mdp&quot;,&quot;location&quot;:&quot;http://localhost:80&quot;}]}" --> <!-- value="{&quot;type&quot;:&quot;dav&quot;,&quot;userName&quot;:&quot;tristan&quot;,&quot;password&quot;:&quot;mdp&quot;,&quot;location&quot;:&quot;http://localhost:80&quot;}" -->
<!-- value="{&quot;type&quot;:&quot;dav&quot;,&quot;userName&quot;:&quot;tristan&quot;,&quot;password&quot;:&quot;mdp&quot;,&quot;location&quot;:&quot;http://localhost:80&quot;}" -->
</div>
<label class="control-label"
for="JSONapplicantID">
JSON Applicant
</label>
<div class="controls docs-input-sizes">
<input class="input-xlarge"
type="text" name="JSONapplicant" id="input_json_applicant"
value="{&quot;ID&quot;:&quot;jiotests&quot;}"
placeholder="applicant" />
</div>
</div> </div>
<button type="submit" <label class="control-label"
class="btn" for="JSONapplicantID">
onclick="OfficeJS.setJio( JSON Applicant
$('#input_json_storage').attr('value'), </label>
$('#input_json_applicant').attr('value'));"> <div class="controls docs-input-sizes">
Create New JIO <input class="input-xlarge"
</button> type="text" name="JSONapplicant" id="input_json_applicant"
</article> value="{&quot;ID&quot;:&quot;jiotests&quot;}"
placeholder="applicant" />
</div>
</div>
<button type="submit"
class="btn"
onclick="OfficeJS.setJio(
$('#input_json_storage').attr('value'),
$('#input_json_applicant').attr('value'));">
Create New JIO
</button>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet"
href="lib/slickgrid/css/slick.grid.css"
type="text/css"/>
<link rel="stylesheet"
href="lib/slickgrid/css/examples.css"
type="text/css"/>
</head>
<body>
<div id="myDocumentList" style="width:100%;height:300px"></div>
<script type="text/javascript"
src="lib/jquery/jquery.js"></script>
<script type="text/javascript"
src="lib/jquery/jquery.event.drag-2.0.min.js"></script>
<script type="text/javascript" src="lib/slickgrid/js/slick.core.js"></script>
<script type="text/javascript" src="lib/slickgrid/js/slick.grid.js"></script>
<script type="text/javascript">
<!--
(function () {
var grid,
columns = [
{id:"fileName",name:"Document",field:"fileName",sortable:true},
{id:"lastModified",name:"Modified",field:"lastModified",sortable:true},
{id:"creationDate",name:"Created",field:"creationDate",sortable:true}
],
options = {
enableCellNavigation: true,
enableColumnReorder: false,
multiColumnSort: true,
forceFitColumns: true
};
$(function () {
grid = new Slick.Grid("#myDocumentList",
OfficeJS.getCurrentDocumentList(),
columns,
options);
grid.onSort.subscribe(function (e, args) {
var cols = args.sortCols;
OfficeJS.getCurrentDocumentList().
sort(function (dataRow1, dataRow2) {
var i, field, sign, value1, value2, result;
for (i = 0, l = cols.length; i < l; i++) {
field = cols[i].sortCol.field;
sign = cols[i].sortAsc ? 1 : -1;
value1 = dataRow1[field];
value2 = dataRow2[field];
result = (value1==value2?0:(value1>value2?1:-1))*sign;
if (result != 0) {
return result;
}
}
return 0;
});
grid.invalidate();
grid.render();
});
});
}());
//-->
</script>
</body>
</html>
...@@ -40,18 +40,12 @@ ...@@ -40,18 +40,12 @@
<div class="navbar"> <div class="navbar">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
<div class="row-fluid"> <ul class="nav">
<div class="span2"> <li><h1>OfficeJS</h1></li>
<h1>OfficeJS</h1> <li><a href="#">Nav</a></li>
</div> <li><a href="#/about">About</a></li>
<div class="span10"> <li><a href="#/contact">Contact</a></li>
<ul class="nav"> </ul>
<li><a href="#">Nav</a></li>
<li><a href="#/about">About</a></li>
<li><a href="#/contact">Contact</a></li>
</ul>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -17,24 +17,26 @@ ...@@ -17,24 +17,26 @@
</head> </head>
<body> <body>
<header> <div id="page-top_nav_bar"
<div id="page-top_nav_bar" gadget:property="{&quot;cacheable&quot;:&quot;1&quot;,
gadget:property="{&quot;cacheable&quot;:&quot;1&quot;, &quot;cache_id&quot;:&quot;top_nav_bar&quot;}" >
&quot;cache_id&quot;:&quot;top_nav_bar&quot;}" > </div>
</div>
</header>
<nav class="span4"> <div class="row-fluid">
<div id="page-left_nav_bar" <div class="span3">
gadget:property="{&quot;cacheable&quot;:&quot;1&quot;, <div id="page-left_nav_bar"
&quot;cache_id&quot;:&quot;left_nav_bar&quot;}" > gadget:property="{&quot;cacheable&quot;:&quot;1&quot;,
&quot;cache_id&quot;:&quot;left_nav_bar&quot;}" >
</div>
</div> </div>
</nav>
<section class="span12"> <div class="span9">
<div id="page-content"> <div class="well">
<div id="page-content">
</div>
</div>
</div> </div>
</section> </div>
<script type="text/javascript" src="js/officejs.js"></script> <script type="text/javascript" src="js/officejs.js"></script>
</body> </body>
......
...@@ -16,18 +16,22 @@ ...@@ -16,18 +16,22 @@
topnavbar:'topnavbar', topnavbar:'topnavbar',
leftnavbar:'leftnavbar', leftnavbar:'leftnavbar',
documentLister:'slickgrid', documentLister:'slickgrid',
editpreferences:'simplepreferenceeditor',
textEditor:'elrte' textEditor:'elrte'
}; };
priv.app_object = { priv.app_object = {
topnavbar: { topnavbar: {
type:'nav',
path:'component/top_nav_bar.html', path:'component/top_nav_bar.html',
gadgetid:'page-top_nav_bar' gadgetid:'page-top_nav_bar'
}, },
leftnavbar: { leftnavbar: {
type:'nav',
path:'component/left_nav_bar.html', path:'component/left_nav_bar.html',
gadgetid:'page-left_nav_bar' gadgetid:'page-left_nav_bar'
}, },
login: { login: {
type:'loader',
path:'component/login.html', path:'component/login.html',
gadgetid:'page-content', gadgetid:'page-content',
getContent: function () { getContent: function () {
...@@ -39,7 +43,14 @@ ...@@ -39,7 +43,14 @@
return JSON.stringify (tmp); return JSON.stringify (tmp);
} }
}, },
simplepreferenceeditor: {
// NOTE
type:'editor',
path:'',
// ...
},
elrte: { elrte: {
type:'editor', // means it can edit a content
path:'component/elrte.html', path:'component/elrte.html',
gadgetid:'page-content', gadgetid:'page-content',
element:'#elrte_editor', element:'#elrte_editor',
...@@ -47,17 +58,30 @@ ...@@ -47,17 +58,30 @@
$(this.element).elrte('updateSource'); $(this.element).elrte('updateSource');
return $(this.element).elrte('val'); return $(this.element).elrte('val');
}, },
setContent: function (content) {
$(this.element).elrte('val', content);
},
onload: function (param) {
if (typeof param.fileName !== 'undefined') {
setTimeout(function () {
$('#input_fileName').attr('value',param.fileName);
that.load(param.fileName);
},50);
}
}
// TODO : onunload, are you sure? leave without saving?
}, },
slickgrid: { slickgrid: {
type:'editor',
path:'component/slickgrid_document_lister.html', path:'component/slickgrid_document_lister.html',
gadgetid:'page-content', gadgetid:'page-content'
onload: function () {}
} }
}; };
priv.data_object = { priv.data_object = {
documentList:[], documentList:[],
gadget_object:{}, // contains current gadgets id with their location gadget_object:{}, // contains current gadgets id with their location
currentFile:null currentFile:null,
currentEditor:null
}; };
priv.loading_object = { priv.loading_object = {
spinstate: 0, spinstate: 0,
...@@ -104,11 +128,15 @@ ...@@ -104,11 +128,15 @@
*/ */
priv.showDocumentListInsideLeftNavBar = function () { priv.showDocumentListInsideLeftNavBar = function () {
var i, html_string = '<ul>'; var i, html_string = '<ul>';
for (i = 0; i < priv.data_object.length; i += 1) { for (i = 0; i < priv.data_object.documentList.length; i += 1) {
html_string += '<li>' + html_string += '<li>' +
'<a href="#/texteditor:' + '<a href="#/texteditor:' +
priv.data_object[i].fileName + '">' + priv.data_object.documentList[i].fileName + '"'+
priv.data_object[i].fileName + ' onclick="javascript:'+
'OfficeJS.open({app:\'textEditor\',fileName:\''+
priv.data_object.documentList[i].fileName + '\'});'+
'return false;">'+
priv.data_object.documentList[i].fileName +
'</a>' + '</a>' +
'</li>'; '</li>';
} }
...@@ -159,19 +187,31 @@ ...@@ -159,19 +187,31 @@
that.getPreference(option.app)); that.getPreference(option.app));
return null; return null;
} }
ancientapp = priv.data_object.gadget_object[realgadgetid]; if (priv.data_object.currentEditor !== realapp) {
if (ancientapp) { ancientapp = priv.data_object.gadget_object[realgadgetid];
// if there is already a gadget there, unload it if (ancientapp) {
if (typeof ancientapp.onunload !== 'undefined' && // if there is already a gadget there, unload it
!ancientapp.onunload()) { if (typeof ancientapp.onunload !== 'undefined' &&
// if onunload return false, it means that we must not !ancientapp.onunload()) {
// load a new gadget because this one is not ready to // if onunload return false, it means that we must not
// exit. // load a new gadget because this one is not ready to
return null; // exit.
return null;
}
}
priv.data_object.gadget_object[realgadgetid] = realapp;
TabbularGadget.addNewTabGadget(realpath,realgadgetid);
// set current editor
switch (realapp.type) {
case 'editor':
priv.data_object.currentEditor = realapp;
break;
default:
priv.data_object.currentEditor = null;
break;
} }
} }
priv.data_object.gadget_object[realgadgetid] = realapp; // onload call
TabbularGadget.addNewTabGadget(realpath,realgadgetid);
if (typeof realapp.onload !== 'undefined') { if (typeof realapp.onload !== 'undefined') {
return realapp.onload(option); return realapp.onload(option);
} }
...@@ -252,7 +292,7 @@ ...@@ -252,7 +292,7 @@
'maxtries':3, 'maxtries':3,
'callback':function (result) { 'callback':function (result) {
if (result.status === 'done') { if (result.status === 'done') {
priv.data_object = result.return_value; priv.data_object.documentList = result.return_value;
priv.showDocumentListInsideLeftNavBar(); priv.showDocumentListInsideLeftNavBar();
} else { } else {
console.error (result.message); console.error (result.message);
...@@ -262,13 +302,26 @@ ...@@ -262,13 +302,26 @@
}); });
}; };
that.getCurrentDocumentList = function () {
// clone document list
var array = $.extend(true,[],priv.data_object.documentList), i;
for (i = 0; i < array.length; i += 1) {
array[i].lastModified = (new Date(array[i].lastModified)).
toLocaleString();
array[i].creationDate = (new Date(array[i].creationDate)).
toLocaleString();
}
return array;
};
/** /**
* Saves the document. * Saves the document.
* @method save * @method save
* @param {string} name The document name. * @param {string} name The document name.
* @param {string} content The content of the document. * @param {string} content The content of the document.
*/ */
that.save = function (name, content) { that.save = function (name) {
var current_editor = priv.data_object.currentEditor;
if (!priv.isJioSet()) { if (!priv.isJioSet()) {
console.error ('No Jio set yet.'); console.error ('No Jio set yet.');
return; return;
...@@ -276,7 +329,7 @@ ...@@ -276,7 +329,7 @@
priv.loading_object.save(); priv.loading_object.save();
priv.jio.saveDocument({ priv.jio.saveDocument({
'fileName':name, 'fileName':name,
'fileContent':content, 'fileContent':current_editor.getContent(),
'callback':function (result) { 'callback':function (result) {
if (result.status === 'fail') { if (result.status === 'fail') {
console.error (result.message); console.error (result.message);
...@@ -293,6 +346,7 @@ ...@@ -293,6 +346,7 @@
* @param {string} name The document name. * @param {string} name The document name.
*/ */
that.load = function (name) { that.load = function (name) {
var current_editor = priv.data_object.currentEditor;
if (!priv.isJioSet()) { if (!priv.isJioSet()) {
console.error ('No Jio set yet.'); console.error ('No Jio set yet.');
return; return;
...@@ -304,9 +358,11 @@ ...@@ -304,9 +358,11 @@
'callback':function (result) { 'callback':function (result) {
if (result.status === 'fail') { if (result.status === 'fail') {
console.error (result.message); console.error (result.message);
} else {
current_editor.setContent(
result.return_value.fileContent);
} }
priv.loading_object.end_load(); priv.loading_object.end_load();
// TODO : show content somewhere
} }
}); });
}; };
......
/*!
* jquery.event.drag - v 2.0.0
* Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
* Open Source MIT License - http://threedubmedia.com/code/license
*/
;(function(f){f.fn.drag=function(b,a,d){var e=typeof b=="string"?b:"",k=f.isFunction(b)?b:f.isFunction(a)?a:null;if(e.indexOf("drag")!==0)e="drag"+e;d=(b==k?a:d)||{};return k?this.bind(e,d,k):this.trigger(e)};var i=f.event,h=i.special,c=h.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",livekey:"livedrag",add:function(b){var a=f.data(this,c.datakey),d=b.data||{};a.related+=1;if(!a.live&&b.selector){a.live=true;i.add(this,"draginit."+ c.livekey,c.delegate)}f.each(c.defaults,function(e){if(d[e]!==undefined)a[e]=d[e]})},remove:function(){f.data(this,c.datakey).related-=1},setup:function(){if(!f.data(this,c.datakey)){var b=f.extend({related:0},c.defaults);f.data(this,c.datakey,b);i.add(this,"mousedown",c.init,b);this.attachEvent&&this.attachEvent("ondragstart",c.dontstart)}},teardown:function(){if(!f.data(this,c.datakey).related){f.removeData(this,c.datakey);i.remove(this,"mousedown",c.init);i.remove(this,"draginit",c.delegate);c.textselect(true); this.detachEvent&&this.detachEvent("ondragstart",c.dontstart)}},init:function(b){var a=b.data,d;if(!(a.which>0&&b.which!=a.which))if(!f(b.target).is(a.not))if(!(a.handle&&!f(b.target).closest(a.handle,b.currentTarget).length)){a.propagates=1;a.interactions=[c.interaction(this,a)];a.target=b.target;a.pageX=b.pageX;a.pageY=b.pageY;a.dragging=null;d=c.hijack(b,"draginit",a);if(a.propagates){if((d=c.flatten(d))&&d.length){a.interactions=[];f.each(d,function(){a.interactions.push(c.interaction(this,a))})}a.propagates= a.interactions.length;a.drop!==false&&h.drop&&h.drop.handler(b,a);c.textselect(false);i.add(document,"mousemove mouseup",c.handler,a);return false}}},interaction:function(b,a){return{drag:b,callback:new c.callback,droppable:[],offset:f(b)[a.relative?"position":"offset"]()||{top:0,left:0}}},handler:function(b){var a=b.data;switch(b.type){case !a.dragging&&"mousemove":if(Math.pow(b.pageX-a.pageX,2)+Math.pow(b.pageY-a.pageY,2)<Math.pow(a.distance,2))break;b.target=a.target;c.hijack(b,"dragstart",a); if(a.propagates)a.dragging=true;case "mousemove":if(a.dragging){c.hijack(b,"drag",a);if(a.propagates){a.drop!==false&&h.drop&&h.drop.handler(b,a);break}b.type="mouseup"}case "mouseup":i.remove(document,"mousemove mouseup",c.handler);if(a.dragging){a.drop!==false&&h.drop&&h.drop.handler(b,a);c.hijack(b,"dragend",a)}c.textselect(true);if(a.click===false&&a.dragging){jQuery.event.triggered=true;setTimeout(function(){jQuery.event.triggered=false},20);a.dragging=false}break}},delegate:function(b){var a= [],d,e=f.data(this,"events")||{};f.each(e.live||[],function(k,j){if(j.preType.indexOf("drag")===0)if(d=f(b.target).closest(j.selector,b.currentTarget)[0]){i.add(d,j.origType+"."+c.livekey,j.origHandler,j.data);f.inArray(d,a)<0&&a.push(d)}});if(!a.length)return false;return f(a).bind("dragend."+c.livekey,function(){i.remove(this,"."+c.livekey)})},hijack:function(b,a,d,e,k){if(d){var j={event:b.originalEvent,type:b.type},n=a.indexOf("drop")?"drag":"drop",l,o=e||0,g,m;e=!isNaN(e)?e:d.interactions.length; b.type=a;b.originalEvent=null;d.results=[];do if(g=d.interactions[o])if(!(a!=="dragend"&&g.cancelled)){m=c.properties(b,d,g);g.results=[];f(k||g[n]||d.droppable).each(function(q,p){l=(m.target=p)?i.handle.call(p,b,m):null;if(l===false){if(n=="drag"){g.cancelled=true;d.propagates-=1}if(a=="drop")g[n][q]=null}else if(a=="dropinit")g.droppable.push(c.element(l)||p);if(a=="dragstart")g.proxy=f(c.element(l)||g.drag)[0];g.results.push(l);delete b.result;if(a!=="dropinit")return l});d.results[o]=c.flatten(g.results); if(a=="dropinit")g.droppable=c.flatten(g.droppable);a=="dragstart"&&!g.cancelled&&m.update()}while(++o<e);b.type=j.type;b.originalEvent=j.event;return c.flatten(d.results)}},properties:function(b,a,d){var e=d.callback;e.drag=d.drag;e.proxy=d.proxy||d.drag;e.startX=a.pageX;e.startY=a.pageY;e.deltaX=b.pageX-a.pageX;e.deltaY=b.pageY-a.pageY;e.originalX=d.offset.left;e.originalY=d.offset.top;e.offsetX=b.pageX-(a.pageX-e.originalX);e.offsetY=b.pageY-(a.pageY-e.originalY);e.drop=c.flatten((d.drop||[]).slice()); e.available=c.flatten((d.droppable||[]).slice());return e},element:function(b){if(b&&(b.jquery||b.nodeType==1))return b},flatten:function(b){return f.map(b,function(a){return a&&a.jquery?f.makeArray(a):a&&a.length?c.flatten(a):a})},textselect:function(b){f(document)[b?"unbind":"bind"]("selectstart",c.dontstart).attr("unselectable",b?"off":"on").css("MozUserSelect",b?"":"none")},dontstart:function(){return false},callback:function(){}};c.callback.prototype={update:function(){h.drop&&this.available.length&& f.each(this.available,function(b){h.drop.locate(this,b)})}};h.draginit=h.dragstart=h.dragend=c})(jQuery);
\ No newline at end of file
@import url('slick-default-theme.css');
#myDocumentList {
background: white;
outline: 0;
border: 1px solid gray;
}
.grid-header {
border: 1px solid gray;
border-bottom: 0;
border-top: 0;
background: url('../images/header-bg.gif') repeat-x center top;
color: black;
height: 24px;
line-height: 24px;
}
.grid-header label {
display: inline-block;
font-weight: bold;
margin: auto auto auto 6px;
}
.grid-header .ui-icon {
margin: 4px 4px auto 6px;
background-color: transparent;
border-color: transparent;
}
.grid-header .ui-icon.ui-state-hover {
background-color: white;
}
.grid-header #txtSearch {
margin: 0 4px 0 4px;
padding: 2px 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border: 1px solid silver;
}
.options-panel {
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border: 1px solid silver;
background: #f0f0f0;
padding: 4px;
margin-bottom: 20px;
width: 320px;
position: absolute;
top: 0px;
left: 650px;
}
/* Individual cell styles */
.slick-cell.task-name {
font-weight: bold;
text-align: right;
}
.slick-cell.task-percent {
text-align: right;
}
.slick-cell.cell-move-handle {
font-weight: bold;
text-align: right;
border-right: solid gray;
background: #efefef;
cursor: move;
}
.cell-move-handle:hover {
background: #b6b9bd;
}
.slick-row.selected .cell-move-handle {
background: #D5DC8D;
}
.slick-row .cell-actions {
text-align: left;
}
.slick-row.complete {
background-color: #DFD;
color: #555;
}
.percent-complete-bar {
display: inline-block;
height: 6px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
/* Slick.Editors.Text, Slick.Editors.Date */
input.editor-text {
width: 100%;
height: 100%;
border: 0;
margin: 0;
background: transparent;
outline: 0;
padding: 0;
}
.ui-datepicker-trigger {
margin-top: 2px;
padding: 0;
vertical-align: top;
}
/* Slick.Editors.PercentComplete */
input.editor-percentcomplete {
width: 100%;
height: 100%;
border: 0;
margin: 0;
background: transparent;
outline: 0;
padding: 0;
float: left;
}
.editor-percentcomplete-picker {
position: relative;
display: inline-block;
width: 16px;
height: 100%;
background: url("../images/pencil.gif") no-repeat center center;
overflow: visible;
z-index: 1000;
float: right;
}
.editor-percentcomplete-helper {
border: 0 solid gray;
position: absolute;
top: -2px;
left: -9px;
background: url("../images/editor-helper-bg.gif") no-repeat top left;
padding-left: 9px;
width: 120px;
height: 140px;
display: none;
overflow: visible;
}
.editor-percentcomplete-wrapper {
background: beige;
padding: 20px 8px;
width: 100%;
height: 98px;
border: 1px solid gray;
border-left: 0;
}
.editor-percentcomplete-buttons {
float: right;
}
.editor-percentcomplete-buttons button {
width: 80px;
}
.editor-percentcomplete-slider {
float: left;
}
.editor-percentcomplete-picker:hover .editor-percentcomplete-helper {
display: block;
}
.editor-percentcomplete-helper:hover {
display: block;
}
/* Slick.Editors.YesNoSelect */
select.editor-yesno {
width: 100%;
margin: 0;
vertical-align: middle;
}
/* Slick.Editors.Checkbox */
input.editor-checkbox {
margin: 0;
height: 100%;
padding: 0;
border: 0;
}
This diff is collapsed.
/*
IMPORTANT:
In order to preserve the uniform grid appearance, all cell styles need to have padding, margin and border sizes.
No built-in (selected, editable, highlight, flashing, invalid, loading, :focus) or user-specified CSS
classes should alter those!
*/
.slick-header-columns {
background: url('../images/header-columns-bg.gif') repeat-x center bottom;
border-bottom: 1px solid silver;
}
.slick-header-column {
background: url('../images/header-columns-bg.gif') repeat-x center bottom;
border-right: 1px solid silver;
}
.slick-header-column:hover, .slick-header-column-active {
background: white url('../images/header-columns-over-bg.gif') repeat-x center bottom;
}
.slick-headerrow {
background: #fafafa;
}
.slick-headerrow-column {
background: #fafafa;
border-bottom: 0;
height: 100%;
}
.slick-row.ui-state-active {
background: #F5F7D7;
}
.slick-row {
position: absolute;
background: white;
border: 0px;
line-height: 20px;
}
.slick-row.selected {
z-index: 10;
background: #DFE8F6;
}
.slick-cell {
padding-left: 4px;
padding-right: 4px;
}
.slick-group {
border-bottom: 2px solid silver;
}
.slick-group-toggle {
width: 9px;
height: 9px;
margin-right: 5px;
}
.slick-group-toggle.expanded {
background: url(../images/collapse.gif) no-repeat center center;
}
.slick-group-toggle.collapsed {
background: url(../images/expand.gif) no-repeat center center;
}
.slick-group-totals {
color: gray;
background: white;
}
.slick-cell.selected {
background-color: beige;
}
.slick-cell.active {
border-color: gray;
border-style: solid;
}
.slick-sortable-placeholder {
background: silver !important;
}
.slick-row[row$="1"], .slick-row[row$="3"], .slick-row[row$="5"], .slick-row[row$="7"], .slick-row[row$="9"] {
background: #fafafa;
}
.slick-row.ui-state-active {
background: #F5F7D7;
}
.slick-row.loading {
opacity: 0.5;
filter: alpha(opacity = 50);
}
.slick-cell.invalid {
border-color: red;
}
\ No newline at end of file
/*
IMPORTANT:
In order to preserve the uniform grid appearance, all cell styles need to have padding, margin and border sizes.
No built-in (selected, editable, highlight, flashing, invalid, loading, :focus) or user-specified CSS
classes should alter those!
*/
.slick-header.ui-state-default, .slick-headerrow.ui-state-default {
width: 100%;
overflow: hidden;
border-left: 0px;
}
.slick-header-columns, .slick-headerrow-columns {
width: 999999px;
position: relative;
white-space: nowrap;
cursor: default;
overflow: hidden;
}
.slick-header-column.ui-state-default {
position: relative;
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
height: 16px;
line-height: 16px;
margin: 0;
padding: 4px;
border-right: 1px solid silver;
border-left: 0px;
border-top: 0px;
border-bottom: 0px;
float: left;
}
.slick-headerrow-column.ui-state-default {
padding: 4px;
}
.slick-header-column-sorted {
font-style: italic;
}
.slick-sort-indicator {
display: inline-block;
width: 8px;
height: 5px;
margin-left: 4px;
}
.slick-sort-indicator-desc {
background: url(../images/sort-desc.gif);
}
.slick-sort-indicator-asc {
background: url(../images/sort-asc.gif);
}
.slick-resizable-handle {
position: absolute;
font-size: 0.1px;
display: block;
cursor: col-resize;
width: 4px;
right: 0px;
top: 0;
height: 100%;
}
.slick-sortable-placeholder {
background: silver;
}
.grid-canvas {
position: relative;
outline: 0;
}
.slick-row.ui-widget-content, .slick-row.ui-state-active {
position: absolute;
border: 0px;
width: 100%;
}
.slick-cell, .slick-headerrow-column {
position: absolute;
border: 1px solid transparent;
border-right: 1px dotted silver;
border-bottom-color: silver;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
vertical-align: middle;
z-index: 1;
padding: 1px 2px 2px 1px;
margin: 0;
white-space: nowrap;
cursor: default;
}
.slick-group {
}
.slick-group-toggle {
display: inline-block;
}
.slick-cell.highlighted {
background: lightskyblue;
background: rgba(0, 0, 255, 0.2);
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
transition: all 0.5s;
}
.slick-cell.flashing {
border: 1px solid red !important;
}
.slick-cell.editable {
z-index: 11;
overflow: visible;
background: white;
border-color: black;
border-style: solid;
}
.slick-cell:focus {
outline: none;
}
.slick-reorder-proxy {
display: inline-block;
background: blue;
opacity: 0.15;
filter: alpha(opacity = 15);
cursor: move;
}
.slick-reorder-guide {
display: inline-block;
height: 2px;
background: blue;
opacity: 0.7;
filter: alpha(opacity = 70);
}
.slick-selection {
z-index: 10;
position: absolute;
border: 2px dashed black;
}
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment