Changes for v22.0.0.OS
This commit is contained in:
@@ -48,6 +48,16 @@ CompanyStructureAdapter.method('getFormFields', function() {
|
|||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
CompanyStructureAdapter.method('postRenderForm', function(object, $tempDomObj) {
|
||||||
|
if (object === undefined
|
||||||
|
|| object === null
|
||||||
|
|| object.id === null
|
||||||
|
|| object.id === undefined || object.id === ''
|
||||||
|
) {
|
||||||
|
$tempDomObj.find('#field_heads').hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Company Graph
|
* Company Graph
|
||||||
|
|||||||
@@ -45,81 +45,81 @@ if (class_exists('\\Billing\\Admin\\Api\\BillingActionManager')) {
|
|||||||
|
|
||||||
|
|
||||||
?><div class="span9">
|
?><div class="span9">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<?php if($numOfUnpaidInvoices == 1){?>
|
<?php if($numOfUnpaidInvoices == 1){?>
|
||||||
<div class="callout callout-warning lead" style="font-size: 14px;">
|
<div class="callout callout-warning lead" style="font-size: 14px;">
|
||||||
<h4>You have a pending invoice</h4>
|
<h4>You have a pending invoice</h4>
|
||||||
<p style="font-weight: bold;">
|
<p style="font-weight: bold;">
|
||||||
You have a pending invoice. Please make you complete the payment so we can provide a better service.
|
You have a pending invoice. Please make you complete the payment so we can provide a better service.
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System#tabInvoice" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Make a Payment</a>
|
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System#tabInvoice" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Make a Payment</a>
|
||||||
</p>
|
</p>
|
||||||
|
</div>
|
||||||
|
<?php }else if($numOfUnpaidInvoices > 1){?>
|
||||||
|
<div class="callout callout-danger lead" style="font-size: 14px;">
|
||||||
|
<h4>You have <?=$numOfUnpaidInvoices?> pending invoices</h4>
|
||||||
|
<p style="font-weight: bold;">
|
||||||
|
You have <?=$numOfUnpaidInvoices?> pending invoice. None of your employees are currently allowed to login. Please make sure you complete payments to all the invoices to restore your service.
|
||||||
|
Please logout and login after completing the payment to get your service restored.
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System#tabInvoice" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Make a Payment</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<?php }?>
|
||||||
|
|
||||||
|
<?php if(\Utils\SessionUtils::getSessionObject('account_locked') == "1"){?>
|
||||||
|
<div class="callout callout-danger lead" style="font-size: 14px;">
|
||||||
|
<h4>Your Trial Has Expired</h4>
|
||||||
|
<p style="font-weight: bold;">
|
||||||
|
Your Icehrm Trial has expired. Please upgrade subscription to continue. If not upgraded your account will be deleted with in few days.
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Upgrade Subscription</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<?php }?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$moduleManagers = \Classes\BaseService::getInstance()->getModuleManagers();
|
||||||
|
$dashBoardList = array();
|
||||||
|
foreach($moduleManagers as $moduleManagerObj){
|
||||||
|
|
||||||
|
//Check if this is not an admin module
|
||||||
|
if($moduleManagerObj->getModuleType() != 'admin'){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$allowed = \Classes\BaseService::getInstance()->isModuleAllowedForUser($moduleManagerObj);
|
||||||
|
|
||||||
|
if(!$allowed){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$item = $moduleManagerObj->getDashboardItem();
|
||||||
|
if(!empty($item)) {
|
||||||
|
$index = $moduleManagerObj->getDashboardItemIndex();
|
||||||
|
$dashBoardList[$index] = $item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ksort($dashBoardList);
|
||||||
|
|
||||||
|
foreach($dashBoardList as $k=>$v){
|
||||||
|
echo \Classes\LanguageManager::translateTnrText($v);
|
||||||
|
}
|
||||||
|
?>
|
||||||
</div>
|
</div>
|
||||||
<?php }else if($numOfUnpaidInvoices > 1){?>
|
|
||||||
<div class="callout callout-danger lead" style="font-size: 14px;">
|
|
||||||
<h4>You have <?=$numOfUnpaidInvoices?> pending invoices</h4>
|
|
||||||
<p style="font-weight: bold;">
|
|
||||||
You have <?=$numOfUnpaidInvoices?> pending invoice. None of your employees are currently allowed to login. Please make sure you complete payments to all the invoices to restore your service.
|
|
||||||
Please logout and login after completing the payment to get your service restored.
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System#tabInvoice" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Make a Payment</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<?php }?>
|
|
||||||
|
|
||||||
<?php if(\Utils\SessionUtils::getSessionObject('account_locked') == "1"){?>
|
|
||||||
<div class="callout callout-danger lead" style="font-size: 14px;">
|
|
||||||
<h4>Your Trial Has Expired</h4>
|
|
||||||
<p style="font-weight: bold;">
|
|
||||||
Your Icehrm Trial has expired. Please upgrade subscription to continue. If not upgraded your account will be deleted with in few days.
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
<a href="<?=CLIENT_BASE_URL?>?g=admin&n=billing&m=admin_System" class="btn btn-success btm-xs"><i class="fa fa-checkout"></i> Upgrade Subscription</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<?php }?>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
$moduleManagers = \Classes\BaseService::getInstance()->getModuleManagers();
|
|
||||||
$dashBoardList = array();
|
|
||||||
foreach($moduleManagers as $moduleManagerObj){
|
|
||||||
|
|
||||||
//Check if this is not an admin module
|
|
||||||
if($moduleManagerObj->getModuleType() != 'admin'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$allowed = \Classes\BaseService::getInstance()->isModuleAllowedForUser($moduleManagerObj);
|
|
||||||
|
|
||||||
if(!$allowed){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$item = $moduleManagerObj->getDashboardItem();
|
|
||||||
if(!empty($item)) {
|
|
||||||
$index = $moduleManagerObj->getDashboardItemIndex();
|
|
||||||
$dashBoardList[$index] = $item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ksort($dashBoardList);
|
|
||||||
|
|
||||||
foreach($dashBoardList as $k=>$v){
|
|
||||||
echo \Classes\LanguageManager::translateTnrText($v);
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var modJsList = new Array();
|
var modJsList = new Array();
|
||||||
|
|
||||||
modJsList['tabDashboard'] = new DashboardAdapter('Dashboard','Dashboard');
|
modJsList['tabDashboard'] = new DashboardAdapter('Dashboard','Dashboard');
|
||||||
|
|
||||||
var modJs = modJsList['tabDashboard'];
|
var modJs = modJsList['tabDashboard'];
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<?php include APP_BASE_PATH.'footer.php';?>
|
<?php include APP_BASE_PATH.'footer.php';?>
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ EmployeeAdapter.method('getActionButtonsHtml', function(id) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
EmployeeAdapter.method('getHelpLink', function () {
|
EmployeeAdapter.method('getHelpLink', function () {
|
||||||
return 'http://blog.icehrm.com/docs/employees/';
|
return 'https://thilinah.gitbooks.io/icehrm-guide/content/employee-information-setup.html';
|
||||||
});
|
});
|
||||||
|
|
||||||
EmployeeAdapter.method('saveSuccessItemCallback', function(data) {
|
EmployeeAdapter.method('saveSuccessItemCallback', function(data) {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
function FieldNameAdapter(endPoint,tab,filter,orderBy) {
|
function FieldNameAdapter(endPoint,tab,filter,orderBy) {
|
||||||
this.initAdapter(endPoint,tab,filter,orderBy);
|
this.initAdapter(endPoint,tab,filter,orderBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
FieldNameAdapter.inherits(AdapterBase);
|
FieldNameAdapter.inherits(AdapterBase);
|
||||||
@@ -17,32 +17,32 @@ FieldNameAdapter.inherits(AdapterBase);
|
|||||||
|
|
||||||
FieldNameAdapter.method('getDataMapping', function() {
|
FieldNameAdapter.method('getDataMapping', function() {
|
||||||
return [
|
return [
|
||||||
"id",
|
"id",
|
||||||
"name",
|
"name",
|
||||||
"textOrig",
|
"textOrig",
|
||||||
"textMapped",
|
"textMapped",
|
||||||
"display"
|
"display"
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
FieldNameAdapter.method('getHeaders', function() {
|
FieldNameAdapter.method('getHeaders', function() {
|
||||||
return [
|
return [
|
||||||
{ "sTitle": "ID" ,"bVisible":false},
|
{ "sTitle": "ID" ,"bVisible":false},
|
||||||
{ "sTitle": "Name" },
|
{ "sTitle": "Name" },
|
||||||
{ "sTitle": "Original Text"},
|
{ "sTitle": "Original Text"},
|
||||||
{ "sTitle": "Mapped Text"},
|
{ "sTitle": "Mapped Text"},
|
||||||
{ "sTitle": "Display Status"}
|
{ "sTitle": "Display Status"}
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
FieldNameAdapter.method('getFormFields', function() {
|
FieldNameAdapter.method('getFormFields', function() {
|
||||||
return [
|
return [
|
||||||
[ "id", {"label":"ID","type":"hidden"}],
|
[ "id", {"label":"ID","type":"hidden"}],
|
||||||
[ "type", {"label":"Type","type":"placeholder","validation":""}],
|
[ "type", {"label":"Type","type":"placeholder","validation":""}],
|
||||||
[ "name", {"label":"Name","type":"placeholder","validation":""}],
|
[ "name", {"label":"Name","type":"placeholder","validation":""}],
|
||||||
[ "textOrig", {"label":"Original Text","type":"placeholder","validation":""}],
|
[ "textOrig", {"label":"Original Text","type":"placeholder","validation":""}],
|
||||||
[ "textMapped", {"label":"Mapped Text","type":"text","validation":""}],
|
[ "textMapped", {"label":"Mapped Text","type":"text","validation":""}],
|
||||||
[ "display", {"label":"Display Status","type":"select","source":[["Form","Show"],["Hidden","Hidden"]]}]
|
[ "display", {"label":"Display Status","type":"select","source":[["Form","Show"],["Hidden","Hidden"]]}]
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ FieldNameAdapter.method('getFormFields', function() {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
function CustomFieldAdapter(endPoint,tab,filter,orderBy) {
|
function CustomFieldAdapter(endPoint,tab,filter,orderBy) {
|
||||||
this.initAdapter(endPoint,tab,filter,orderBy);
|
this.initAdapter(endPoint,tab,filter,orderBy);
|
||||||
this.tableType = "";
|
this.tableType = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,41 +61,41 @@ CustomFieldAdapter.inherits(AdapterBase);
|
|||||||
|
|
||||||
CustomFieldAdapter.method('getDataMapping', function() {
|
CustomFieldAdapter.method('getDataMapping', function() {
|
||||||
return [
|
return [
|
||||||
"id",
|
"id",
|
||||||
"name",
|
"name",
|
||||||
"display",
|
"display",
|
||||||
"display_order"
|
"display_order"
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomFieldAdapter.method('getHeaders', function() {
|
CustomFieldAdapter.method('getHeaders', function() {
|
||||||
return [
|
return [
|
||||||
{ "sTitle": "ID" ,"bVisible":false},
|
{ "sTitle": "ID" ,"bVisible":false},
|
||||||
{ "sTitle": "Name" },
|
{ "sTitle": "Name" },
|
||||||
{ "sTitle": "Display Status"},
|
{ "sTitle": "Display Status"},
|
||||||
{ "sTitle": "Priority"}
|
{ "sTitle": "Priority"}
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
CustomFieldAdapter.method('getFormFields', function() {
|
CustomFieldAdapter.method('getFormFields', function() {
|
||||||
return [
|
return [
|
||||||
[ "id", {"label":"ID","type":"hidden"}],
|
[ "id", {"label":"ID","type":"hidden"}],
|
||||||
//[ "type", {"label":"Type","type":"placeholder","validation":""}],
|
//[ "type", {"label":"Type","type":"placeholder","validation":""}],
|
||||||
[ "name", {"label":"Name","type":"text","validation":""}],
|
[ "name", {"label":"Name","type":"text","validation":""}],
|
||||||
[ "display", {"label":"Display Status","type":"select","source":[["Form","Show"],["Hidden","Hidden"]]}],
|
[ "display", {"label":"Display Status","type":"select","source":[["Form","Show"],["Hidden","Hidden"]]}],
|
||||||
[ "field_type", {"label":"Field Type","type":"select","source":[["text","Text Field"],["textarea","Text Area"],["select","Select"],["select2","Select2"],["select2multi","Multi Select"],["fileupload","File Upload"],["date","Date"],["datetime","Date Time"],["time","Time"]]}],
|
[ "field_type", {"label":"Field Type","type":"select","source":[["text","Text Field"],["textarea","Text Area"],["select","Select"],["select2","Select2"],["select2multi","Multi Select"],["fileupload","File Upload"],["date","Date"],["datetime","Date Time"],["time","Time"]]}],
|
||||||
[ "field_label", {"label":"Field Label","type":"text","validation":""}],
|
[ "field_label", {"label":"Field Label","type":"text","validation":""}],
|
||||||
[ "field_validation", {"label":"Validation","type":"select","validation":"none","sort":"none","source":[["","Required"],["none","None"],["number","Number"],["numberOrEmpty","Number or Empty"],["float","Decimal"],["email","Email"],["emailOrEmpty","Email or Empty"]]}],
|
[ "field_validation", {"label":"Validation","type":"select","validation":"none","sort":"none","source":[["","Required"],["none","None"],["number","Number"],["numberOrEmpty","Number or Empty"],["float","Decimal"],["email","Email"],["emailOrEmpty","Email or Empty"]]}],
|
||||||
[ "field_options", {"label":"Field Options","type":"datagroup",
|
[ "field_options", {"label":"Field Options","type":"datagroup",
|
||||||
"form":[
|
"form":[
|
||||||
[ "label", {"label":"Label","type":"text","validation":""}],
|
[ "label", {"label":"Label","type":"text","validation":""}],
|
||||||
[ "value", {"label":"Value","type":"text","validation":"none"}]
|
[ "value", {"label":"Value","type":"text","validation":"none"}]
|
||||||
],
|
],
|
||||||
"html":'<div id="#_id_#" class="panel panel-default"><div class="panel-body">#_delete_##_edit_#<span style="color:#999;font-size:13px;font-weight:bold">#_label_#</span>:#_value_#</div></div>',
|
"html":'<div id="#_id_#" class="panel panel-default"><div class="panel-body">#_delete_##_edit_#<span style="color:#999;font-size:13px;font-weight:bold">#_label_#</span>:#_value_#</div></div>',
|
||||||
"validation":"none"
|
"validation":"none"
|
||||||
}],
|
}],
|
||||||
[ "display_order", {"label":"Priority","type":"text","validation":"number"}],
|
[ "display_order", {"label":"Priority","type":"text","validation":"number"}],
|
||||||
[ "display_section", {"label":"Display Section","type":"text","validation":""}]
|
[ "display_section", {"label":"Display Section","type":"text","validation":""}]
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Company Loans",
|
"label": "Company Loans",
|
||||||
"menu": "Admin",
|
"menu": "Admin",
|
||||||
"order": "81",
|
"order": "89",
|
||||||
"icon": "fa-shield",
|
"icon": "fa-shield",
|
||||||
"user_levels": [
|
"user_levels": [
|
||||||
"Admin"
|
"Admin"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"label": "Overtime Administration",
|
"label": "Overtime Administration",
|
||||||
"menu": "Employees",
|
"menu": "Admin",
|
||||||
"order": "94",
|
"order": "82",
|
||||||
"icon": "fa-align-center",
|
"icon": "fa-align-center",
|
||||||
"user_levels": [
|
"user_levels": [
|
||||||
"Admin",
|
"Admin",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"label": "Travel Administration",
|
"label": "Travel Requests",
|
||||||
"menu": "Employees",
|
"menu": "Employees",
|
||||||
"order": "6",
|
"order": "6",
|
||||||
"icon": "fa-plane",
|
"icon": "fa-plane",
|
||||||
|
|||||||
156
api/Base.js
156
api/Base.js
@@ -1,23 +1,23 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of Ice Framework.
|
This file is part of Ice Framework.
|
||||||
|
|
||||||
Ice Framework is free software: you can redistribute it and/or modify
|
Ice Framework is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
Ice Framework is distributed in the hope that it will be useful,
|
Ice Framework is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with Ice Framework. If not, see <http://www.gnu.org/licenses/>.
|
along with Ice Framework. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
|
|
||||||
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
|
Original work Copyright (c) 2012 [Gamonoid Media Pvt. Ltd]
|
||||||
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
|
Developer: Thilina Hasantha (thilina.hasantha[at]gmail.com / facebook.com/thilinah)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -624,12 +624,12 @@ IceHRMBase.method('createTable', function(elementId) {
|
|||||||
var html = "";
|
var html = "";
|
||||||
html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate();
|
html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate();
|
||||||
/*
|
/*
|
||||||
if(this.getShowAddNew()){
|
if(this.getShowAddNew()){
|
||||||
html = this.getTableTopButtonHtml()+'<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
html = this.getTableTopButtonHtml()+'<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
||||||
}else{
|
}else{
|
||||||
html = '<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
html = '<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
//Find current page
|
//Find current page
|
||||||
var activePage = $('#'+elementId +" .dataTables_paginate .active a").html();
|
var activePage = $('#'+elementId +" .dataTables_paginate .active a").html();
|
||||||
var start = 0;
|
var start = 0;
|
||||||
@@ -686,13 +686,13 @@ IceHRMBase.method('createTableServer', function(elementId) {
|
|||||||
|
|
||||||
var html = "";
|
var html = "";
|
||||||
html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate();
|
html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate();
|
||||||
/*
|
/*
|
||||||
if(this.getShowAddNew()){
|
if(this.getShowAddNew()){
|
||||||
html = this.getTableTopButtonHtml()+'<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
html = this.getTableTopButtonHtml()+'<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
||||||
}else{
|
}else{
|
||||||
html = '<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
html = '<div class="box-body table-responsive"><table cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped" id="grid"></table></div>';
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//Find current page
|
//Find current page
|
||||||
var activePage = $('#'+elementId +" .dataTables_paginate .active a").html();
|
var activePage = $('#'+elementId +" .dataTables_paginate .active a").html();
|
||||||
@@ -914,45 +914,60 @@ IceHRMBase.method('showMessage', function(title,message,closeCallback,closeCallb
|
|||||||
var modelId = "";
|
var modelId = "";
|
||||||
if(isPlain){
|
if(isPlain){
|
||||||
modelId = "#plainMessageModel";
|
modelId = "#plainMessageModel";
|
||||||
this.renderModel('plainMessage',title,message);
|
|
||||||
}else{
|
}else{
|
||||||
modelId = "#messageModel";
|
modelId = "#messageModel";
|
||||||
|
}
|
||||||
|
|
||||||
|
$(modelId).off();
|
||||||
|
|
||||||
|
if(isPlain){
|
||||||
|
this.renderModel('plainMessage',title,message);
|
||||||
|
}else{
|
||||||
this.renderModel('message',title,message);
|
this.renderModel('message',title,message);
|
||||||
}
|
}
|
||||||
|
|
||||||
$(modelId).unbind('hide');
|
if(closeCallback !== null && closeCallback !== undefined){
|
||||||
if(closeCallback != null && closeCallback != undefined){
|
$(modelId).modal({show:true});
|
||||||
$(modelId).on('hidden.bs.modal',function(){
|
$(modelId).on('hidden.bs.modal',function(){
|
||||||
closeCallback.apply(that,closeCallbackData);
|
closeCallback.apply(that,closeCallbackData);
|
||||||
$(modelId).unbind('hidden.bs.modal');
|
$('.modal-backdrop').remove();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(modelId).modal({
|
||||||
|
backdrop: 'static'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$(modelId).modal({
|
|
||||||
backdrop: 'static'
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
IceHRMBase.method('showDomElement', function(title,element,closeCallback,closeCallbackData, isPlain) {
|
IceHRMBase.method('showDomElement', function(title,element,closeCallback,closeCallbackData, isPlain) {
|
||||||
var that = this;
|
var that = this;
|
||||||
var modelId = "";
|
var modelId = "";
|
||||||
if(isPlain){
|
if (isPlain) {
|
||||||
modelId = "#dataMessageModel";
|
modelId = "#dataMessageModel";
|
||||||
this.renderModelFromDom('dataMessage',title,element);
|
} else{
|
||||||
}else{
|
|
||||||
modelId = "#messageModel";
|
modelId = "#messageModel";
|
||||||
this.renderModelFromDom('message',title,element);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$(modelId).unbind('hide');
|
$(modelId).unbind('hide');
|
||||||
if(closeCallback != null && closeCallback != undefined){
|
|
||||||
|
if(isPlain){
|
||||||
|
this.renderModelFromDom('dataMessage',title,element);
|
||||||
|
}else{
|
||||||
|
this.renderModelFromDom('message',title,element);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(closeCallback !== null && closeCallback !== undefined){
|
||||||
|
$(modelId).modal({show:true});
|
||||||
$(modelId).on('hidden.bs.modal',function(){
|
$(modelId).on('hidden.bs.modal',function(){
|
||||||
closeCallback.apply(that,closeCallbackData);
|
closeCallback.apply(that,closeCallbackData);
|
||||||
$(modelId).unbind('hidden.bs.modal');
|
$('.modal-backdrop').remove();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(modelId).modal({
|
||||||
|
backdrop: 'static'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$(modelId).modal({
|
|
||||||
backdrop: 'static'
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
IceHRMBase.method('confirmDelete', function() {
|
IceHRMBase.method('confirmDelete', function() {
|
||||||
@@ -1270,11 +1285,11 @@ IceHRMBase.method('showFilters', function(object) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$tempDomObj.find('.signatureField').each(function() {
|
$tempDomObj.find('.signatureField').each(function() {
|
||||||
$(this).data('signaturePad',new SignaturePad($(this)));
|
$(this).data('signaturePad',new SignaturePad($(this)));
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//var tHtml = $tempDomObj.wrap('<div>').parent().html();
|
//var tHtml = $tempDomObj.wrap('<div>').parent().html();
|
||||||
this.showDomElement("Edit",$tempDomObj,null,null,true);
|
this.showDomElement("Edit",$tempDomObj,null,null,true);
|
||||||
@@ -1290,7 +1305,7 @@ IceHRMBase.method('showFilters', function(object) {
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
if(this.filter != undefined && this.filter != null){
|
if (this.filter != undefined && this.filter != null && this.filter != '') {
|
||||||
this.fillForm(this.filter,"#"+this.getTableName()+"_filter", this.getFilters());
|
this.fillForm(this.filter,"#"+this.getTableName()+"_filter", this.getFilters());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1447,8 +1462,10 @@ IceHRMBase.method('renderForm', function(object) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(object != undefined && object != null){
|
if (object != undefined && object != null) {
|
||||||
this.fillForm(object);
|
this.fillForm(object);
|
||||||
|
} else {
|
||||||
|
this.setDefaultValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.scrollToTop();
|
this.scrollToTop();
|
||||||
@@ -1474,16 +1491,35 @@ IceHRMBase.method('renderForm', function(object) {
|
|||||||
|
|
||||||
if(object != undefined && object != null){
|
if(object != undefined && object != null){
|
||||||
this.fillForm(object,"#"+randomFormId);
|
this.fillForm(object,"#"+randomFormId);
|
||||||
|
} else {
|
||||||
|
this.setDefaultValues("#"+randomFormId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.postRenderForm(object,$tempDomObj);
|
this.postRenderForm(object,$tempDomObj);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
IceHRMBase.method('setDefaultValues', function(formId, fields) {
|
||||||
|
if(fields == null || fields == undefined){
|
||||||
|
fields = this.getFormFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(formId == null || formId == undefined || formId == ""){
|
||||||
|
formId = "#"+this.getTableName()+'Form';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for(var i=0;i<fields.length;i++) {
|
||||||
|
if(fields[i][1].type !== 'text' && fields[i][1].type !== 'textarea') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fields[i][1].default !== undefined && fields[i][1].default !== null) {
|
||||||
|
$(formId + ' #' + fields[i][0]).val(fields[i][1].default);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
IceHRMBase.method('retriveItemsAfterSave', function() {
|
IceHRMBase.method('retriveItemsAfterSave', function() {
|
||||||
return true;
|
return true;
|
||||||
@@ -1636,17 +1672,19 @@ IceHRMBase.method('showDataGroup', function(field, object) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
$tempDomObj.find('.signatureField').each(function() {
|
$tempDomObj.find('.signatureField').each(function() {
|
||||||
$(this).data('signaturePad',new SignaturePad($(this)));
|
$(this).data('signaturePad',new SignaturePad($(this)));
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
||||||
this.currentDataGroupField = field;
|
this.currentDataGroupField = field;
|
||||||
this.showDomElement("Add "+field[1]['label'],$tempDomObj,null,null,true);
|
this.showDomElement("Add "+field[1]['label'],$tempDomObj,null,null,true);
|
||||||
|
|
||||||
if(object != undefined && object != null){
|
if (object != undefined && object != null) {
|
||||||
this.fillForm(object,"#"+this.getTableName()+"_field_"+field[0], field[1]['form']);
|
this.fillForm(object,"#"+this.getTableName()+"_field_"+field[0], field[1]['form']);
|
||||||
|
} else {
|
||||||
|
this.setDefaultValues("#"+this.getTableName()+"_field_"+field[0], field[1]['form']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
"homepage": "",
|
"homepage": "",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"simplemde": "^1.11.2",
|
"simplemde": "^1.11.2",
|
||||||
"tinymce": "^4.5.5"
|
"tinymce": "^4.5.5",
|
||||||
|
"d3-timeline": "^0.0.5",
|
||||||
|
"vis": "^4.21.0",
|
||||||
|
"handlebars": "^4.0.11",
|
||||||
|
"material-design-icons": "^3.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ if(!defined('HOME_LINK_OTHERS')){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Version
|
//Version
|
||||||
define('VERSION', '21.0.0.PRO');
|
define('VERSION', '22.0.0.OS');
|
||||||
define('CACHE_VALUE', '21.0.0.OS');
|
define('CACHE_VALUE', '22.0.0.OS');
|
||||||
define('VERSION_NUMBER', '2100');
|
define('VERSION_NUMBER', '2200');
|
||||||
define('VERSION_DATE', '02/02/2018');
|
define('VERSION_DATE', '28/04/2018');
|
||||||
|
|
||||||
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
if(!defined('CONTACT_EMAIL')){define('CONTACT_EMAIL','icehrm@gamonoid.com');}
|
||||||
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
if(!defined('KEY_PREFIX')){define('KEY_PREFIX','IceHrm');}
|
||||||
|
|||||||
@@ -734,3 +734,22 @@ table.dataTable{
|
|||||||
.ice-form-error-control {
|
.ice-form-error-control {
|
||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ice-warning {
|
||||||
|
color: #856404;
|
||||||
|
background-color: #fff3cd;
|
||||||
|
margin-left: -2px;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vis-time-axis.vis-foreground {
|
||||||
|
height: 46px;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: #F0F0EE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vis-item {
|
||||||
|
box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24);
|
||||||
|
border: none;
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -52,8 +52,8 @@
|
|||||||
|
|
||||||
<?php
|
<?php
|
||||||
$notificationTemplates = array();
|
$notificationTemplates = array();
|
||||||
$notificationTemplates['notification'] = file_get_contents(BASE_URL."/templates/notifications/notification.html");
|
$notificationTemplates['notification'] = file_get_contents(APP_BASE_PATH."/templates/notifications/notification.html");
|
||||||
$notificationTemplates['notifications'] = file_get_contents(BASE_URL."/templates/notifications/notifications.html");
|
$notificationTemplates['notifications'] = file_get_contents(APP_BASE_PATH."/templates/notifications/notifications.html");
|
||||||
?>
|
?>
|
||||||
notificationManager.setTemplates(<?=json_encode($notificationTemplates)?>);
|
notificationManager.setTemplates(<?=json_encode($notificationTemplates)?>);
|
||||||
|
|
||||||
|
|||||||
27
header.php
27
header.php
@@ -91,6 +91,15 @@ include('configureUIManager.php');
|
|||||||
?><!DOCTYPE html>
|
?><!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<!-- Google Analytics -->
|
||||||
|
<script>
|
||||||
|
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
||||||
|
ga('create', '<?=\Classes\BaseService::getInstance()->getGAKey()?>', 'auto');
|
||||||
|
ga('send', 'pageview');
|
||||||
|
</script>
|
||||||
|
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
||||||
|
<!-- End Google Analytics -->
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title><?=$companyName?></title>
|
<title><?=$companyName?></title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@@ -101,6 +110,7 @@ include('configureUIManager.php');
|
|||||||
<link href="<?=BASE_URL?>themecss/bootstrap.min.css" rel="stylesheet">
|
<link href="<?=BASE_URL?>themecss/bootstrap.min.css" rel="stylesheet">
|
||||||
<link href="<?=BASE_URL?>themecss/font-awesome.min.css" rel="stylesheet">
|
<link href="<?=BASE_URL?>themecss/font-awesome.min.css" rel="stylesheet">
|
||||||
<link href="<?=BASE_URL?>themecss/ionicons.min.css" rel="stylesheet">
|
<link href="<?=BASE_URL?>themecss/ionicons.min.css" rel="stylesheet">
|
||||||
|
<link href="<?=BASE_URL?>web/bower_components/material-design-icons/iconfont/material-icons.css" rel="stylesheet">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -177,17 +187,6 @@ include('configureUIManager.php');
|
|||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="skin-blue" data-turbolinks="false">
|
<body class="skin-blue" data-turbolinks="false">
|
||||||
<script>
|
|
||||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
||||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
||||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
||||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
||||||
|
|
||||||
ga('create', '<?=\Classes\BaseService::getInstance()->getGAKey()?>', 'auto');
|
|
||||||
ga('send','pageview');
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<header id="delegationDiv" class="header">
|
<header id="delegationDiv" class="header">
|
||||||
<a href="<?=$homeLink?>" class="logo" style="overflow: hidden;font-family: 'Source Sans Pro', sans-serif;">
|
<a href="<?=$homeLink?>" class="logo" style="overflow: hidden;font-family: 'Source Sans Pro', sans-serif;">
|
||||||
<?=\Classes\LanguageManager::tran('Home')?>
|
<?=\Classes\LanguageManager::tran('Home')?>
|
||||||
@@ -329,10 +328,12 @@ include('configureUIManager.php');
|
|||||||
<h1>
|
<h1>
|
||||||
<?=\Classes\LanguageManager::tran($meta['label'])?>
|
<?=\Classes\LanguageManager::tran($meta['label'])?>
|
||||||
<small>
|
<small>
|
||||||
<?=\Classes\LanguageManager::tran($meta['menu'])?>
|
<?=\Classes\LanguageManager::tran($meta['menu'])?>  
|
||||||
<a href="#" class="helpLink" target="_blank" style="display:none;color:#fff;"><i class="glyphicon glyphicon-question-sign"></i></a>
|
|
||||||
</small>
|
</small>
|
||||||
</h1>
|
</h1>
|
||||||
|
<a href="#" class="helpLink" target="_blank"
|
||||||
|
style="display:none;color:#f4f4f4;font-size: 2.3rem;float: right;margin-top: -30px;text-shadow: 1px 1px 2px black, 0 0 25px #367fa9, 0 0 5px #367fa9;">
|
||||||
|
<i class="fa fa-question-circle"></i></a>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Main content -->
|
<!-- Main content -->
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ $jsVersion = defined('CACHE_VALUE')?CACHE_VALUE:"v".VERSION;
|
|||||||
$cssVersion = defined('CACHE_VALUE')?CACHE_VALUE:"v".VERSION;
|
$cssVersion = defined('CACHE_VALUE')?CACHE_VALUE:"v".VERSION;
|
||||||
|
|
||||||
if(!isset($_REQUEST['content']) || $_REQUEST['content'] != 'HTML'){
|
if(!isset($_REQUEST['content']) || $_REQUEST['content'] != 'HTML'){
|
||||||
$_REQUEST = \Utils\InputCleaner::cleanParameters($_REQUEST);
|
$_REQUEST = \Utils\InputCleaner::cleanParameters($_REQUEST);
|
||||||
$_GET = \Utils\InputCleaner::cleanParameters($_GET);
|
$_GET = \Utils\InputCleaner::cleanParameters($_GET);
|
||||||
$_POST = \Utils\InputCleaner::cleanParameters($_POST);
|
$_POST = \Utils\InputCleaner::cleanParameters($_POST);
|
||||||
}
|
}
|
||||||
|
|
||||||
date_default_timezone_set('Asia/Colombo');
|
date_default_timezone_set('Asia/Colombo');
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
$migrationList = [];
|
$migrationList = [];
|
||||||
|
$migrationList[] = 'v20180417_210501_update_menu_names';
|
||||||
|
$migrationList[] = 'v20180325_210101_delete_leave_group_employee';
|
||||||
|
$migrationList[] = 'v20180317_210200_leave_rule_experience';
|
||||||
$migrationList[] = 'v20180305_210100_drop_si_hi_languages';
|
$migrationList[] = 'v20180305_210100_drop_si_hi_languages';
|
||||||
$migrationList[] = 'v20171126_200303_swift_mail';
|
$migrationList[] = 'v20171126_200303_swift_mail';
|
||||||
$migrationList[] = 'v20171003_200302_payroll_meta_export';
|
$migrationList[] = 'v20171003_200302_payroll_meta_export';
|
||||||
|
|||||||
26
migrations/v20180317_210200_leave_rule_experience.php
Normal file
26
migrations/v20180317_210200_leave_rule_experience.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Classes\Migration;
|
||||||
|
|
||||||
|
class v20180317_210200_leave_rule_experience extends AbstractMigration {
|
||||||
|
|
||||||
|
public function up(){
|
||||||
|
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
alter table LeaveRules add column `exp_days` int(11) NULL;
|
||||||
|
SQL;
|
||||||
|
return $this->executeQuery($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(){
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
alter table LeaveRules drop column `exp_days`;
|
||||||
|
SQL;
|
||||||
|
|
||||||
|
return $this->executeQuery($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
31
migrations/v20180325_210101_delete_leave_group_employee.php
Normal file
31
migrations/v20180325_210101_delete_leave_group_employee.php
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
namespace Classes\Migration;
|
||||||
|
|
||||||
|
class v20180325_210101_delete_leave_group_employee extends AbstractMigration{
|
||||||
|
|
||||||
|
public function up(){
|
||||||
|
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
alter table LeaveGroupEmployees drop FOREIGN KEY `Fk_LeaveGroupEmployees_Employee`;
|
||||||
|
SQL;
|
||||||
|
$this->executeQuery($sql);
|
||||||
|
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
alter table LeaveGroupEmployees drop index `LeaveGroupEmployees_employee`;
|
||||||
|
SQL;
|
||||||
|
$this->executeQuery($sql);
|
||||||
|
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
alter table LeaveGroupEmployees add CONSTRAINT `Fk_LeaveGroupEmployees_Employee` FOREIGN KEY (`employee`) REFERENCES `Employees` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
SQL;
|
||||||
|
return $this->executeQuery($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(){
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
alter table LeaveGroupEmployees add UNIQUE KEY `LeaveGroupEmployees_employee` (`employee`);
|
||||||
|
SQL;
|
||||||
|
return $this->executeQuery($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
19
migrations/v20180417_210501_update_menu_names.php
Normal file
19
migrations/v20180417_210501_update_menu_names.php
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
namespace Classes\Migration;
|
||||||
|
|
||||||
|
class v20180417_210501_update_menu_names extends AbstractMigration{
|
||||||
|
|
||||||
|
public function up(){
|
||||||
|
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
Update Settings set value = '1' where name = 'System: Reset Module Names';
|
||||||
|
SQL;
|
||||||
|
return $this->executeQuery($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(){
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -34,9 +34,9 @@ abstract class ApproveAdminActionManager extends ApproveCommonActionManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if($this->user->user_level != 'Admin' && $this->user->user_level != 'Manager'){
|
if($this->user->user_level != 'Admin' && $this->user->user_level != 'Manager'){
|
||||||
return new IceResponse(IceResponse::ERROR,"Only an admin or manager can do this");
|
return new IceResponse(IceResponse::ERROR,"Only an admin or manager can do this");
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
//Check if this needs to be multi-approved
|
//Check if this needs to be multi-approved
|
||||||
$apStatus = 0;
|
$apStatus = 0;
|
||||||
|
|||||||
@@ -799,6 +799,7 @@ class BaseService
|
|||||||
$ele = new $nsTable();
|
$ele = new $nsTable();
|
||||||
|
|
||||||
$ele->Load('id = ?', array($id));
|
$ele->Load('id = ?', array($id));
|
||||||
|
|
||||||
if (empty($ele->id) || $ele->id !== $id) {
|
if (empty($ele->id) || $ele->id !== $id) {
|
||||||
return new IceResponse(
|
return new IceResponse(
|
||||||
IceResponse::ERROR,
|
IceResponse::ERROR,
|
||||||
@@ -806,6 +807,10 @@ class BaseService
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$preDeleteResponse = $ele->executePreDeleteActions($ele);
|
||||||
|
if ($preDeleteResponse->getStatus() !== IceResponse::SUCCESS) {
|
||||||
|
return $preDeleteResponse;
|
||||||
|
}
|
||||||
|
|
||||||
$this->checkSecureAccess("delete", $ele);
|
$this->checkSecureAccess("delete", $ele);
|
||||||
|
|
||||||
@@ -1029,7 +1034,6 @@ class BaseService
|
|||||||
|
|
||||||
public function setCurrentAdminProfile($profileId)
|
public function setCurrentAdminProfile($profileId)
|
||||||
{
|
{
|
||||||
|
|
||||||
if ($profileId == "-1") {
|
if ($profileId == "-1") {
|
||||||
SessionUtils::saveSessionObject('admin_current_profile', null);
|
SessionUtils::saveSessionObject('admin_current_profile', null);
|
||||||
return;
|
return;
|
||||||
@@ -1037,25 +1041,12 @@ class BaseService
|
|||||||
|
|
||||||
if ($this->currentUser->user_level == 'Admin') {
|
if ($this->currentUser->user_level == 'Admin') {
|
||||||
SessionUtils::saveSessionObject('admin_current_profile', $profileId);
|
SessionUtils::saveSessionObject('admin_current_profile', $profileId);
|
||||||
} elseif ($this->currentUser->user_level == 'Manager') {
|
} elseif ($this->currentUser->user_level == 'Manager'
|
||||||
$signInMappingField = SIGN_IN_ELEMENT_MAPPING_FIELD_NAME;
|
&& $this->canManageEmployee($profileId)
|
||||||
$signInMappingFieldTable = ucfirst($signInMappingField);
|
) {
|
||||||
$subordinate = new $signInMappingFieldTable();
|
|
||||||
$signInMappingField = SIGN_IN_ELEMENT_MAPPING_FIELD_NAME;
|
|
||||||
$subordinates = $subordinate->Find("supervisor = ?", array($this->currentUser->$signInMappingField));
|
|
||||||
$subFound = false;
|
|
||||||
foreach ($subordinates as $sub) {
|
|
||||||
if ($sub->id == $profileId) {
|
|
||||||
$subFound = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$subFound) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SessionUtils::saveSessionObject('admin_current_profile', $profileId);
|
SessionUtils::saveSessionObject('admin_current_profile', $profileId);
|
||||||
|
} else {
|
||||||
|
SessionUtils::saveSessionObject('admin_current_profile', null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1595,4 +1586,63 @@ END;
|
|||||||
}
|
}
|
||||||
return '\\Model\\'.$class;
|
return '\\Model\\'.$class;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $profileId
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function canManageEmployee($profileId)
|
||||||
|
{
|
||||||
|
$signInMappingField = SIGN_IN_ELEMENT_MAPPING_FIELD_NAME;
|
||||||
|
$signInMappingFieldTable = $this->getFullQualifiedModelClassName(ucfirst($signInMappingField));
|
||||||
|
$subordinate = new $signInMappingFieldTable();
|
||||||
|
|
||||||
|
$subordinates = $subordinate->Find("supervisor = ?", array($this->currentUser->$signInMappingField));
|
||||||
|
$subFound = false;
|
||||||
|
foreach ($subordinates as $sub) {
|
||||||
|
if ($sub->id == $profileId) {
|
||||||
|
$subFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$departmentHeadFound = false;
|
||||||
|
$subordinate = new $signInMappingFieldTable();
|
||||||
|
$subordinate->Load('id = ?', array($profileId));
|
||||||
|
if (SettingsManager::getInstance()->getSetting('System: Company Structure Managers Enabled') == 1
|
||||||
|
&& CompanyStructure::isHeadOfCompanyStructure(
|
||||||
|
$subordinate->department,
|
||||||
|
$this->currentUser->$signInMappingField
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$departmentHeadFound = true;
|
||||||
|
} elseif (SettingsManager::getInstance()->getSetting(
|
||||||
|
'System: Child Company Structure Managers Enabled'
|
||||||
|
) == '1'
|
||||||
|
) {
|
||||||
|
$companyStructure = new CompanyStructure();
|
||||||
|
$companyStructure->Load('id = ?', array($subordinate->department));
|
||||||
|
do {
|
||||||
|
if (CompanyStructure::isHeadOfCompanyStructure(
|
||||||
|
$companyStructure->id,
|
||||||
|
$this->currentUser->$signInMappingField
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$departmentHeadFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$parentCompanyStructure = $companyStructure->parent;
|
||||||
|
if (!empty($parentCompanyStructure)) {
|
||||||
|
$companyStructure = new CompanyStructure();
|
||||||
|
$companyStructure->Load('id = ?', array($parentCompanyStructure));
|
||||||
|
}
|
||||||
|
} while (!empty($companyStructure->id)
|
||||||
|
&& !empty($parentCompanyStructure)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $subFound || $departmentHeadFound;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
namespace Company\Common\Model;
|
namespace Company\Common\Model;
|
||||||
|
|
||||||
use Classes\IceResponse;
|
use Classes\IceResponse;
|
||||||
|
use Employees\Common\Model\Employee;
|
||||||
use Model\BaseModel;
|
use Model\BaseModel;
|
||||||
|
|
||||||
class CompanyStructure extends BaseModel
|
class CompanyStructure extends BaseModel
|
||||||
@@ -32,6 +33,25 @@ class CompanyStructure extends BaseModel
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$heads = json_decode($obj->heads);
|
||||||
|
foreach ($heads as $head) {
|
||||||
|
$employee = new Employee();
|
||||||
|
$employee->Load('id = ?', array($head));
|
||||||
|
if (!empty($obj->id) && $employee->department != $obj->id) {
|
||||||
|
$companyStructure = new CompanyStructure();
|
||||||
|
$companyStructure->Load("id = ?", array($employee->department));
|
||||||
|
|
||||||
|
return new IceResponse(
|
||||||
|
IceResponse::ERROR,
|
||||||
|
"An employee who is not attached to a company structure can not be the
|
||||||
|
head of the company structure. ".
|
||||||
|
"Please remove ".$employee->first_name.' '.$employee->last_name
|
||||||
|
." from list of heads as this person is attached to ".
|
||||||
|
$companyStructure->title
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new IceResponse(IceResponse::SUCCESS, "");
|
return new IceResponse(IceResponse::SUCCESS, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,6 +79,11 @@ class BaseModel extends \ADOdb_Active_Record
|
|||||||
return new IceResponse(IceResponse::SUCCESS, $obj);
|
return new IceResponse(IceResponse::SUCCESS, $obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function executePreDeleteActions($obj)
|
||||||
|
{
|
||||||
|
return new IceResponse(IceResponse::SUCCESS, null);
|
||||||
|
}
|
||||||
|
|
||||||
public function executePostSaveActions($obj)
|
public function executePostSaveActions($obj)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class ActiveEmployeeReport extends CSVReportBuilder implements CSVReportBuilderI
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "Select id, employee_id as 'Employee ID',
|
$query = "Select id, employee_id as 'Employee ID',
|
||||||
concat(`first_name`,' ',`middle_name`,' ', `last_name`) as 'Name',
|
concat(`first_name`, ' ', `last_name`) as 'Name',
|
||||||
(SELECT name from Nationality where id = nationality) as 'Nationality',
|
(SELECT name from Nationality where id = nationality) as 'Nationality',
|
||||||
birthday as 'Birthday',
|
birthday as 'Birthday',
|
||||||
gender as 'Gender',
|
gender as 'Gender',
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ class EmployeeAttendanceReport extends CSVReportBuilder implements CSVReportBuil
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT `employee_id` from Employees where id = at.employee) as 'Employee',
|
(SELECT `employee_id` from Employees where id = at.employee) as 'Employee ID',
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = at.employee) as 'Employee',
|
(SELECT concat(`first_name`, ' ', `last_name`) from Employees where id = at.employee) as 'Employee',
|
||||||
in_time as 'Time In',
|
in_time as 'Time In',
|
||||||
out_time as 'Time Out',
|
out_time as 'Time Out',
|
||||||
note as 'Note'
|
note as 'Note'
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class EmployeeLeavesReport extends CSVReportBuilder implements CSVReportBuilderI
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = employee)
|
(SELECT concat(`first_name`, ' ', `last_name`) from Employees where id = employee)
|
||||||
as 'Employee',
|
as 'Employee',
|
||||||
(SELECT name from LeaveTypes where id = leave_type) as 'Leave Type',
|
(SELECT name from LeaveTypes where id = leave_type) as 'Leave Type',
|
||||||
(SELECT name from LeavePeriods where id = leave_period) as 'Leave Period',
|
(SELECT name from LeavePeriods where id = leave_period) as 'Leave Period',
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class EmployeeTimesheetReport extends CSVReportBuilder implements CSVReportBuild
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`)
|
(SELECT concat(`first_name`, ' ', `last_name`)
|
||||||
from Employees where id = te.employee) as 'Employee',
|
from Employees where id = te.employee) as 'Employee',
|
||||||
(SELECT name from Projects where id = te.project) as 'Project',
|
(SELECT name from Projects where id = te.project) as 'Project',
|
||||||
details as 'Details',
|
details as 'Details',
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class ExpenseReport extends CSVReportBuilder implements CSVReportBuilderInterfac
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`)
|
(SELECT concat(`first_name`, ' ', `last_name`)
|
||||||
from Employees where id = employee) as 'Employee',
|
from Employees where id = employee) as 'Employee',
|
||||||
expense_date as 'Date',
|
expense_date as 'Date',
|
||||||
(SELECT name from ExpensesPaymentMethods where id = payment_method) as 'Payment Method',
|
(SELECT name from ExpensesPaymentMethods where id = payment_method) as 'Payment Method',
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ class OvertimeRequestReport extends CSVReportBuilder implements CSVReportBuilder
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT `employee_id` from Employees where id = at.employee) as 'Employee',
|
(SELECT `employee_id` from Employees where id = at.employee) as 'Employee ID',
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = at.employee) as 'Employee',
|
(SELECT concat(`first_name`, ' ', `last_name`) from Employees where id = at.employee) as 'Employee',
|
||||||
(SELECT `name` from OvertimeCategories where id = at.category) as 'Category',
|
(SELECT `name` from OvertimeCategories where id = at.category) as 'Category',
|
||||||
(SELECT `name` from Projects where id = at.project) as 'Project',
|
(SELECT `name` from Projects where id = at.project) as 'Project',
|
||||||
start_time as 'Start Time',
|
start_time as 'Start Time',
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class TravelRequestReport extends CSVReportBuilder implements CSVReportBuilderIn
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`)
|
(SELECT concat(`first_name`, ' ', `last_name`)
|
||||||
from Employees where id = employee) as 'Employee',
|
from Employees where id = employee) as 'Employee',
|
||||||
type as 'Type',
|
type as 'Type',
|
||||||
purpose as 'Purpose',
|
purpose as 'Purpose',
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ class EmployeeAttendanceReport extends CSVReportBuilder implements CSVReportBuil
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT `employee_id` from Employees where id = at.employee) as 'Employee',
|
(SELECT `employee_id` from Employees where id = at.employee) as 'Employee ID',
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = at.employee) as 'Employee',
|
(SELECT concat(`first_name`, ' ', `last_name`) from Employees where id = at.employee) as 'Employee',
|
||||||
in_time as 'Time In',
|
in_time as 'Time In',
|
||||||
out_time as 'Time Out',
|
out_time as 'Time Out',
|
||||||
note as 'Note'
|
note as 'Note'
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class EmployeeLeavesReport extends CSVReportBuilder implements CSVReportBuilderI
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`)
|
(SELECT concat(`first_name`, ' ', `last_name`)
|
||||||
from Employees where id = employee) as 'Employee',
|
from Employees where id = employee) as 'Employee',
|
||||||
(SELECT name from LeaveTypes where id = leave_type) as 'Leave Type',
|
(SELECT name from LeaveTypes where id = leave_type) as 'Leave Type',
|
||||||
(SELECT name from LeavePeriods where id = leave_period) as 'Leave Period',
|
(SELECT name from LeavePeriods where id = leave_period) as 'Leave Period',
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class EmployeeTimesheetReport extends CSVReportBuilder implements CSVReportBuild
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`)
|
(SELECT concat(`first_name`, ' ', `last_name`)
|
||||||
from Employees where id = te.employee) as 'Employee',
|
from Employees where id = te.employee) as 'Employee',
|
||||||
(SELECT name from Projects where id = te.project) as 'Project',
|
(SELECT name from Projects where id = te.project) as 'Project',
|
||||||
details as 'Details',
|
details as 'Details',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class ExpenseReport extends CSVReportBuilder implements CSVReportBuilderInterfac
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = employee) as 'Employee',
|
(SELECT concat(`first_name`, ' ', `last_name`) from Employees where id = employee) as 'Employee',
|
||||||
expense_date as 'Date',
|
expense_date as 'Date',
|
||||||
(SELECT name from ExpensesPaymentMethods where id = payment_method) as 'Payment Method',
|
(SELECT name from ExpensesPaymentMethods where id = payment_method) as 'Payment Method',
|
||||||
transaction_no as 'Transaction Ref',
|
transaction_no as 'Transaction Ref',
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class TravelRequestReport extends CSVReportBuilder implements CSVReportBuilderIn
|
|||||||
public function getMainQuery()
|
public function getMainQuery()
|
||||||
{
|
{
|
||||||
$query = "SELECT
|
$query = "SELECT
|
||||||
(SELECT concat(`first_name`,' ',`middle_name`,' ', `last_name`) from Employees where id = employee) as 'Employee',
|
(SELECT concat(`first_name`, ' ', `last_name`) from Employees where id = employee) as 'Employee',
|
||||||
type as 'Type',
|
type as 'Type',
|
||||||
purpose as 'Purpose',
|
purpose as 'Purpose',
|
||||||
travel_from as 'Travel From',
|
travel_from as 'Travel From',
|
||||||
|
|||||||
@@ -64,4 +64,12 @@ class CalendarTools
|
|||||||
|
|
||||||
return $time->format($format);
|
return $time->format($format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getNumberOfDaysBetweenDates($first, $second)
|
||||||
|
{
|
||||||
|
$timeFirst = new \DateTime($first);
|
||||||
|
$timeSecond = new \DateTime($second);
|
||||||
|
$interval = $timeSecond->diff($timeFirst);
|
||||||
|
return intval($interval->format('%a'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,17 +16,17 @@ class InputCleaner
|
|||||||
{
|
{
|
||||||
$val = strip_tags($val, TAGS_TO_PRESERVE);
|
$val = strip_tags($val, TAGS_TO_PRESERVE);
|
||||||
/*
|
/*
|
||||||
/ # Start Pattern
|
/ # Start Pattern
|
||||||
< # Match '<' at beginning of tags
|
< # Match '<' at beginning of tags
|
||||||
( # Start Capture Group $1 - Tag Name
|
( # Start Capture Group $1 - Tag Name
|
||||||
[a-z] # Match 'a' through 'z'
|
[a-z] # Match 'a' through 'z'
|
||||||
[a-z0-9]* # Match 'a' through 'z' or '0' through '9' zero or more times
|
[a-z0-9]* # Match 'a' through 'z' or '0' through '9' zero or more times
|
||||||
) # End Capture Group
|
) # End Capture Group
|
||||||
[^>]*? # Match anything other than '>', Zero or More times, not-greedy (wont eat the /)
|
[^>]*? # Match anything other than '>', Zero or More times, not-greedy (wont eat the /)
|
||||||
(\/?) # Capture Group $2 - '/' if it is there
|
(\/?) # Capture Group $2 - '/' if it is there
|
||||||
> # Match '>'
|
> # Match '>'
|
||||||
/i # End Pattern - Case Insensitive
|
/i # End Pattern - Case Insensitive
|
||||||
*/
|
*/
|
||||||
$val = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i", '<$1$2>', $val);
|
$val = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i", '<$1$2>', $val);
|
||||||
return $val;
|
return $val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<li class="dropdown messages-menu">
|
<li class="dropdown messages-menu">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||||
<i class="glyphicon glyphicon-question-sign"></i>
|
<i class="fa fa-chevron-down"></i>
|
||||||
<span><t>Help</t></span>
|
<span></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
30
web/bower_components/d3-timeline/.bower.json
vendored
Normal file
30
web/bower_components/d3-timeline/.bower.json
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "d3-timeline",
|
||||||
|
"version": "0.0.5",
|
||||||
|
"main": "src/d3-timeline.js",
|
||||||
|
"ignore": [
|
||||||
|
"examples",
|
||||||
|
"lib",
|
||||||
|
".bowerrc",
|
||||||
|
".gitignore",
|
||||||
|
".git",
|
||||||
|
".jshintrc",
|
||||||
|
"gruntfile.js",
|
||||||
|
"package.json",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"d3": ">=3.4.3"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/jiahuang/d3-timeline",
|
||||||
|
"_release": "0.0.5",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "v0.0.5",
|
||||||
|
"commit": "743021e35e07c45664386049847455eb5a9669f0"
|
||||||
|
},
|
||||||
|
"_source": "https://github.com/jiahuang/d3-timeline.git",
|
||||||
|
"_target": "^0.0.5",
|
||||||
|
"_originalSource": "d3-timeline",
|
||||||
|
"_direct": true
|
||||||
|
}
|
||||||
19
web/bower_components/d3-timeline/bower.json
vendored
Normal file
19
web/bower_components/d3-timeline/bower.json
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "d3-timeline",
|
||||||
|
"version": "0.0.5",
|
||||||
|
"main": "src/d3-timeline.js",
|
||||||
|
"ignore": [
|
||||||
|
"examples",
|
||||||
|
"lib",
|
||||||
|
".bowerrc",
|
||||||
|
".gitignore",
|
||||||
|
".git",
|
||||||
|
".jshintrc",
|
||||||
|
"gruntfile.js",
|
||||||
|
"package.json",
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"d3": ">=3.4.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
556
web/bower_components/d3-timeline/src/d3-timeline.js
vendored
Normal file
556
web/bower_components/d3-timeline/src/d3-timeline.js
vendored
Normal file
@@ -0,0 +1,556 @@
|
|||||||
|
// vim: ts=2 sw=2
|
||||||
|
(function () {
|
||||||
|
d3.timeline = function() {
|
||||||
|
var DISPLAY_TYPES = ["circle", "rect"];
|
||||||
|
|
||||||
|
var hover = function () {},
|
||||||
|
mouseover = function () {},
|
||||||
|
mouseout = function () {},
|
||||||
|
click = function () {},
|
||||||
|
scroll = function () {},
|
||||||
|
labelFunction = function() {},
|
||||||
|
orient = "bottom",
|
||||||
|
width = null,
|
||||||
|
height = null,
|
||||||
|
rowSeperatorsColor = null,
|
||||||
|
backgroundColor = null,
|
||||||
|
tickFormat = { format: d3.time.format("%I %p"),
|
||||||
|
tickTime: d3.time.hours,
|
||||||
|
tickInterval: 1,
|
||||||
|
tickSize: 6 },
|
||||||
|
colorCycle = d3.scale.category20(),
|
||||||
|
colorPropertyName = null,
|
||||||
|
display = "rect",
|
||||||
|
beginning = 0,
|
||||||
|
ending = 0,
|
||||||
|
margin = {left: 30, right:30, top: 30, bottom:30},
|
||||||
|
stacked = false,
|
||||||
|
rotateTicks = false,
|
||||||
|
timeIsRelative = false,
|
||||||
|
itemHeight = 20,
|
||||||
|
itemMargin = 5,
|
||||||
|
showTimeAxis = true,
|
||||||
|
showTodayLine = false,
|
||||||
|
timeAxisTick = false,
|
||||||
|
timeAxisTickFormat = {stroke: "stroke-dasharray", spacing: "4 10"},
|
||||||
|
showTodayFormat = {marginTop: 25, marginBottom: 0, width: 1, color: colorCycle},
|
||||||
|
showBorderLine = false,
|
||||||
|
showBorderFormat = {marginTop: 25, marginBottom: 0, width: 1, color: colorCycle}
|
||||||
|
;
|
||||||
|
|
||||||
|
function timeline (gParent) {
|
||||||
|
var g = gParent.append("g");
|
||||||
|
var gParentSize = gParent[0][0].getBoundingClientRect();
|
||||||
|
|
||||||
|
var gParentItem = d3.select(gParent[0][0]);
|
||||||
|
|
||||||
|
var yAxisMapping = {},
|
||||||
|
maxStack = 1,
|
||||||
|
minTime = 0,
|
||||||
|
maxTime = 0;
|
||||||
|
|
||||||
|
setWidth();
|
||||||
|
|
||||||
|
// check if the user wants relative time
|
||||||
|
// if so, substract the first timestamp from each subsequent timestamps
|
||||||
|
if(timeIsRelative){
|
||||||
|
g.each(function (d, i) {
|
||||||
|
d.forEach(function (datum, index) {
|
||||||
|
datum.times.forEach(function (time, j) {
|
||||||
|
if(index === 0 && j === 0){
|
||||||
|
originTime = time.starting_time; //Store the timestamp that will serve as origin
|
||||||
|
time.starting_time = 0; //Set the origin
|
||||||
|
time.ending_time = time.ending_time - originTime; //Store the relative time (millis)
|
||||||
|
}else{
|
||||||
|
time.starting_time = time.starting_time - originTime;
|
||||||
|
time.ending_time = time.ending_time - originTime;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// check how many stacks we're gonna need
|
||||||
|
// do this here so that we can draw the axis before the graph
|
||||||
|
if (stacked || ending === 0 || beginning === 0) {
|
||||||
|
g.each(function (d, i) {
|
||||||
|
d.forEach(function (datum, index) {
|
||||||
|
|
||||||
|
// create y mapping for stacked graph
|
||||||
|
if (stacked && Object.keys(yAxisMapping).indexOf(index) == -1) {
|
||||||
|
yAxisMapping[index] = maxStack;
|
||||||
|
maxStack++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// figure out beginning and ending times if they are unspecified
|
||||||
|
datum.times.forEach(function (time, i) {
|
||||||
|
if(beginning === 0)
|
||||||
|
if (time.starting_time < minTime || (minTime === 0 && timeIsRelative === false))
|
||||||
|
minTime = time.starting_time;
|
||||||
|
if(ending === 0)
|
||||||
|
if (time.ending_time > maxTime)
|
||||||
|
maxTime = time.ending_time;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (ending === 0) {
|
||||||
|
ending = maxTime;
|
||||||
|
}
|
||||||
|
if (beginning === 0) {
|
||||||
|
beginning = minTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var scaleFactor = (1/(ending - beginning)) * (width - margin.left - margin.right);
|
||||||
|
|
||||||
|
// draw the axis
|
||||||
|
var xScale = d3.time.scale()
|
||||||
|
.domain([beginning, ending])
|
||||||
|
.range([margin.left, width - margin.right]);
|
||||||
|
|
||||||
|
var xAxis = d3.svg.axis()
|
||||||
|
.scale(xScale)
|
||||||
|
.orient(orient)
|
||||||
|
.tickFormat(tickFormat.format)
|
||||||
|
.ticks(tickFormat.numTicks || tickFormat.tickTime, tickFormat.tickInterval)
|
||||||
|
.tickSize(tickFormat.tickSize);
|
||||||
|
|
||||||
|
if (showTimeAxis) {
|
||||||
|
g.append("g")
|
||||||
|
.attr("class", "axis")
|
||||||
|
.attr("transform", "translate(" + 0 +","+(margin.top + (itemHeight + itemMargin) * maxStack)+")")
|
||||||
|
.call(xAxis);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timeAxisTick) {
|
||||||
|
g.append("g")
|
||||||
|
.attr("class", "axis")
|
||||||
|
.attr("transform", "translate(" + 0 +","+
|
||||||
|
(margin.top + (itemHeight + itemMargin) * maxStack)+")")
|
||||||
|
.attr(timeAxisTickFormat.stroke, timeAxisTickFormat.spacing)
|
||||||
|
.call(xAxis.tickFormat("").tickSize(-(margin.top + (itemHeight + itemMargin) * (maxStack - 1) + 3),0,0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// draw the chart
|
||||||
|
g.each(function(d, i) {
|
||||||
|
d.forEach( function(datum, index){
|
||||||
|
var data = datum.times;
|
||||||
|
var hasLabel = (typeof(datum.label) != "undefined");
|
||||||
|
var getLabel = function(label){
|
||||||
|
if(labelFunction == null){
|
||||||
|
return label;
|
||||||
|
} else {
|
||||||
|
return labelFunction(label);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// issue warning about using id per data set. Ids should be individual to data elements
|
||||||
|
if (typeof(datum.id) != "undefined") {
|
||||||
|
console.warn("d3Timeline Warning: Ids per dataset is deprecated in favor of a 'class' key. Ids are now per data element.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (backgroundColor) {
|
||||||
|
var greenbarYAxis = ((itemHeight + itemMargin) * yAxisMapping[index]);
|
||||||
|
g.selectAll("svg").data(data).enter()
|
||||||
|
.insert("rect")
|
||||||
|
.attr("class", "row-green-bar")
|
||||||
|
.attr("x", 0 + margin.left)
|
||||||
|
.attr("width", width - margin.right - margin.left)
|
||||||
|
.attr("y", greenbarYAxis)
|
||||||
|
.attr("height", itemHeight)
|
||||||
|
.attr("fill", backgroundColor)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
g.selectAll("svg").data(data).enter()
|
||||||
|
.append(function(d, i) {
|
||||||
|
return document.createElementNS(d3.ns.prefix.svg, "display" in d? d.display:display);
|
||||||
|
})
|
||||||
|
.attr("x", getXPos)
|
||||||
|
.attr("y", getStackPosition)
|
||||||
|
.attr("width", function (d, i) {
|
||||||
|
return (d.ending_time - d.starting_time) * scaleFactor;
|
||||||
|
})
|
||||||
|
.attr("cy", function(d, i) {
|
||||||
|
return getStackPosition(d, i) + itemHeight/2;
|
||||||
|
})
|
||||||
|
.attr("cx", getXPos)
|
||||||
|
.attr("r", itemHeight / 2)
|
||||||
|
.attr("height", itemHeight)
|
||||||
|
.style("fill", function(d, i){
|
||||||
|
var dColorPropName;
|
||||||
|
if (d.color) return d.color;
|
||||||
|
if( colorPropertyName ){
|
||||||
|
dColorPropName = d[colorPropertyName];
|
||||||
|
if ( dColorPropName ) {
|
||||||
|
return colorCycle( dColorPropName );
|
||||||
|
} else {
|
||||||
|
return colorCycle( datum[colorPropertyName] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return colorCycle(index);
|
||||||
|
})
|
||||||
|
.on("mousemove", function (d, i) {
|
||||||
|
hover(d, index, datum);
|
||||||
|
})
|
||||||
|
.on("mouseover", function (d, i) {
|
||||||
|
mouseover(d, i, datum);
|
||||||
|
})
|
||||||
|
.on("mouseout", function (d, i) {
|
||||||
|
mouseout(d, i, datum);
|
||||||
|
})
|
||||||
|
.on("click", function (d, i) {
|
||||||
|
click(d, index, datum);
|
||||||
|
})
|
||||||
|
.attr("class", function (d, i) {
|
||||||
|
return datum.class ? "timelineSeries_"+datum.class : "timelineSeries_"+index;
|
||||||
|
})
|
||||||
|
.attr("id", function(d, i) {
|
||||||
|
// use deprecated id field
|
||||||
|
if (datum.id && !d.id) {
|
||||||
|
return 'timelineItem_'+datum.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
return d.id ? d.id : "timelineItem_"+index+"_"+i;
|
||||||
|
})
|
||||||
|
;
|
||||||
|
|
||||||
|
g.selectAll("svg").data(data).enter()
|
||||||
|
.append("text")
|
||||||
|
.attr("x", getXTextPos)
|
||||||
|
.attr("y", getStackTextPosition)
|
||||||
|
.text(function(d) {
|
||||||
|
return d.label;
|
||||||
|
})
|
||||||
|
;
|
||||||
|
|
||||||
|
if (rowSeperatorsColor) {
|
||||||
|
var lineYAxis = ( itemHeight + itemMargin / 2 + margin.top + (itemHeight + itemMargin) * yAxisMapping[index]);
|
||||||
|
gParent.append("svg:line")
|
||||||
|
.attr("class", "row-seperator")
|
||||||
|
.attr("x1", 0 + margin.left)
|
||||||
|
.attr("x2", width - margin.right)
|
||||||
|
.attr("y1", lineYAxis)
|
||||||
|
.attr("y2", lineYAxis)
|
||||||
|
.attr("stroke-width", 1)
|
||||||
|
.attr("stroke", rowSeperatorsColor);
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the label
|
||||||
|
if (hasLabel) {
|
||||||
|
gParent.append("text")
|
||||||
|
.attr("class", "timeline-label")
|
||||||
|
.attr("transform", "translate("+ 0 +","+ (itemHeight * 0.75 + margin.top + (itemHeight + itemMargin) * yAxisMapping[index])+")")
|
||||||
|
.text(hasLabel ? getLabel(datum.label) : datum.id)
|
||||||
|
.on("click", function (d, i) {
|
||||||
|
click(d, index, datum);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(datum.icon) !== "undefined") {
|
||||||
|
gParent.append("image")
|
||||||
|
.attr("class", "timeline-label")
|
||||||
|
.attr("transform", "translate("+ 0 +","+ (margin.top + (itemHeight + itemMargin) * yAxisMapping[index])+")")
|
||||||
|
.attr("xlink:href", datum.icon)
|
||||||
|
.attr("width", margin.left)
|
||||||
|
.attr("height", itemHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStackPosition(d, i) {
|
||||||
|
if (stacked) {
|
||||||
|
return margin.top + (itemHeight + itemMargin) * yAxisMapping[index];
|
||||||
|
}
|
||||||
|
return margin.top;
|
||||||
|
}
|
||||||
|
function getStackTextPosition(d, i) {
|
||||||
|
if (stacked) {
|
||||||
|
return margin.top + (itemHeight + itemMargin) * yAxisMapping[index] + itemHeight * 0.75;
|
||||||
|
}
|
||||||
|
return margin.top + itemHeight * 0.75;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (width > gParentSize.width) {
|
||||||
|
var move = function() {
|
||||||
|
var x = Math.min(0, Math.max(gParentSize.width - width, d3.event.translate[0]));
|
||||||
|
zoom.translate([x, 0]);
|
||||||
|
g.attr("transform", "translate(" + x + ",0)");
|
||||||
|
scroll(x*scaleFactor, xScale);
|
||||||
|
};
|
||||||
|
|
||||||
|
var zoom = d3.behavior.zoom().x(xScale).on("zoom", move);
|
||||||
|
|
||||||
|
gParent
|
||||||
|
.attr("class", "scrollable")
|
||||||
|
.call(zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rotateTicks) {
|
||||||
|
g.selectAll(".tick text")
|
||||||
|
.attr("transform", function(d) {
|
||||||
|
return "rotate(" + rotateTicks + ")translate("
|
||||||
|
+ (this.getBBox().width / 2 + 10) + "," // TODO: change this 10
|
||||||
|
+ this.getBBox().height / 2 + ")";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var gSize = g[0][0].getBoundingClientRect();
|
||||||
|
setHeight();
|
||||||
|
|
||||||
|
if (showBorderLine) {
|
||||||
|
g.each(function (d, i) {
|
||||||
|
d.forEach(function (datum) {
|
||||||
|
var times = datum.times;
|
||||||
|
times.forEach(function (time) {
|
||||||
|
appendLine(xScale(time.starting_time), showBorderFormat);
|
||||||
|
appendLine(xScale(time.ending_time), showBorderFormat);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showTodayLine) {
|
||||||
|
var todayLine = xScale(new Date());
|
||||||
|
appendLine(todayLine, showTodayFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getXPos(d, i) {
|
||||||
|
return margin.left + (d.starting_time - beginning) * scaleFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getXTextPos(d, i) {
|
||||||
|
return margin.left + (d.starting_time - beginning) * scaleFactor + 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setHeight() {
|
||||||
|
if (!height && !gParentItem.attr("height")) {
|
||||||
|
if (itemHeight) {
|
||||||
|
// set height based off of item height
|
||||||
|
height = gSize.height + gSize.top - gParentSize.top;
|
||||||
|
// set bounding rectangle height
|
||||||
|
d3.select(gParent[0][0]).attr("height", height);
|
||||||
|
} else {
|
||||||
|
throw "height of the timeline is not set";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!height) {
|
||||||
|
height = gParentItem.attr("height");
|
||||||
|
} else {
|
||||||
|
gParentItem.attr("height", height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setWidth() {
|
||||||
|
if (!width && !gParentSize.width) {
|
||||||
|
try {
|
||||||
|
width = gParentItem.attr("width");
|
||||||
|
if (!width) {
|
||||||
|
throw "width of the timeline is not set. As of Firefox 27, timeline().with(x) needs to be explicitly set in order to render";
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log( err );
|
||||||
|
}
|
||||||
|
} else if (!(width && gParentSize.width)) {
|
||||||
|
try {
|
||||||
|
width = gParentItem.attr("width");
|
||||||
|
} catch (err) {
|
||||||
|
console.log( err );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if both are set, do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
function appendLine(lineScale, lineFormat) {
|
||||||
|
gParent.append("svg:line")
|
||||||
|
.attr("x1", lineScale)
|
||||||
|
.attr("y1", lineFormat.marginTop)
|
||||||
|
.attr("x2", lineScale)
|
||||||
|
.attr("y2", height - lineFormat.marginBottom)
|
||||||
|
.style("stroke", lineFormat.color)//"rgb(6,120,155)")
|
||||||
|
.style("stroke-width", lineFormat.width);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// SETTINGS
|
||||||
|
|
||||||
|
timeline.margin = function (p) {
|
||||||
|
if (!arguments.length) return margin;
|
||||||
|
margin = p;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.orient = function (orientation) {
|
||||||
|
if (!arguments.length) return orient;
|
||||||
|
orient = orientation;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.itemHeight = function (h) {
|
||||||
|
if (!arguments.length) return itemHeight;
|
||||||
|
itemHeight = h;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.itemMargin = function (h) {
|
||||||
|
if (!arguments.length) return itemMargin;
|
||||||
|
itemMargin = h;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.height = function (h) {
|
||||||
|
if (!arguments.length) return height;
|
||||||
|
height = h;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.width = function (w) {
|
||||||
|
if (!arguments.length) return width;
|
||||||
|
width = w;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.display = function (displayType) {
|
||||||
|
if (!arguments.length || (DISPLAY_TYPES.indexOf(displayType) == -1)) return display;
|
||||||
|
display = displayType;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.labelFormat = function(f) {
|
||||||
|
if (!arguments.length) return null;
|
||||||
|
labelFunction = f;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.tickFormat = function (format) {
|
||||||
|
if (!arguments.length) return tickFormat;
|
||||||
|
tickFormat = format;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.hover = function (hoverFunc) {
|
||||||
|
if (!arguments.length) return hover;
|
||||||
|
hover = hoverFunc;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.mouseover = function (mouseoverFunc) {
|
||||||
|
if (!arguments.length) return mouseoverFunc;
|
||||||
|
mouseover = mouseoverFunc;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.mouseout = function (mouseoverFunc) {
|
||||||
|
if (!arguments.length) return mouseoverFunc;
|
||||||
|
mouseout = mouseoverFunc;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.click = function (clickFunc) {
|
||||||
|
if (!arguments.length) return click;
|
||||||
|
click = clickFunc;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.scroll = function (scrollFunc) {
|
||||||
|
if (!arguments.length) return scroll;
|
||||||
|
scroll = scrollFunc;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.colors = function (colorFormat) {
|
||||||
|
if (!arguments.length) return colorCycle;
|
||||||
|
colorCycle = colorFormat;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.beginning = function (b) {
|
||||||
|
if (!arguments.length) return beginning;
|
||||||
|
beginning = b;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.ending = function (e) {
|
||||||
|
if (!arguments.length) return ending;
|
||||||
|
ending = e;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.rotateTicks = function (degrees) {
|
||||||
|
rotateTicks = degrees;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.stack = function () {
|
||||||
|
stacked = !stacked;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.relativeTime = function() {
|
||||||
|
timeIsRelative = !timeIsRelative;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showBorderLine = function () {
|
||||||
|
showBorderLine = !showBorderLine;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showBorderFormat = function(borderFormat) {
|
||||||
|
if (!arguments.length) return showBorderFormat;
|
||||||
|
showBorderFormat = borderFormat;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showToday = function () {
|
||||||
|
showTodayLine = !showTodayLine;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showTodayFormat = function(todayFormat) {
|
||||||
|
if (!arguments.length) return showTodayFormat;
|
||||||
|
showTodayFormat = todayFormat;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.colorProperty = function(colorProp) {
|
||||||
|
if (!arguments.length) return colorPropertyName;
|
||||||
|
colorPropertyName = colorProp;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.rowSeperators = function (color) {
|
||||||
|
if (!arguments.length) return rowSeperatorsColor;
|
||||||
|
rowSeperatorsColor = color;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.background = function (color) {
|
||||||
|
if (!arguments.length) return backgroundColor;
|
||||||
|
backgroundColor = color;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showTimeAxis = function () {
|
||||||
|
showTimeAxis = !showTimeAxis;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showTimeAxisTick = function () {
|
||||||
|
timeAxisTick = !timeAxisTick;
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
timeline.showTimeAxisTickFormat = function(format) {
|
||||||
|
if (!arguments.length) return timeAxisTickFormat;
|
||||||
|
timeAxisTickFormat = format;
|
||||||
|
return timeline;
|
||||||
|
}
|
||||||
|
|
||||||
|
return timeline;
|
||||||
|
};
|
||||||
|
})();
|
||||||
18
web/bower_components/d3/.bower.json
vendored
Normal file
18
web/bower_components/d3/.bower.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "d3",
|
||||||
|
"description": "A JavaScript visualization library for HTML and SVG.",
|
||||||
|
"main": "d3.js",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"ignore": [],
|
||||||
|
"homepage": "https://github.com/mbostock-bower/d3-bower",
|
||||||
|
"version": "5.0.0",
|
||||||
|
"_release": "5.0.0",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "v5.0.0",
|
||||||
|
"commit": "d39a7a48e01f0a97966dd86e3e4d71df52cf7d25"
|
||||||
|
},
|
||||||
|
"_source": "https://github.com/mbostock-bower/d3-bower.git",
|
||||||
|
"_target": ">=3.4.3",
|
||||||
|
"_originalSource": "d3"
|
||||||
|
}
|
||||||
27
web/bower_components/d3/LICENSE
vendored
Normal file
27
web/bower_components/d3/LICENSE
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
Copyright 2010-2017 Mike Bostock
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of the author nor the names of contributors may be used to
|
||||||
|
endorse or promote products derived from this software without specific prior
|
||||||
|
written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
57
web/bower_components/d3/README.md
vendored
Normal file
57
web/bower_components/d3/README.md
vendored
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# D3: Data-Driven Documents
|
||||||
|
|
||||||
|
<a href="https://d3js.org"><img src="https://d3js.org/logo.svg" align="left" hspace="10" vspace="6"></a>
|
||||||
|
|
||||||
|
**D3** (or **D3.js**) is a JavaScript library for visualizing data using web standards. D3 helps you bring data to life using SVG, Canvas and HTML. D3 combines powerful visualization and interaction techniques with a data-driven approach to DOM manipulation, giving you the full capabilities of modern browsers and the freedom to design the right visual interface for your data.
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
* [API Reference](https://github.com/d3/d3/blob/master/API.md)
|
||||||
|
* [Release Notes](https://github.com/d3/d3/releases)
|
||||||
|
* [Gallery](https://github.com/d3/d3/wiki/Gallery)
|
||||||
|
* [Examples](https://bl.ocks.org/mbostock)
|
||||||
|
* [Wiki](https://github.com/d3/d3/wiki)
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
If you use npm, `npm install d3`. Otherwise, download the [latest release](https://github.com/d3/d3/releases/latest). The released bundle supports anonymous AMD, CommonJS, and vanilla environments. You can load directly from [d3js.org](https://d3js.org), [CDNJS](https://cdnjs.com/libraries/d3), or [unpkg](https://unpkg.com/d3/). For example:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script src="https://d3js.org/d3.v5.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
For the minified version:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script src="https://d3js.org/d3.v5.min.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also use the standalone D3 microlibraries. For example, [d3-selection](https://github.com/d3/d3-selection):
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script src="https://d3js.org/d3-selection.v1.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
D3 is written using [ES2015 modules](http://www.2ality.com/2014/09/es6-modules-final.html). Create a [custom bundle using Rollup](https://bl.ocks.org/mbostock/bb09af4c39c79cffcde4), Webpack, or your preferred bundler. To import D3 into an ES2015 application, either import specific symbols from specific D3 modules:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import {scaleLinear} from "d3-scale";
|
||||||
|
```
|
||||||
|
|
||||||
|
Or import everything into a namespace (here, `d3`):
|
||||||
|
|
||||||
|
```js
|
||||||
|
import * as d3 from "d3";
|
||||||
|
```
|
||||||
|
|
||||||
|
In Node:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var d3 = require("d3");
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also require individual modules and combine them into a `d3` object using [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign):
|
||||||
|
|
||||||
|
```js
|
||||||
|
var d3 = Object.assign({}, require("d3-format"), require("d3-geo"), require("d3-geo-projection"));
|
||||||
|
```
|
||||||
7
web/bower_components/d3/bower.json
vendored
Normal file
7
web/bower_components/d3/bower.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "d3",
|
||||||
|
"description": "A JavaScript visualization library for HTML and SVG.",
|
||||||
|
"main": "d3.js",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"ignore": []
|
||||||
|
}
|
||||||
17769
web/bower_components/d3/d3.js
vendored
Normal file
17769
web/bower_components/d3/d3.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
web/bower_components/d3/d3.min.js
vendored
Normal file
2
web/bower_components/d3/d3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
web/bower_components/handlebars/.bower.json
vendored
Normal file
18
web/bower_components/handlebars/.bower.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "handlebars",
|
||||||
|
"version": "4.0.11",
|
||||||
|
"main": "handlebars.js",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {},
|
||||||
|
"homepage": "https://github.com/components/handlebars.js",
|
||||||
|
"_release": "4.0.11",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "v4.0.11",
|
||||||
|
"commit": "bf01d452b49f62f9ebf559cefde66563aace6b22"
|
||||||
|
},
|
||||||
|
"_source": "https://github.com/components/handlebars.js.git",
|
||||||
|
"_target": "^4.0.11",
|
||||||
|
"_originalSource": "handlebars",
|
||||||
|
"_direct": true
|
||||||
|
}
|
||||||
2
web/bower_components/handlebars/.gitignore
vendored
Normal file
2
web/bower_components/handlebars/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
vendor
|
||||||
|
composer.lock
|
||||||
12
web/bower_components/handlebars/README.md
vendored
Normal file
12
web/bower_components/handlebars/README.md
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Handlebars.js
|
||||||
|
=============
|
||||||
|
|
||||||
|
Shim repository for [Handlebars.js](http://handlebarsjs.com).
|
||||||
|
|
||||||
|
Package Managers
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* [Bower](http://twitter.github.com/bower/): `handlebars`
|
||||||
|
* [Component](http://github.com/component/component): `components/handlebars.js`
|
||||||
|
* [Composer](http://packagist.org/packages/components/handlebars.js): `components/handlebars.js`
|
||||||
|
* [jspm](http://jspm.io): `github:components/handlebars.js`
|
||||||
7
web/bower_components/handlebars/bower.json
vendored
Normal file
7
web/bower_components/handlebars/bower.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"name": "handlebars",
|
||||||
|
"version": "4.0.11",
|
||||||
|
"main": "handlebars.js",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {}
|
||||||
|
}
|
||||||
9
web/bower_components/handlebars/component.json
vendored
Normal file
9
web/bower_components/handlebars/component.json
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"name": "handlebars",
|
||||||
|
"repo": "components/handlebars.js",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"main": "handlebars.js",
|
||||||
|
"scripts": [
|
||||||
|
"handlebars.js"
|
||||||
|
]
|
||||||
|
}
|
||||||
35
web/bower_components/handlebars/composer.json
vendored
Normal file
35
web/bower_components/handlebars/composer.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "components/handlebars.js",
|
||||||
|
"description": "Handlebars.js and Mustache are both logicless templating languages that keep the view and the code separated like we all know they should be.",
|
||||||
|
"homepage": "http://handlebarsjs.com",
|
||||||
|
"license": "MIT",
|
||||||
|
"type": "component",
|
||||||
|
"keywords": [
|
||||||
|
"handlebars",
|
||||||
|
"mustache",
|
||||||
|
"html"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Chris Wanstrath",
|
||||||
|
"homepage": "http://chriswanstrath.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"suggest": {
|
||||||
|
"robloach/component-installer": "Allows installation of Components via Composer"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"component": {
|
||||||
|
"name": "handlebars",
|
||||||
|
"scripts": [
|
||||||
|
"handlebars.js"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"handlebars.runtime.js"
|
||||||
|
],
|
||||||
|
"shim": {
|
||||||
|
"exports": "Handlebars"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
22
web/bower_components/handlebars/handlebars-source.gemspec
vendored
Normal file
22
web/bower_components/handlebars/handlebars-source.gemspec
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
require 'json'
|
||||||
|
|
||||||
|
package = JSON.parse(File.read('bower.json'))
|
||||||
|
|
||||||
|
Gem::Specification.new do |gem|
|
||||||
|
gem.name = "handlebars-source"
|
||||||
|
gem.authors = ["Yehuda Katz"]
|
||||||
|
gem.email = ["wycats@gmail.com"]
|
||||||
|
gem.date = Time.now.strftime("%Y-%m-%d")
|
||||||
|
gem.description = %q{Handlebars.js source code wrapper for (pre)compilation gems.}
|
||||||
|
gem.summary = %q{Handlebars.js source code wrapper}
|
||||||
|
gem.homepage = "https://github.com/wycats/handlebars.js/"
|
||||||
|
gem.version = package["version"].sub "-", "."
|
||||||
|
gem.license = "MIT"
|
||||||
|
|
||||||
|
gem.files = [
|
||||||
|
'handlebars.js',
|
||||||
|
'handlebars.runtime.js',
|
||||||
|
'lib/handlebars/source.rb'
|
||||||
|
]
|
||||||
|
end
|
||||||
4352
web/bower_components/handlebars/handlebars.amd.js
vendored
Normal file
4352
web/bower_components/handlebars/handlebars.amd.js
vendored
Normal file
File diff suppressed because one or more lines are too long
29
web/bower_components/handlebars/handlebars.amd.min.js
vendored
Normal file
29
web/bower_components/handlebars/handlebars.amd.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
4840
web/bower_components/handlebars/handlebars.js
vendored
Normal file
4840
web/bower_components/handlebars/handlebars.js
vendored
Normal file
File diff suppressed because one or more lines are too long
17
web/bower_components/handlebars/handlebars.js.nuspec
vendored
Normal file
17
web/bower_components/handlebars/handlebars.js.nuspec
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<package>
|
||||||
|
<metadata>
|
||||||
|
<id>handlebars.js</id>
|
||||||
|
<version>4.0.11</version>
|
||||||
|
<authors>handlebars.js Authors</authors>
|
||||||
|
<licenseUrl>https://github.com/wycats/handlebars.js/blob/master/LICENSE</licenseUrl>
|
||||||
|
<projectUrl>https://github.com/wycats/handlebars.js/</projectUrl>
|
||||||
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
|
<description>Extension of the Mustache logicless template language</description>
|
||||||
|
<releaseNotes></releaseNotes>
|
||||||
|
<tags>handlebars mustache template html</tags>
|
||||||
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="handlebars.js" target="Content\Scripts" />
|
||||||
|
</files>
|
||||||
|
</package>
|
||||||
29
web/bower_components/handlebars/handlebars.min.js
vendored
Normal file
29
web/bower_components/handlebars/handlebars.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1046
web/bower_components/handlebars/handlebars.runtime.amd.js
vendored
Normal file
1046
web/bower_components/handlebars/handlebars.runtime.amd.js
vendored
Normal file
File diff suppressed because one or more lines are too long
27
web/bower_components/handlebars/handlebars.runtime.amd.min.js
vendored
Normal file
27
web/bower_components/handlebars/handlebars.runtime.amd.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1468
web/bower_components/handlebars/handlebars.runtime.js
vendored
Normal file
1468
web/bower_components/handlebars/handlebars.runtime.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
27
web/bower_components/handlebars/handlebars.runtime.min.js
vendored
Normal file
27
web/bower_components/handlebars/handlebars.runtime.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
web/bower_components/handlebars/lib/handlebars/source.rb
vendored
Normal file
11
web/bower_components/handlebars/lib/handlebars/source.rb
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
module Handlebars
|
||||||
|
module Source
|
||||||
|
def self.bundled_path
|
||||||
|
File.expand_path("../../../handlebars.js", __FILE__)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.runtime_bundled_path
|
||||||
|
File.expand_path("../../../handlebars.runtime.js", __FILE__)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
11
web/bower_components/handlebars/package.json
vendored
Normal file
11
web/bower_components/handlebars/package.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": "4.0.11",
|
||||||
|
"name": "handlebars",
|
||||||
|
"license": "MIT",
|
||||||
|
"jspm": {
|
||||||
|
"main": "handlebars",
|
||||||
|
"shim": { "handlebars": { "exports": "Handlebars" } },
|
||||||
|
"files": ["handlebars.js", "handlebars.runtime.js"],
|
||||||
|
"buildConfig": { "minify": true }
|
||||||
|
}
|
||||||
|
}
|
||||||
3
web/bower_components/material-design-icons/.babelrc
vendored
Executable file
3
web/bower_components/material-design-icons/.babelrc
vendored
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"presets": ["es2015"]
|
||||||
|
}
|
||||||
24
web/bower_components/material-design-icons/.bower.json
vendored
Normal file
24
web/bower_components/material-design-icons/.bower.json
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "material-design-icons",
|
||||||
|
"author": "Material Design Authors",
|
||||||
|
"description": "Material Design icons by Google",
|
||||||
|
"keywords": [
|
||||||
|
"icons",
|
||||||
|
"material",
|
||||||
|
"material-design",
|
||||||
|
"google"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"homepage": "http://google.com/design/spec",
|
||||||
|
"version": "3.0.1",
|
||||||
|
"_release": "3.0.1",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "3.0.1",
|
||||||
|
"commit": "40ef0f297970f0e78bf87569f43ea90ec53d571c"
|
||||||
|
},
|
||||||
|
"_source": "https://github.com/google/material-design-icons.git",
|
||||||
|
"_target": "^3.0.1",
|
||||||
|
"_originalSource": "material-design-icons",
|
||||||
|
"_direct": true
|
||||||
|
}
|
||||||
1
web/bower_components/material-design-icons/.gitignore
vendored
Executable file
1
web/bower_components/material-design-icons/.gitignore
vendored
Executable file
@@ -0,0 +1 @@
|
|||||||
|
node_modules
|
||||||
202
web/bower_components/material-design-icons/LICENSE
vendored
Normal file
202
web/bower_components/material-design-icons/LICENSE
vendored
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
35
web/bower_components/material-design-icons/README.md
vendored
Normal file
35
web/bower_components/material-design-icons/README.md
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Material design icons
|
||||||
|
|
||||||
|
Material design icons are the official [icon set](http://www.google.com/design/spec/style/icons.html#icons-system-icons) from Google that are designed under the [material design guidelines](http://www.google.com/design/spec).
|
||||||
|
|
||||||
|
### 3.0 Update
|
||||||
|
|
||||||
|
License change to Apache 2.0!
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
Read the [developer guide](http://google.github.io/material-design-icons/) on how to use the material design icons in your project.
|
||||||
|
|
||||||
|
### Using a font collection
|
||||||
|
|
||||||
|
The `iconfont` folder contains pre-generated font files that can be included in a project. This is especially convenient for the web; however, it is generally better to link to the web font hosted on Google Fonts:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
||||||
|
rel="stylesheet">
|
||||||
|
```
|
||||||
|
|
||||||
|
Read more in the [font portion](http://google.github.io/material-design-icons/#icon-font-for-the-web) of our full developer guide.
|
||||||
|
|
||||||
|
### Using symbols and sprites
|
||||||
|
|
||||||
|
The `css-sprite` and `svg-sprite` folders contain pre-generated sprite sheets, as well as svg symbols that can be `<use>`d more directly and with fewer constraints. Instructions for using them are in the [sprites documentation](https://github.com/google/material-design-icons/tree/master/sprites).
|
||||||
|
|
||||||
|
## Polymer icons
|
||||||
|
|
||||||
|
If you wish to use the icon set with Polymer, we recommend consuming them via the [`<iron-icons>`](https://github.com/polymerelements/iron-icons) element ([`<core-icons>`](https://github.com/Polymer/core-icons) in v0.5).
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
We have made these icons available for you to incorporate them into your products under the [Apache License Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt). Feel free to remix and re-share these icons and documentation in your products.
|
||||||
|
We'd love attribution in your app's *about* screen, but it's not required. The only thing we ask is that you not re-sell these icons.
|
||||||
13
web/bower_components/material-design-icons/bower.json
vendored
Normal file
13
web/bower_components/material-design-icons/bower.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"name": "material-design-icons",
|
||||||
|
"author": "Material Design Authors",
|
||||||
|
"description": "Material Design icons by Google",
|
||||||
|
"keywords": [
|
||||||
|
"icons",
|
||||||
|
"material",
|
||||||
|
"material-design",
|
||||||
|
"google"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"homepage": "http://google.com/design/spec"
|
||||||
|
}
|
||||||
166
web/bower_components/material-design-icons/gulpfile.babel.js
vendored
Executable file
166
web/bower_components/material-design-icons/gulpfile.babel.js
vendored
Executable file
@@ -0,0 +1,166 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
import _ from 'lodash';
|
||||||
|
import File from 'vinyl';
|
||||||
|
import gulp from 'gulp';
|
||||||
|
import merge from 'merge-stream';
|
||||||
|
import sprity from 'sprity';
|
||||||
|
import svgSprite from 'gulp-svg-sprite';
|
||||||
|
import through2 from 'through2';
|
||||||
|
import { humanize, titleize } from 'underscore.string';
|
||||||
|
|
||||||
|
|
||||||
|
/** Names of directories containing icons. */
|
||||||
|
const ICON_CATEGORIES = [
|
||||||
|
'action',
|
||||||
|
'alert',
|
||||||
|
'av',
|
||||||
|
'communication',
|
||||||
|
'content',
|
||||||
|
'device',
|
||||||
|
'editor',
|
||||||
|
'file',
|
||||||
|
'hardware',
|
||||||
|
'image',
|
||||||
|
'maps',
|
||||||
|
'navigation',
|
||||||
|
'notification',
|
||||||
|
'places',
|
||||||
|
'social',
|
||||||
|
'toggle',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/** Standard PNG colors. */
|
||||||
|
const PNG_COLORS = [
|
||||||
|
'black',
|
||||||
|
'white',
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates PNG sprites and their corresponding CSS files for each category of
|
||||||
|
* icon, and places them in `sprites/css-sprite`.
|
||||||
|
*
|
||||||
|
* TODO(shyndman): Add support for double density sprites.
|
||||||
|
*/
|
||||||
|
gulp.task('png-sprites', () =>
|
||||||
|
_(getCategoryColorPairs())
|
||||||
|
.map(([ category, color ]) =>
|
||||||
|
sprity.src({
|
||||||
|
src: `./${ category }/1x_web/*_${ color }_24dp.png`,
|
||||||
|
style: `sprite-${ category }-${ color }.css`,
|
||||||
|
name: `sprite-${ category }-${ color }`,
|
||||||
|
engine: 'sprity-gm',
|
||||||
|
orientation: 'left-right'
|
||||||
|
}))
|
||||||
|
.thru(merge)
|
||||||
|
.value()
|
||||||
|
.pipe(gulp.dest('./sprites/css-sprite/')));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates CSS and Symbol-based SVG sprites for each category, and places
|
||||||
|
* them in `sprites/svg-sprite`.
|
||||||
|
*/
|
||||||
|
gulp.task('svg-sprites', () =>
|
||||||
|
_(ICON_CATEGORIES)
|
||||||
|
.map((category) =>
|
||||||
|
gulp.src(`./${ category }/svg/production/*_24px.svg`)
|
||||||
|
.pipe(svgSprite(getSvgSpriteConfig(category))))
|
||||||
|
.thru(merge)
|
||||||
|
.value()
|
||||||
|
.pipe(gulp.dest('./sprites/svg-sprite')));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a file to allow the consumption of the icon font by Iconjar
|
||||||
|
* (http://geticonjar.com/).
|
||||||
|
*/
|
||||||
|
gulp.task('iconjar', () =>
|
||||||
|
gulp.src('./iconfont/codepoints')
|
||||||
|
.pipe(generateIjmap('MaterialIcons-Regular.ijmap'))
|
||||||
|
.pipe(gulp.dest('./iconfont/')));
|
||||||
|
|
||||||
|
|
||||||
|
/** Runs all tasks. */
|
||||||
|
gulp.task('default', ['png-sprites', 'svg-sprites', 'iconjar']);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a stream that transforms between our icon font's codepoint file
|
||||||
|
* and an Iconjar ijmap.
|
||||||
|
*/
|
||||||
|
function generateIjmap(ijmapPath) {
|
||||||
|
return through2.obj((codepointsFile, encoding, callback) => {
|
||||||
|
const ijmap = {
|
||||||
|
icons: codepointsToIjmap(codepointsFile.contents.toString())
|
||||||
|
};
|
||||||
|
|
||||||
|
callback(null, new File({
|
||||||
|
path: ijmapPath,
|
||||||
|
contents: new Buffer(JSON.stringify(ijmap), 'utf8')
|
||||||
|
}));
|
||||||
|
|
||||||
|
function codepointsToIjmap(codepoints) {
|
||||||
|
return _(codepoints)
|
||||||
|
.split('\n') // split into lines
|
||||||
|
.reject(_.isEmpty) // remove empty lines
|
||||||
|
.reduce((codepointMap, line) => { // build up the codepoint map
|
||||||
|
let [ name, codepoint ] = line.split(' ');
|
||||||
|
codepointMap[codepoint] = { name: titleize(humanize(name)) };
|
||||||
|
return codepointMap;
|
||||||
|
}, {});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the SVG sprite configuration for the specified category.
|
||||||
|
*/
|
||||||
|
function getSvgSpriteConfig(category) {
|
||||||
|
return {
|
||||||
|
shape: {
|
||||||
|
dimension: {
|
||||||
|
maxWidth: 24,
|
||||||
|
maxHeight: 24
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mode: {
|
||||||
|
css : {
|
||||||
|
bust: false,
|
||||||
|
dest: './',
|
||||||
|
sprite: `./svg-sprite-${ category }.svg`,
|
||||||
|
example: {
|
||||||
|
dest: `./svg-sprite-${ category }.html`
|
||||||
|
},
|
||||||
|
render: {
|
||||||
|
css: {
|
||||||
|
dest: `./svg-sprite-${ category }.css`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
symbol : {
|
||||||
|
bust: false,
|
||||||
|
dest: './',
|
||||||
|
sprite: `./svg-sprite-${ category }-symbol.svg`,
|
||||||
|
example: {
|
||||||
|
dest: `./svg-sprite-${ category }-symbol.html`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the catesian product of categories and colors.
|
||||||
|
*/
|
||||||
|
function getCategoryColorPairs() {
|
||||||
|
return _(ICON_CATEGORIES)
|
||||||
|
.map((category) =>
|
||||||
|
_.zip(_.times(PNG_COLORS.length, () => category), PNG_COLORS))
|
||||||
|
.flatten() // flattens 1 level
|
||||||
|
.value();
|
||||||
|
}
|
||||||
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.eot
vendored
Normal file
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.eot
vendored
Normal file
Binary file not shown.
1
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.ijmap
vendored
Normal file
1
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.ijmap
vendored
Normal file
File diff suppressed because one or more lines are too long
2373
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.svg
vendored
Normal file
2373
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.svg
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 275 KiB |
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.ttf
vendored
Normal file
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.ttf
vendored
Normal file
Binary file not shown.
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.woff
vendored
Normal file
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.woff
vendored
Normal file
Binary file not shown.
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.woff2
vendored
Normal file
BIN
web/bower_components/material-design-icons/iconfont/MaterialIcons-Regular.woff2
vendored
Normal file
Binary file not shown.
9
web/bower_components/material-design-icons/iconfont/README.md
vendored
Normal file
9
web/bower_components/material-design-icons/iconfont/README.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
||||||
|
rel="stylesheet">
|
||||||
|
```
|
||||||
|
|
||||||
|
Read more in our full usage guide:
|
||||||
|
http://google.github.io/material-design-icons/#icon-font-for-the-web
|
||||||
932
web/bower_components/material-design-icons/iconfont/codepoints
vendored
Normal file
932
web/bower_components/material-design-icons/iconfont/codepoints
vendored
Normal file
@@ -0,0 +1,932 @@
|
|||||||
|
3d_rotation e84d
|
||||||
|
ac_unit eb3b
|
||||||
|
access_alarm e190
|
||||||
|
access_alarms e191
|
||||||
|
access_time e192
|
||||||
|
accessibility e84e
|
||||||
|
accessible e914
|
||||||
|
account_balance e84f
|
||||||
|
account_balance_wallet e850
|
||||||
|
account_box e851
|
||||||
|
account_circle e853
|
||||||
|
adb e60e
|
||||||
|
add e145
|
||||||
|
add_a_photo e439
|
||||||
|
add_alarm e193
|
||||||
|
add_alert e003
|
||||||
|
add_box e146
|
||||||
|
add_circle e147
|
||||||
|
add_circle_outline e148
|
||||||
|
add_location e567
|
||||||
|
add_shopping_cart e854
|
||||||
|
add_to_photos e39d
|
||||||
|
add_to_queue e05c
|
||||||
|
adjust e39e
|
||||||
|
airline_seat_flat e630
|
||||||
|
airline_seat_flat_angled e631
|
||||||
|
airline_seat_individual_suite e632
|
||||||
|
airline_seat_legroom_extra e633
|
||||||
|
airline_seat_legroom_normal e634
|
||||||
|
airline_seat_legroom_reduced e635
|
||||||
|
airline_seat_recline_extra e636
|
||||||
|
airline_seat_recline_normal e637
|
||||||
|
airplanemode_active e195
|
||||||
|
airplanemode_inactive e194
|
||||||
|
airplay e055
|
||||||
|
airport_shuttle eb3c
|
||||||
|
alarm e855
|
||||||
|
alarm_add e856
|
||||||
|
alarm_off e857
|
||||||
|
alarm_on e858
|
||||||
|
album e019
|
||||||
|
all_inclusive eb3d
|
||||||
|
all_out e90b
|
||||||
|
android e859
|
||||||
|
announcement e85a
|
||||||
|
apps e5c3
|
||||||
|
archive e149
|
||||||
|
arrow_back e5c4
|
||||||
|
arrow_downward e5db
|
||||||
|
arrow_drop_down e5c5
|
||||||
|
arrow_drop_down_circle e5c6
|
||||||
|
arrow_drop_up e5c7
|
||||||
|
arrow_forward e5c8
|
||||||
|
arrow_upward e5d8
|
||||||
|
art_track e060
|
||||||
|
aspect_ratio e85b
|
||||||
|
assessment e85c
|
||||||
|
assignment e85d
|
||||||
|
assignment_ind e85e
|
||||||
|
assignment_late e85f
|
||||||
|
assignment_return e860
|
||||||
|
assignment_returned e861
|
||||||
|
assignment_turned_in e862
|
||||||
|
assistant e39f
|
||||||
|
assistant_photo e3a0
|
||||||
|
attach_file e226
|
||||||
|
attach_money e227
|
||||||
|
attachment e2bc
|
||||||
|
audiotrack e3a1
|
||||||
|
autorenew e863
|
||||||
|
av_timer e01b
|
||||||
|
backspace e14a
|
||||||
|
backup e864
|
||||||
|
battery_alert e19c
|
||||||
|
battery_charging_full e1a3
|
||||||
|
battery_full e1a4
|
||||||
|
battery_std e1a5
|
||||||
|
battery_unknown e1a6
|
||||||
|
beach_access eb3e
|
||||||
|
beenhere e52d
|
||||||
|
block e14b
|
||||||
|
bluetooth e1a7
|
||||||
|
bluetooth_audio e60f
|
||||||
|
bluetooth_connected e1a8
|
||||||
|
bluetooth_disabled e1a9
|
||||||
|
bluetooth_searching e1aa
|
||||||
|
blur_circular e3a2
|
||||||
|
blur_linear e3a3
|
||||||
|
blur_off e3a4
|
||||||
|
blur_on e3a5
|
||||||
|
book e865
|
||||||
|
bookmark e866
|
||||||
|
bookmark_border e867
|
||||||
|
border_all e228
|
||||||
|
border_bottom e229
|
||||||
|
border_clear e22a
|
||||||
|
border_color e22b
|
||||||
|
border_horizontal e22c
|
||||||
|
border_inner e22d
|
||||||
|
border_left e22e
|
||||||
|
border_outer e22f
|
||||||
|
border_right e230
|
||||||
|
border_style e231
|
||||||
|
border_top e232
|
||||||
|
border_vertical e233
|
||||||
|
branding_watermark e06b
|
||||||
|
brightness_1 e3a6
|
||||||
|
brightness_2 e3a7
|
||||||
|
brightness_3 e3a8
|
||||||
|
brightness_4 e3a9
|
||||||
|
brightness_5 e3aa
|
||||||
|
brightness_6 e3ab
|
||||||
|
brightness_7 e3ac
|
||||||
|
brightness_auto e1ab
|
||||||
|
brightness_high e1ac
|
||||||
|
brightness_low e1ad
|
||||||
|
brightness_medium e1ae
|
||||||
|
broken_image e3ad
|
||||||
|
brush e3ae
|
||||||
|
bubble_chart e6dd
|
||||||
|
bug_report e868
|
||||||
|
build e869
|
||||||
|
burst_mode e43c
|
||||||
|
business e0af
|
||||||
|
business_center eb3f
|
||||||
|
cached e86a
|
||||||
|
cake e7e9
|
||||||
|
call e0b0
|
||||||
|
call_end e0b1
|
||||||
|
call_made e0b2
|
||||||
|
call_merge e0b3
|
||||||
|
call_missed e0b4
|
||||||
|
call_missed_outgoing e0e4
|
||||||
|
call_received e0b5
|
||||||
|
call_split e0b6
|
||||||
|
call_to_action e06c
|
||||||
|
camera e3af
|
||||||
|
camera_alt e3b0
|
||||||
|
camera_enhance e8fc
|
||||||
|
camera_front e3b1
|
||||||
|
camera_rear e3b2
|
||||||
|
camera_roll e3b3
|
||||||
|
cancel e5c9
|
||||||
|
card_giftcard e8f6
|
||||||
|
card_membership e8f7
|
||||||
|
card_travel e8f8
|
||||||
|
casino eb40
|
||||||
|
cast e307
|
||||||
|
cast_connected e308
|
||||||
|
center_focus_strong e3b4
|
||||||
|
center_focus_weak e3b5
|
||||||
|
change_history e86b
|
||||||
|
chat e0b7
|
||||||
|
chat_bubble e0ca
|
||||||
|
chat_bubble_outline e0cb
|
||||||
|
check e5ca
|
||||||
|
check_box e834
|
||||||
|
check_box_outline_blank e835
|
||||||
|
check_circle e86c
|
||||||
|
chevron_left e5cb
|
||||||
|
chevron_right e5cc
|
||||||
|
child_care eb41
|
||||||
|
child_friendly eb42
|
||||||
|
chrome_reader_mode e86d
|
||||||
|
class e86e
|
||||||
|
clear e14c
|
||||||
|
clear_all e0b8
|
||||||
|
close e5cd
|
||||||
|
closed_caption e01c
|
||||||
|
cloud e2bd
|
||||||
|
cloud_circle e2be
|
||||||
|
cloud_done e2bf
|
||||||
|
cloud_download e2c0
|
||||||
|
cloud_off e2c1
|
||||||
|
cloud_queue e2c2
|
||||||
|
cloud_upload e2c3
|
||||||
|
code e86f
|
||||||
|
collections e3b6
|
||||||
|
collections_bookmark e431
|
||||||
|
color_lens e3b7
|
||||||
|
colorize e3b8
|
||||||
|
comment e0b9
|
||||||
|
compare e3b9
|
||||||
|
compare_arrows e915
|
||||||
|
computer e30a
|
||||||
|
confirmation_number e638
|
||||||
|
contact_mail e0d0
|
||||||
|
contact_phone e0cf
|
||||||
|
contacts e0ba
|
||||||
|
content_copy e14d
|
||||||
|
content_cut e14e
|
||||||
|
content_paste e14f
|
||||||
|
control_point e3ba
|
||||||
|
control_point_duplicate e3bb
|
||||||
|
copyright e90c
|
||||||
|
create e150
|
||||||
|
create_new_folder e2cc
|
||||||
|
credit_card e870
|
||||||
|
crop e3be
|
||||||
|
crop_16_9 e3bc
|
||||||
|
crop_3_2 e3bd
|
||||||
|
crop_5_4 e3bf
|
||||||
|
crop_7_5 e3c0
|
||||||
|
crop_din e3c1
|
||||||
|
crop_free e3c2
|
||||||
|
crop_landscape e3c3
|
||||||
|
crop_original e3c4
|
||||||
|
crop_portrait e3c5
|
||||||
|
crop_rotate e437
|
||||||
|
crop_square e3c6
|
||||||
|
dashboard e871
|
||||||
|
data_usage e1af
|
||||||
|
date_range e916
|
||||||
|
dehaze e3c7
|
||||||
|
delete e872
|
||||||
|
delete_forever e92b
|
||||||
|
delete_sweep e16c
|
||||||
|
description e873
|
||||||
|
desktop_mac e30b
|
||||||
|
desktop_windows e30c
|
||||||
|
details e3c8
|
||||||
|
developer_board e30d
|
||||||
|
developer_mode e1b0
|
||||||
|
device_hub e335
|
||||||
|
devices e1b1
|
||||||
|
devices_other e337
|
||||||
|
dialer_sip e0bb
|
||||||
|
dialpad e0bc
|
||||||
|
directions e52e
|
||||||
|
directions_bike e52f
|
||||||
|
directions_boat e532
|
||||||
|
directions_bus e530
|
||||||
|
directions_car e531
|
||||||
|
directions_railway e534
|
||||||
|
directions_run e566
|
||||||
|
directions_subway e533
|
||||||
|
directions_transit e535
|
||||||
|
directions_walk e536
|
||||||
|
disc_full e610
|
||||||
|
dns e875
|
||||||
|
do_not_disturb e612
|
||||||
|
do_not_disturb_alt e611
|
||||||
|
do_not_disturb_off e643
|
||||||
|
do_not_disturb_on e644
|
||||||
|
dock e30e
|
||||||
|
domain e7ee
|
||||||
|
done e876
|
||||||
|
done_all e877
|
||||||
|
donut_large e917
|
||||||
|
donut_small e918
|
||||||
|
drafts e151
|
||||||
|
drag_handle e25d
|
||||||
|
drive_eta e613
|
||||||
|
dvr e1b2
|
||||||
|
edit e3c9
|
||||||
|
edit_location e568
|
||||||
|
eject e8fb
|
||||||
|
email e0be
|
||||||
|
enhanced_encryption e63f
|
||||||
|
equalizer e01d
|
||||||
|
error e000
|
||||||
|
error_outline e001
|
||||||
|
euro_symbol e926
|
||||||
|
ev_station e56d
|
||||||
|
event e878
|
||||||
|
event_available e614
|
||||||
|
event_busy e615
|
||||||
|
event_note e616
|
||||||
|
event_seat e903
|
||||||
|
exit_to_app e879
|
||||||
|
expand_less e5ce
|
||||||
|
expand_more e5cf
|
||||||
|
explicit e01e
|
||||||
|
explore e87a
|
||||||
|
exposure e3ca
|
||||||
|
exposure_neg_1 e3cb
|
||||||
|
exposure_neg_2 e3cc
|
||||||
|
exposure_plus_1 e3cd
|
||||||
|
exposure_plus_2 e3ce
|
||||||
|
exposure_zero e3cf
|
||||||
|
extension e87b
|
||||||
|
face e87c
|
||||||
|
fast_forward e01f
|
||||||
|
fast_rewind e020
|
||||||
|
favorite e87d
|
||||||
|
favorite_border e87e
|
||||||
|
featured_play_list e06d
|
||||||
|
featured_video e06e
|
||||||
|
feedback e87f
|
||||||
|
fiber_dvr e05d
|
||||||
|
fiber_manual_record e061
|
||||||
|
fiber_new e05e
|
||||||
|
fiber_pin e06a
|
||||||
|
fiber_smart_record e062
|
||||||
|
file_download e2c4
|
||||||
|
file_upload e2c6
|
||||||
|
filter e3d3
|
||||||
|
filter_1 e3d0
|
||||||
|
filter_2 e3d1
|
||||||
|
filter_3 e3d2
|
||||||
|
filter_4 e3d4
|
||||||
|
filter_5 e3d5
|
||||||
|
filter_6 e3d6
|
||||||
|
filter_7 e3d7
|
||||||
|
filter_8 e3d8
|
||||||
|
filter_9 e3d9
|
||||||
|
filter_9_plus e3da
|
||||||
|
filter_b_and_w e3db
|
||||||
|
filter_center_focus e3dc
|
||||||
|
filter_drama e3dd
|
||||||
|
filter_frames e3de
|
||||||
|
filter_hdr e3df
|
||||||
|
filter_list e152
|
||||||
|
filter_none e3e0
|
||||||
|
filter_tilt_shift e3e2
|
||||||
|
filter_vintage e3e3
|
||||||
|
find_in_page e880
|
||||||
|
find_replace e881
|
||||||
|
fingerprint e90d
|
||||||
|
first_page e5dc
|
||||||
|
fitness_center eb43
|
||||||
|
flag e153
|
||||||
|
flare e3e4
|
||||||
|
flash_auto e3e5
|
||||||
|
flash_off e3e6
|
||||||
|
flash_on e3e7
|
||||||
|
flight e539
|
||||||
|
flight_land e904
|
||||||
|
flight_takeoff e905
|
||||||
|
flip e3e8
|
||||||
|
flip_to_back e882
|
||||||
|
flip_to_front e883
|
||||||
|
folder e2c7
|
||||||
|
folder_open e2c8
|
||||||
|
folder_shared e2c9
|
||||||
|
folder_special e617
|
||||||
|
font_download e167
|
||||||
|
format_align_center e234
|
||||||
|
format_align_justify e235
|
||||||
|
format_align_left e236
|
||||||
|
format_align_right e237
|
||||||
|
format_bold e238
|
||||||
|
format_clear e239
|
||||||
|
format_color_fill e23a
|
||||||
|
format_color_reset e23b
|
||||||
|
format_color_text e23c
|
||||||
|
format_indent_decrease e23d
|
||||||
|
format_indent_increase e23e
|
||||||
|
format_italic e23f
|
||||||
|
format_line_spacing e240
|
||||||
|
format_list_bulleted e241
|
||||||
|
format_list_numbered e242
|
||||||
|
format_paint e243
|
||||||
|
format_quote e244
|
||||||
|
format_shapes e25e
|
||||||
|
format_size e245
|
||||||
|
format_strikethrough e246
|
||||||
|
format_textdirection_l_to_r e247
|
||||||
|
format_textdirection_r_to_l e248
|
||||||
|
format_underlined e249
|
||||||
|
forum e0bf
|
||||||
|
forward e154
|
||||||
|
forward_10 e056
|
||||||
|
forward_30 e057
|
||||||
|
forward_5 e058
|
||||||
|
free_breakfast eb44
|
||||||
|
fullscreen e5d0
|
||||||
|
fullscreen_exit e5d1
|
||||||
|
functions e24a
|
||||||
|
g_translate e927
|
||||||
|
gamepad e30f
|
||||||
|
games e021
|
||||||
|
gavel e90e
|
||||||
|
gesture e155
|
||||||
|
get_app e884
|
||||||
|
gif e908
|
||||||
|
golf_course eb45
|
||||||
|
gps_fixed e1b3
|
||||||
|
gps_not_fixed e1b4
|
||||||
|
gps_off e1b5
|
||||||
|
grade e885
|
||||||
|
gradient e3e9
|
||||||
|
grain e3ea
|
||||||
|
graphic_eq e1b8
|
||||||
|
grid_off e3eb
|
||||||
|
grid_on e3ec
|
||||||
|
group e7ef
|
||||||
|
group_add e7f0
|
||||||
|
group_work e886
|
||||||
|
hd e052
|
||||||
|
hdr_off e3ed
|
||||||
|
hdr_on e3ee
|
||||||
|
hdr_strong e3f1
|
||||||
|
hdr_weak e3f2
|
||||||
|
headset e310
|
||||||
|
headset_mic e311
|
||||||
|
healing e3f3
|
||||||
|
hearing e023
|
||||||
|
help e887
|
||||||
|
help_outline e8fd
|
||||||
|
high_quality e024
|
||||||
|
highlight e25f
|
||||||
|
highlight_off e888
|
||||||
|
history e889
|
||||||
|
home e88a
|
||||||
|
hot_tub eb46
|
||||||
|
hotel e53a
|
||||||
|
hourglass_empty e88b
|
||||||
|
hourglass_full e88c
|
||||||
|
http e902
|
||||||
|
https e88d
|
||||||
|
image e3f4
|
||||||
|
image_aspect_ratio e3f5
|
||||||
|
import_contacts e0e0
|
||||||
|
import_export e0c3
|
||||||
|
important_devices e912
|
||||||
|
inbox e156
|
||||||
|
indeterminate_check_box e909
|
||||||
|
info e88e
|
||||||
|
info_outline e88f
|
||||||
|
input e890
|
||||||
|
insert_chart e24b
|
||||||
|
insert_comment e24c
|
||||||
|
insert_drive_file e24d
|
||||||
|
insert_emoticon e24e
|
||||||
|
insert_invitation e24f
|
||||||
|
insert_link e250
|
||||||
|
insert_photo e251
|
||||||
|
invert_colors e891
|
||||||
|
invert_colors_off e0c4
|
||||||
|
iso e3f6
|
||||||
|
keyboard e312
|
||||||
|
keyboard_arrow_down e313
|
||||||
|
keyboard_arrow_left e314
|
||||||
|
keyboard_arrow_right e315
|
||||||
|
keyboard_arrow_up e316
|
||||||
|
keyboard_backspace e317
|
||||||
|
keyboard_capslock e318
|
||||||
|
keyboard_hide e31a
|
||||||
|
keyboard_return e31b
|
||||||
|
keyboard_tab e31c
|
||||||
|
keyboard_voice e31d
|
||||||
|
kitchen eb47
|
||||||
|
label e892
|
||||||
|
label_outline e893
|
||||||
|
landscape e3f7
|
||||||
|
language e894
|
||||||
|
laptop e31e
|
||||||
|
laptop_chromebook e31f
|
||||||
|
laptop_mac e320
|
||||||
|
laptop_windows e321
|
||||||
|
last_page e5dd
|
||||||
|
launch e895
|
||||||
|
layers e53b
|
||||||
|
layers_clear e53c
|
||||||
|
leak_add e3f8
|
||||||
|
leak_remove e3f9
|
||||||
|
lens e3fa
|
||||||
|
library_add e02e
|
||||||
|
library_books e02f
|
||||||
|
library_music e030
|
||||||
|
lightbulb_outline e90f
|
||||||
|
line_style e919
|
||||||
|
line_weight e91a
|
||||||
|
linear_scale e260
|
||||||
|
link e157
|
||||||
|
linked_camera e438
|
||||||
|
list e896
|
||||||
|
live_help e0c6
|
||||||
|
live_tv e639
|
||||||
|
local_activity e53f
|
||||||
|
local_airport e53d
|
||||||
|
local_atm e53e
|
||||||
|
local_bar e540
|
||||||
|
local_cafe e541
|
||||||
|
local_car_wash e542
|
||||||
|
local_convenience_store e543
|
||||||
|
local_dining e556
|
||||||
|
local_drink e544
|
||||||
|
local_florist e545
|
||||||
|
local_gas_station e546
|
||||||
|
local_grocery_store e547
|
||||||
|
local_hospital e548
|
||||||
|
local_hotel e549
|
||||||
|
local_laundry_service e54a
|
||||||
|
local_library e54b
|
||||||
|
local_mall e54c
|
||||||
|
local_movies e54d
|
||||||
|
local_offer e54e
|
||||||
|
local_parking e54f
|
||||||
|
local_pharmacy e550
|
||||||
|
local_phone e551
|
||||||
|
local_pizza e552
|
||||||
|
local_play e553
|
||||||
|
local_post_office e554
|
||||||
|
local_printshop e555
|
||||||
|
local_see e557
|
||||||
|
local_shipping e558
|
||||||
|
local_taxi e559
|
||||||
|
location_city e7f1
|
||||||
|
location_disabled e1b6
|
||||||
|
location_off e0c7
|
||||||
|
location_on e0c8
|
||||||
|
location_searching e1b7
|
||||||
|
lock e897
|
||||||
|
lock_open e898
|
||||||
|
lock_outline e899
|
||||||
|
looks e3fc
|
||||||
|
looks_3 e3fb
|
||||||
|
looks_4 e3fd
|
||||||
|
looks_5 e3fe
|
||||||
|
looks_6 e3ff
|
||||||
|
looks_one e400
|
||||||
|
looks_two e401
|
||||||
|
loop e028
|
||||||
|
loupe e402
|
||||||
|
low_priority e16d
|
||||||
|
loyalty e89a
|
||||||
|
mail e158
|
||||||
|
mail_outline e0e1
|
||||||
|
map e55b
|
||||||
|
markunread e159
|
||||||
|
markunread_mailbox e89b
|
||||||
|
memory e322
|
||||||
|
menu e5d2
|
||||||
|
merge_type e252
|
||||||
|
message e0c9
|
||||||
|
mic e029
|
||||||
|
mic_none e02a
|
||||||
|
mic_off e02b
|
||||||
|
mms e618
|
||||||
|
mode_comment e253
|
||||||
|
mode_edit e254
|
||||||
|
monetization_on e263
|
||||||
|
money_off e25c
|
||||||
|
monochrome_photos e403
|
||||||
|
mood e7f2
|
||||||
|
mood_bad e7f3
|
||||||
|
more e619
|
||||||
|
more_horiz e5d3
|
||||||
|
more_vert e5d4
|
||||||
|
motorcycle e91b
|
||||||
|
mouse e323
|
||||||
|
move_to_inbox e168
|
||||||
|
movie e02c
|
||||||
|
movie_creation e404
|
||||||
|
movie_filter e43a
|
||||||
|
multiline_chart e6df
|
||||||
|
music_note e405
|
||||||
|
music_video e063
|
||||||
|
my_location e55c
|
||||||
|
nature e406
|
||||||
|
nature_people e407
|
||||||
|
navigate_before e408
|
||||||
|
navigate_next e409
|
||||||
|
navigation e55d
|
||||||
|
near_me e569
|
||||||
|
network_cell e1b9
|
||||||
|
network_check e640
|
||||||
|
network_locked e61a
|
||||||
|
network_wifi e1ba
|
||||||
|
new_releases e031
|
||||||
|
next_week e16a
|
||||||
|
nfc e1bb
|
||||||
|
no_encryption e641
|
||||||
|
no_sim e0cc
|
||||||
|
not_interested e033
|
||||||
|
note e06f
|
||||||
|
note_add e89c
|
||||||
|
notifications e7f4
|
||||||
|
notifications_active e7f7
|
||||||
|
notifications_none e7f5
|
||||||
|
notifications_off e7f6
|
||||||
|
notifications_paused e7f8
|
||||||
|
offline_pin e90a
|
||||||
|
ondemand_video e63a
|
||||||
|
opacity e91c
|
||||||
|
open_in_browser e89d
|
||||||
|
open_in_new e89e
|
||||||
|
open_with e89f
|
||||||
|
pages e7f9
|
||||||
|
pageview e8a0
|
||||||
|
palette e40a
|
||||||
|
pan_tool e925
|
||||||
|
panorama e40b
|
||||||
|
panorama_fish_eye e40c
|
||||||
|
panorama_horizontal e40d
|
||||||
|
panorama_vertical e40e
|
||||||
|
panorama_wide_angle e40f
|
||||||
|
party_mode e7fa
|
||||||
|
pause e034
|
||||||
|
pause_circle_filled e035
|
||||||
|
pause_circle_outline e036
|
||||||
|
payment e8a1
|
||||||
|
people e7fb
|
||||||
|
people_outline e7fc
|
||||||
|
perm_camera_mic e8a2
|
||||||
|
perm_contact_calendar e8a3
|
||||||
|
perm_data_setting e8a4
|
||||||
|
perm_device_information e8a5
|
||||||
|
perm_identity e8a6
|
||||||
|
perm_media e8a7
|
||||||
|
perm_phone_msg e8a8
|
||||||
|
perm_scan_wifi e8a9
|
||||||
|
person e7fd
|
||||||
|
person_add e7fe
|
||||||
|
person_outline e7ff
|
||||||
|
person_pin e55a
|
||||||
|
person_pin_circle e56a
|
||||||
|
personal_video e63b
|
||||||
|
pets e91d
|
||||||
|
phone e0cd
|
||||||
|
phone_android e324
|
||||||
|
phone_bluetooth_speaker e61b
|
||||||
|
phone_forwarded e61c
|
||||||
|
phone_in_talk e61d
|
||||||
|
phone_iphone e325
|
||||||
|
phone_locked e61e
|
||||||
|
phone_missed e61f
|
||||||
|
phone_paused e620
|
||||||
|
phonelink e326
|
||||||
|
phonelink_erase e0db
|
||||||
|
phonelink_lock e0dc
|
||||||
|
phonelink_off e327
|
||||||
|
phonelink_ring e0dd
|
||||||
|
phonelink_setup e0de
|
||||||
|
photo e410
|
||||||
|
photo_album e411
|
||||||
|
photo_camera e412
|
||||||
|
photo_filter e43b
|
||||||
|
photo_library e413
|
||||||
|
photo_size_select_actual e432
|
||||||
|
photo_size_select_large e433
|
||||||
|
photo_size_select_small e434
|
||||||
|
picture_as_pdf e415
|
||||||
|
picture_in_picture e8aa
|
||||||
|
picture_in_picture_alt e911
|
||||||
|
pie_chart e6c4
|
||||||
|
pie_chart_outlined e6c5
|
||||||
|
pin_drop e55e
|
||||||
|
place e55f
|
||||||
|
play_arrow e037
|
||||||
|
play_circle_filled e038
|
||||||
|
play_circle_outline e039
|
||||||
|
play_for_work e906
|
||||||
|
playlist_add e03b
|
||||||
|
playlist_add_check e065
|
||||||
|
playlist_play e05f
|
||||||
|
plus_one e800
|
||||||
|
poll e801
|
||||||
|
polymer e8ab
|
||||||
|
pool eb48
|
||||||
|
portable_wifi_off e0ce
|
||||||
|
portrait e416
|
||||||
|
power e63c
|
||||||
|
power_input e336
|
||||||
|
power_settings_new e8ac
|
||||||
|
pregnant_woman e91e
|
||||||
|
present_to_all e0df
|
||||||
|
print e8ad
|
||||||
|
priority_high e645
|
||||||
|
public e80b
|
||||||
|
publish e255
|
||||||
|
query_builder e8ae
|
||||||
|
question_answer e8af
|
||||||
|
queue e03c
|
||||||
|
queue_music e03d
|
||||||
|
queue_play_next e066
|
||||||
|
radio e03e
|
||||||
|
radio_button_checked e837
|
||||||
|
radio_button_unchecked e836
|
||||||
|
rate_review e560
|
||||||
|
receipt e8b0
|
||||||
|
recent_actors e03f
|
||||||
|
record_voice_over e91f
|
||||||
|
redeem e8b1
|
||||||
|
redo e15a
|
||||||
|
refresh e5d5
|
||||||
|
remove e15b
|
||||||
|
remove_circle e15c
|
||||||
|
remove_circle_outline e15d
|
||||||
|
remove_from_queue e067
|
||||||
|
remove_red_eye e417
|
||||||
|
remove_shopping_cart e928
|
||||||
|
reorder e8fe
|
||||||
|
repeat e040
|
||||||
|
repeat_one e041
|
||||||
|
replay e042
|
||||||
|
replay_10 e059
|
||||||
|
replay_30 e05a
|
||||||
|
replay_5 e05b
|
||||||
|
reply e15e
|
||||||
|
reply_all e15f
|
||||||
|
report e160
|
||||||
|
report_problem e8b2
|
||||||
|
restaurant e56c
|
||||||
|
restaurant_menu e561
|
||||||
|
restore e8b3
|
||||||
|
restore_page e929
|
||||||
|
ring_volume e0d1
|
||||||
|
room e8b4
|
||||||
|
room_service eb49
|
||||||
|
rotate_90_degrees_ccw e418
|
||||||
|
rotate_left e419
|
||||||
|
rotate_right e41a
|
||||||
|
rounded_corner e920
|
||||||
|
router e328
|
||||||
|
rowing e921
|
||||||
|
rss_feed e0e5
|
||||||
|
rv_hookup e642
|
||||||
|
satellite e562
|
||||||
|
save e161
|
||||||
|
scanner e329
|
||||||
|
schedule e8b5
|
||||||
|
school e80c
|
||||||
|
screen_lock_landscape e1be
|
||||||
|
screen_lock_portrait e1bf
|
||||||
|
screen_lock_rotation e1c0
|
||||||
|
screen_rotation e1c1
|
||||||
|
screen_share e0e2
|
||||||
|
sd_card e623
|
||||||
|
sd_storage e1c2
|
||||||
|
search e8b6
|
||||||
|
security e32a
|
||||||
|
select_all e162
|
||||||
|
send e163
|
||||||
|
sentiment_dissatisfied e811
|
||||||
|
sentiment_neutral e812
|
||||||
|
sentiment_satisfied e813
|
||||||
|
sentiment_very_dissatisfied e814
|
||||||
|
sentiment_very_satisfied e815
|
||||||
|
settings e8b8
|
||||||
|
settings_applications e8b9
|
||||||
|
settings_backup_restore e8ba
|
||||||
|
settings_bluetooth e8bb
|
||||||
|
settings_brightness e8bd
|
||||||
|
settings_cell e8bc
|
||||||
|
settings_ethernet e8be
|
||||||
|
settings_input_antenna e8bf
|
||||||
|
settings_input_component e8c0
|
||||||
|
settings_input_composite e8c1
|
||||||
|
settings_input_hdmi e8c2
|
||||||
|
settings_input_svideo e8c3
|
||||||
|
settings_overscan e8c4
|
||||||
|
settings_phone e8c5
|
||||||
|
settings_power e8c6
|
||||||
|
settings_remote e8c7
|
||||||
|
settings_system_daydream e1c3
|
||||||
|
settings_voice e8c8
|
||||||
|
share e80d
|
||||||
|
shop e8c9
|
||||||
|
shop_two e8ca
|
||||||
|
shopping_basket e8cb
|
||||||
|
shopping_cart e8cc
|
||||||
|
short_text e261
|
||||||
|
show_chart e6e1
|
||||||
|
shuffle e043
|
||||||
|
signal_cellular_4_bar e1c8
|
||||||
|
signal_cellular_connected_no_internet_4_bar e1cd
|
||||||
|
signal_cellular_no_sim e1ce
|
||||||
|
signal_cellular_null e1cf
|
||||||
|
signal_cellular_off e1d0
|
||||||
|
signal_wifi_4_bar e1d8
|
||||||
|
signal_wifi_4_bar_lock e1d9
|
||||||
|
signal_wifi_off e1da
|
||||||
|
sim_card e32b
|
||||||
|
sim_card_alert e624
|
||||||
|
skip_next e044
|
||||||
|
skip_previous e045
|
||||||
|
slideshow e41b
|
||||||
|
slow_motion_video e068
|
||||||
|
smartphone e32c
|
||||||
|
smoke_free eb4a
|
||||||
|
smoking_rooms eb4b
|
||||||
|
sms e625
|
||||||
|
sms_failed e626
|
||||||
|
snooze e046
|
||||||
|
sort e164
|
||||||
|
sort_by_alpha e053
|
||||||
|
spa eb4c
|
||||||
|
space_bar e256
|
||||||
|
speaker e32d
|
||||||
|
speaker_group e32e
|
||||||
|
speaker_notes e8cd
|
||||||
|
speaker_notes_off e92a
|
||||||
|
speaker_phone e0d2
|
||||||
|
spellcheck e8ce
|
||||||
|
star e838
|
||||||
|
star_border e83a
|
||||||
|
star_half e839
|
||||||
|
stars e8d0
|
||||||
|
stay_current_landscape e0d3
|
||||||
|
stay_current_portrait e0d4
|
||||||
|
stay_primary_landscape e0d5
|
||||||
|
stay_primary_portrait e0d6
|
||||||
|
stop e047
|
||||||
|
stop_screen_share e0e3
|
||||||
|
storage e1db
|
||||||
|
store e8d1
|
||||||
|
store_mall_directory e563
|
||||||
|
straighten e41c
|
||||||
|
streetview e56e
|
||||||
|
strikethrough_s e257
|
||||||
|
style e41d
|
||||||
|
subdirectory_arrow_left e5d9
|
||||||
|
subdirectory_arrow_right e5da
|
||||||
|
subject e8d2
|
||||||
|
subscriptions e064
|
||||||
|
subtitles e048
|
||||||
|
subway e56f
|
||||||
|
supervisor_account e8d3
|
||||||
|
surround_sound e049
|
||||||
|
swap_calls e0d7
|
||||||
|
swap_horiz e8d4
|
||||||
|
swap_vert e8d5
|
||||||
|
swap_vertical_circle e8d6
|
||||||
|
switch_camera e41e
|
||||||
|
switch_video e41f
|
||||||
|
sync e627
|
||||||
|
sync_disabled e628
|
||||||
|
sync_problem e629
|
||||||
|
system_update e62a
|
||||||
|
system_update_alt e8d7
|
||||||
|
tab e8d8
|
||||||
|
tab_unselected e8d9
|
||||||
|
tablet e32f
|
||||||
|
tablet_android e330
|
||||||
|
tablet_mac e331
|
||||||
|
tag_faces e420
|
||||||
|
tap_and_play e62b
|
||||||
|
terrain e564
|
||||||
|
text_fields e262
|
||||||
|
text_format e165
|
||||||
|
textsms e0d8
|
||||||
|
texture e421
|
||||||
|
theaters e8da
|
||||||
|
thumb_down e8db
|
||||||
|
thumb_up e8dc
|
||||||
|
thumbs_up_down e8dd
|
||||||
|
time_to_leave e62c
|
||||||
|
timelapse e422
|
||||||
|
timeline e922
|
||||||
|
timer e425
|
||||||
|
timer_10 e423
|
||||||
|
timer_3 e424
|
||||||
|
timer_off e426
|
||||||
|
title e264
|
||||||
|
toc e8de
|
||||||
|
today e8df
|
||||||
|
toll e8e0
|
||||||
|
tonality e427
|
||||||
|
touch_app e913
|
||||||
|
toys e332
|
||||||
|
track_changes e8e1
|
||||||
|
traffic e565
|
||||||
|
train e570
|
||||||
|
tram e571
|
||||||
|
transfer_within_a_station e572
|
||||||
|
transform e428
|
||||||
|
translate e8e2
|
||||||
|
trending_down e8e3
|
||||||
|
trending_flat e8e4
|
||||||
|
trending_up e8e5
|
||||||
|
tune e429
|
||||||
|
turned_in e8e6
|
||||||
|
turned_in_not e8e7
|
||||||
|
tv e333
|
||||||
|
unarchive e169
|
||||||
|
undo e166
|
||||||
|
unfold_less e5d6
|
||||||
|
unfold_more e5d7
|
||||||
|
update e923
|
||||||
|
usb e1e0
|
||||||
|
verified_user e8e8
|
||||||
|
vertical_align_bottom e258
|
||||||
|
vertical_align_center e259
|
||||||
|
vertical_align_top e25a
|
||||||
|
vibration e62d
|
||||||
|
video_call e070
|
||||||
|
video_label e071
|
||||||
|
video_library e04a
|
||||||
|
videocam e04b
|
||||||
|
videocam_off e04c
|
||||||
|
videogame_asset e338
|
||||||
|
view_agenda e8e9
|
||||||
|
view_array e8ea
|
||||||
|
view_carousel e8eb
|
||||||
|
view_column e8ec
|
||||||
|
view_comfy e42a
|
||||||
|
view_compact e42b
|
||||||
|
view_day e8ed
|
||||||
|
view_headline e8ee
|
||||||
|
view_list e8ef
|
||||||
|
view_module e8f0
|
||||||
|
view_quilt e8f1
|
||||||
|
view_stream e8f2
|
||||||
|
view_week e8f3
|
||||||
|
vignette e435
|
||||||
|
visibility e8f4
|
||||||
|
visibility_off e8f5
|
||||||
|
voice_chat e62e
|
||||||
|
voicemail e0d9
|
||||||
|
volume_down e04d
|
||||||
|
volume_mute e04e
|
||||||
|
volume_off e04f
|
||||||
|
volume_up e050
|
||||||
|
vpn_key e0da
|
||||||
|
vpn_lock e62f
|
||||||
|
wallpaper e1bc
|
||||||
|
warning e002
|
||||||
|
watch e334
|
||||||
|
watch_later e924
|
||||||
|
wb_auto e42c
|
||||||
|
wb_cloudy e42d
|
||||||
|
wb_incandescent e42e
|
||||||
|
wb_iridescent e436
|
||||||
|
wb_sunny e430
|
||||||
|
wc e63d
|
||||||
|
web e051
|
||||||
|
web_asset e069
|
||||||
|
weekend e16b
|
||||||
|
whatshot e80e
|
||||||
|
widgets e1bd
|
||||||
|
wifi e63e
|
||||||
|
wifi_lock e1e1
|
||||||
|
wifi_tethering e1e2
|
||||||
|
work e8f9
|
||||||
|
wrap_text e25b
|
||||||
|
youtube_searched_for e8fa
|
||||||
|
zoom_in e8ff
|
||||||
|
zoom_out e900
|
||||||
|
zoom_out_map e56b
|
||||||
36
web/bower_components/material-design-icons/iconfont/material-icons.css
vendored
Normal file
36
web/bower_components/material-design-icons/iconfont/material-icons.css
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: 'Material Icons';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url(MaterialIcons-Regular.eot); /* For IE6-8 */
|
||||||
|
src: local('Material Icons'),
|
||||||
|
local('MaterialIcons-Regular'),
|
||||||
|
url(MaterialIcons-Regular.woff2) format('woff2'),
|
||||||
|
url(MaterialIcons-Regular.woff) format('woff'),
|
||||||
|
url(MaterialIcons-Regular.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
font-family: 'Material Icons';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 24px; /* Preferred icon size */
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
text-transform: none;
|
||||||
|
letter-spacing: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
direction: ltr;
|
||||||
|
|
||||||
|
/* Support for all WebKit browsers. */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
/* Support for Safari and Chrome. */
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
|
||||||
|
/* Support for Firefox. */
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
|
||||||
|
/* Support for IE. */
|
||||||
|
font-feature-settings: 'liga';
|
||||||
|
}
|
||||||
3
web/bower_components/material-design-icons/index.js
vendored
Normal file
3
web/bower_components/material-design-icons/index.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
STATIC_PATH: __dirname,
|
||||||
|
};
|
||||||
35
web/bower_components/material-design-icons/package.json
vendored
Normal file
35
web/bower_components/material-design-icons/package.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "material-design-icons",
|
||||||
|
"version": "3.0.0",
|
||||||
|
"description": "Material Design icons by Google",
|
||||||
|
"main": "index.js",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/google/material-design-icons"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"icons",
|
||||||
|
"material",
|
||||||
|
"material-design",
|
||||||
|
"google"
|
||||||
|
],
|
||||||
|
"author": "Material Design Authors",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/google/material-design-icons/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/google/material-design-icons",
|
||||||
|
"devDependencies": {
|
||||||
|
"babel-core": "^6.1.2",
|
||||||
|
"babel-preset-es2015": "^6.1.2",
|
||||||
|
"gulp": "^3.9.0",
|
||||||
|
"gulp-if": "^2.0.0",
|
||||||
|
"gulp-svg-sprite": "^1.2.14",
|
||||||
|
"lodash": "^3.10.1",
|
||||||
|
"sprity": "^1.0.8",
|
||||||
|
"sprity-gm": "^1.0.2",
|
||||||
|
"through2": "^2.0.0",
|
||||||
|
"underscore.string": "^3.2.2",
|
||||||
|
"vinyl": "^1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
web/bower_components/vis/.babelrc
vendored
Normal file
8
web/bower_components/vis/.babelrc
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"presets": ["es2015"],
|
||||||
|
"plugins": [
|
||||||
|
"transform-es3-property-literals",
|
||||||
|
"transform-es3-member-expression-literals",
|
||||||
|
"transform-runtime"
|
||||||
|
]
|
||||||
|
}
|
||||||
56
web/bower_components/vis/.bower.json
vendored
Normal file
56
web/bower_components/vis/.bower.json
vendored
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"name": "vis",
|
||||||
|
"main": [
|
||||||
|
"dist/vis.js",
|
||||||
|
"dist/vis.css"
|
||||||
|
],
|
||||||
|
"description": "A dynamic, browser-based visualization library.",
|
||||||
|
"homepage": "http://visjs.org/",
|
||||||
|
"license": [
|
||||||
|
"Apache-2.0",
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/almende/vis.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"vis",
|
||||||
|
"visualization",
|
||||||
|
"web based",
|
||||||
|
"browser based",
|
||||||
|
"javascript",
|
||||||
|
"chart",
|
||||||
|
"linechart",
|
||||||
|
"timeline",
|
||||||
|
"graph",
|
||||||
|
"network",
|
||||||
|
"browser"
|
||||||
|
],
|
||||||
|
"ignore": [
|
||||||
|
"gulpfile.js",
|
||||||
|
"index*.js",
|
||||||
|
"misc",
|
||||||
|
"node_modules",
|
||||||
|
"package.json",
|
||||||
|
"test",
|
||||||
|
"tools",
|
||||||
|
"lib",
|
||||||
|
".idea",
|
||||||
|
".npmignore",
|
||||||
|
".gitignore"
|
||||||
|
],
|
||||||
|
"dependencies": {},
|
||||||
|
"devDependencies": {},
|
||||||
|
"version": "4.21.0",
|
||||||
|
"_release": "4.21.0",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "v4.21.0",
|
||||||
|
"commit": "001716727826e2ba6cc0df7070733013936dda9a"
|
||||||
|
},
|
||||||
|
"_source": "https://github.com/almende/vis.git",
|
||||||
|
"_target": "^4.21.0",
|
||||||
|
"_originalSource": "vis",
|
||||||
|
"_direct": true
|
||||||
|
}
|
||||||
26
web/bower_components/vis/.codeclimate.yml
vendored
Normal file
26
web/bower_components/vis/.codeclimate.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
languages:
|
||||||
|
JavaScript: true
|
||||||
|
engines:
|
||||||
|
eslint:
|
||||||
|
enabled: true
|
||||||
|
csslint:
|
||||||
|
enabled: true
|
||||||
|
markdownlint:
|
||||||
|
enabled: true
|
||||||
|
duplication:
|
||||||
|
enabled: true
|
||||||
|
config:
|
||||||
|
languages:
|
||||||
|
javascript:
|
||||||
|
mass_threshold: 300
|
||||||
|
fixme :
|
||||||
|
enabled: true
|
||||||
|
ratings:
|
||||||
|
paths:
|
||||||
|
- "**/*.js"
|
||||||
|
- "**/*.css"
|
||||||
|
- "**/*.md"
|
||||||
|
exclude_paths:
|
||||||
|
- "dist/**/*"
|
||||||
|
- "docs/**/*"
|
||||||
|
- "examples/**/*"
|
||||||
6
web/bower_components/vis/.csslintrc
vendored
Normal file
6
web/bower_components/vis/.csslintrc
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"adjoining-classes": false,
|
||||||
|
"box-model": false,
|
||||||
|
"box-sizing": false,
|
||||||
|
"order-alphabetical": false
|
||||||
|
}
|
||||||
42
web/bower_components/vis/.eslintrc
vendored
Normal file
42
web/bower_components/vis/.eslintrc
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"es6": true,
|
||||||
|
"node": true,
|
||||||
|
"mocha": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"parserOptions": {
|
||||||
|
"sourceType": "module",
|
||||||
|
},
|
||||||
|
|
||||||
|
"extends": "eslint:recommended",
|
||||||
|
|
||||||
|
// For the full list of rules, see: http://eslint.org/docs/rules/
|
||||||
|
"rules": {
|
||||||
|
"complexity": [2, 55],
|
||||||
|
"max-statements": [2, 115],
|
||||||
|
"no-unreachable": 1,
|
||||||
|
"no-useless-escape": 0,
|
||||||
|
|
||||||
|
"no-console": 0,
|
||||||
|
// To flag presence of console.log without breaking linting:
|
||||||
|
//"no-console": ["warn", { allow: ["warn", "error"] }],
|
||||||
|
|
||||||
|
"require-jsdoc": ["error", {
|
||||||
|
"require": {
|
||||||
|
"FunctionDeclaration": true,
|
||||||
|
"MethodDefinition": true,
|
||||||
|
"ClassDeclaration": true,
|
||||||
|
"ArrowFunctionExpression": false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
"valid-jsdoc": [2, {
|
||||||
|
"requireReturnDescription": false,
|
||||||
|
"requireReturn": false,
|
||||||
|
"requireParamDescription": false,
|
||||||
|
"requireReturnType": true
|
||||||
|
}],
|
||||||
|
"guard-for-in": 1,
|
||||||
|
},
|
||||||
|
}
|
||||||
10
web/bower_components/vis/.github/ISSUE_TEMPLATE.md
vendored
Normal file
10
web/bower_components/vis/.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
Please make sure to **read the following list** before creating a new issue:
|
||||||
|
|
||||||
|
* This issue tracker is not supposed to be used for questions on how to use visjs. It is intended to be used for bug reports and feature requests! In case you face yourself with a usage question, then post your question e.g. on [stackoverflow](https://stackoverflow.com/questions/tagged/vis.js) tagged with "vis.js".
|
||||||
|
* Have you already used the [github search](https://github.com/almende/vis/issues), read the [documentation](http://visjs.org/) and looked at the [examples](https://github.com/almende/vis/tree/develop/examples)?
|
||||||
|
* Make sure to mention which vis-component (network, timeline, graph2D, graph3d) you are referring to.
|
||||||
|
* Make sure to use the [latest version of vis.js](https://cdnjs.com/libraries/vis) for bug reports.
|
||||||
|
* Make sure to mention which browser and OS you are using when creating a bug report.
|
||||||
|
* Please provide a minimal code example that demonstrates your issue. We recommend using [jsbin](jsbin.com) for that.
|
||||||
|
* Delete this list from the actual issue.
|
||||||
11
web/bower_components/vis/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
11
web/bower_components/vis/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
**Thank you for contributing to vis.js!!**
|
||||||
|
|
||||||
|
Please make sure to check the following requirements before creating a pull request:
|
||||||
|
|
||||||
|
* [ ] All pull requests must be to the [develop branch](https://github.com/almende/vis/tree/develop). Pull requests to the `master` branch will be closed!
|
||||||
|
* [ ] Make sure your changes are based on the latest version of the [develop branch](https://github.com/almende/vis/tree/develop). (Use e.g. `git fetch && git rebase origin develop` to update your feature branch).
|
||||||
|
* [ ] Provide an additional or update an example to demonstrate your changes or new features.
|
||||||
|
* [ ] Update the documentation if you introduced new behavior or changed existing behavior.
|
||||||
|
* [ ] Reference issue numbers of issues that your pull request addresses. (If you write something like `fixes #1781` in your git commit message this issue gets closed automatically by merging your pull request).
|
||||||
|
* [ ] Expect review comments and change requests by reviewer.
|
||||||
|
* [ ] Delete this checklist from your pull request.
|
||||||
7
web/bower_components/vis/.mdlrc
vendored
Normal file
7
web/bower_components/vis/.mdlrc
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// Markdown Lint Rules
|
||||||
|
// https://github.com/mivok/markdownlint/blob/master/docs/RULES.md
|
||||||
|
|
||||||
|
rules
|
||||||
|
"~MD012", // alert on multiple consecutive blank lines
|
||||||
|
"~MD013", // line length should be no more than 80 characters
|
||||||
|
"~MD014", // Dollar signs used before commands without showing output
|
||||||
18
web/bower_components/vis/.travis.yml
vendored
Normal file
18
web/bower_components/vis/.travis.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- "6"
|
||||||
|
env:
|
||||||
|
- CXX=g++-4.8
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
packages:
|
||||||
|
- libgif-dev
|
||||||
|
- g++-4.8
|
||||||
|
before_script:
|
||||||
|
- npm run lint
|
||||||
|
- npm install gulp
|
||||||
|
script:
|
||||||
|
- gulp
|
||||||
|
- npm test
|
||||||
15
web/bower_components/vis/CONTRIBUTING.md
vendored
Normal file
15
web/bower_components/vis/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
## Contributing
|
||||||
|
|
||||||
|
[Contributions](//github.com/almende/vis/blob/master/misc/how_to_help.md) to the vis.js library are very welcome! [We can't do this alone](//github.com/almende/vis/blob/master/misc/we_need_help.md).
|
||||||
|
|
||||||
|
### Questions
|
||||||
|
If you have any *general question* on how to use the vis.js library in your own project please check out [stackoverflow](http://stackoverflow.com/questions/tagged/vis.js) for thinks like that. **This is NOT a JavaScript help forum!**
|
||||||
|
|
||||||
|
### Bugs, Problems and Feature-Requests
|
||||||
|
If you really want to open a new issue:
|
||||||
|
* Please use the [search functionality](//github.com/almende/vis/issues) to make sure that there is not already an issue concerning the same topic.
|
||||||
|
* Please make sure to **mention which module** of vis.js (network, timeline, graph3d, ...) your are referring to.
|
||||||
|
* Note that development happens on the `develop` git branch. Be sure to submit PRs against this branch.
|
||||||
|
* If you think you found a bug please **provide a simple example** (e.g. on [jsbin](jsbin.com)) that demonstrates the problem.
|
||||||
|
* If you want to propose a feature-request please **describe what you are looking for in detail**, ideally providing a screenshot, drawing or something similar.
|
||||||
|
* **Close the issue later**, when the issue is no longer needed.
|
||||||
1961
web/bower_components/vis/HISTORY.md
vendored
Normal file
1961
web/bower_components/vis/HISTORY.md
vendored
Normal file
File diff suppressed because it is too large
Load Diff
176
web/bower_components/vis/LICENSE-APACHE-2.0
vendored
Normal file
176
web/bower_components/vis/LICENSE-APACHE-2.0
vendored
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
21
web/bower_components/vis/LICENSE-MIT
vendored
Normal file
21
web/bower_components/vis/LICENSE-MIT
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014-2017 Almende B.V.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
368
web/bower_components/vis/README.md
vendored
Normal file
368
web/bower_components/vis/README.md
vendored
Normal file
@@ -0,0 +1,368 @@
|
|||||||
|
# vis.js
|
||||||
|
|
||||||
|
[](https://gitter.im/vis-js/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
|
<a href="https://github.com/almende/vis/blob/develop/misc/we_need_help.md">
|
||||||
|
<img align="right" src="https://raw.githubusercontent.com/almende/vis/master/misc/we_need_help.png">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
Vis.js is a dynamic, browser based visualization library.
|
||||||
|
The library is designed to be easy to use, handle large amounts
|
||||||
|
of dynamic data, and enable manipulation of the data.
|
||||||
|
The library consists of the following components:
|
||||||
|
|
||||||
|
- DataSet and DataView. A flexible key/value based data set. Add, update, and
|
||||||
|
remove items. Subscribe on changes in the data set. A DataSet can filter and
|
||||||
|
order items, and convert fields of items.
|
||||||
|
- DataView. A filtered and/or formatted view on a DataSet.
|
||||||
|
- Graph2d. Plot data on a timeline with lines or barcharts.
|
||||||
|
- Graph3d. Display data in a three dimensional graph.
|
||||||
|
- Network. Display a network (force directed graph) with nodes and edges.
|
||||||
|
- Timeline. Display different types of data on a timeline.
|
||||||
|
|
||||||
|
The vis.js library was initially developed by [Almende B.V](http://almende.com).
|
||||||
|
|
||||||
|
## Badges
|
||||||
|
|
||||||
|
[](https://nodei.co/npm/vis/)
|
||||||
|
|
||||||
|
[](https://david-dm.org/almende/vis)
|
||||||
|
[](https://david-dm.org/almende/vis?type=dev)
|
||||||
|
|
||||||
|
[](https://cdnjs.com/libraries/vis)
|
||||||
|
[](https://github.com/almende/vis/graphs/contributors)
|
||||||
|
[](https://github.com/almende/vis/stargazers)
|
||||||
|
|
||||||
|
[](https://github.com/almende/vis/issues)
|
||||||
|
[](http://isitmaintained.com/project/almende/vis "Percentage of issues still open")
|
||||||
|
[](http://isitmaintained.com/project/almende/vis "Average time to resolve an issue")
|
||||||
|
[](https://github.com/almende/vis/pulls)
|
||||||
|
|
||||||
|
[](https://codeclimate.com/github/almende/vis)
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Install via npm:
|
||||||
|
|
||||||
|
$ npm install vis
|
||||||
|
|
||||||
|
Install via bower:
|
||||||
|
|
||||||
|
$ bower install vis
|
||||||
|
|
||||||
|
Link via cdnjs: http://cdnjs.com
|
||||||
|
|
||||||
|
Or download the library from the github project:
|
||||||
|
[https://github.com/almende/vis.git](https://github.com/almende/vis.git).
|
||||||
|
|
||||||
|
## Load
|
||||||
|
|
||||||
|
To use a component, include the javascript and css files of vis in your web page:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="webroot/vis/dist/vis.js"></script>
|
||||||
|
<link href="webroot/vis/dist/vis.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
// ... load a visualization
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
or load vis.js using require.js. Note that vis.css must be loaded too.
|
||||||
|
|
||||||
|
```js
|
||||||
|
require.config({
|
||||||
|
paths: {
|
||||||
|
vis: 'path/to/vis/dist',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
require(['vis'], function (math) {
|
||||||
|
// ... load a visualization
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
A timeline can be instantiated as:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var timeline = new vis.Timeline(container, data, options);
|
||||||
|
```
|
||||||
|
|
||||||
|
Where `container` is an HTML element, `data` is an Array with data or a DataSet,
|
||||||
|
and `options` is an optional object with configuration options for the
|
||||||
|
component.
|
||||||
|
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
A basic example on loading a Timeline is shown below. More examples can be
|
||||||
|
found in the [examples directory](https://github.com/almende/vis/tree/master/examples)
|
||||||
|
of the project.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Timeline basic demo</title>
|
||||||
|
<script src="vis/dist/vis.js"></script>
|
||||||
|
<link href="vis/dist/vis.css" rel="stylesheet" type="text/css" />
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body, html {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="visualization"></div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var container = document.getElementById('visualization');
|
||||||
|
var data = [
|
||||||
|
{id: 1, content: 'item 1', start: '2013-04-20'},
|
||||||
|
{id: 2, content: 'item 2', start: '2013-04-14'},
|
||||||
|
{id: 3, content: 'item 3', start: '2013-04-18'},
|
||||||
|
{id: 4, content: 'item 4', start: '2013-04-16', end: '2013-04-19'},
|
||||||
|
{id: 5, content: 'item 5', start: '2013-04-25'},
|
||||||
|
{id: 6, content: 'item 6', start: '2013-04-27'}
|
||||||
|
];
|
||||||
|
var options = {};
|
||||||
|
var timeline = new vis.Timeline(container, data, options);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
To build the library from source, clone the project from github
|
||||||
|
|
||||||
|
$ git clone git://github.com/almende/vis.git
|
||||||
|
|
||||||
|
The source code uses the module style of node (require and module.exports) to
|
||||||
|
organize dependencies. To install all dependencies and build the library,
|
||||||
|
run `npm install` in the root of the project.
|
||||||
|
|
||||||
|
$ cd vis
|
||||||
|
$ npm install
|
||||||
|
|
||||||
|
Then, the project can be build running:
|
||||||
|
|
||||||
|
$ npm run build
|
||||||
|
|
||||||
|
To automatically rebuild on changes in the source files, once can use
|
||||||
|
|
||||||
|
$ npm run watch
|
||||||
|
|
||||||
|
This will both build and minify the library on changes. Minifying is relatively
|
||||||
|
slow, so when only the non-minified library is needed, one can use the
|
||||||
|
`watch-dev` script instead:
|
||||||
|
|
||||||
|
$ npm run watch-dev
|
||||||
|
|
||||||
|
## Custom builds
|
||||||
|
|
||||||
|
The folder `dist` contains bundled versions of vis.js for direct use in the browser. These bundles contain all the visualizations and include external dependencies such as *hammer.js* and *moment.js*.
|
||||||
|
|
||||||
|
The source code of vis.js consists of commonjs modules, which makes it possible to create custom bundles using tools like [Browserify](http://browserify.org/) or [Webpack](http://webpack.github.io/). This can be bundling just one visualization like the Timeline, or bundling vis.js as part of your own browserified web application.
|
||||||
|
|
||||||
|
*Note that hammer.js version 2 is required as of v4.*
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
Before you can do a build:
|
||||||
|
|
||||||
|
- Install *node.js* and *npm* on your system: https://nodejs.org/
|
||||||
|
- Install the following modules using npm: `browserify`, `babelify`, and `uglify-js`:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ [sudo] npm install -g browserify babelify uglify-js
|
||||||
|
```
|
||||||
|
|
||||||
|
- Download or clone the vis.js project:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone https://github.com/almende/vis.git
|
||||||
|
```
|
||||||
|
|
||||||
|
- Install the dependencies of vis.js by running `npm install` in the root of the project:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd vis
|
||||||
|
$ npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Examples of custom builds
|
||||||
|
|
||||||
|
#### Example 1: Bundle only a single visualization type
|
||||||
|
|
||||||
|
For example, to create a bundle with just the Timeline and DataSet, create an index file named **custom.js** in the root of the project, containing:
|
||||||
|
|
||||||
|
```js
|
||||||
|
exports.DataSet = require('./lib/DataSet');
|
||||||
|
exports.Timeline = require('./lib/timeline/Timeline');
|
||||||
|
```
|
||||||
|
|
||||||
|
Then create a custom bundle using browserify, like:
|
||||||
|
|
||||||
|
$ browserify custom.js -t [ babelify --presets [es2015] ] -o dist/vis-custom.js -s vis
|
||||||
|
|
||||||
|
This will generate a custom bundle *vis-custom.js*, which exposes the namespace `vis` containing only `DataSet` and `Timeline`. The generated bundle can be minified using uglifyjs:
|
||||||
|
|
||||||
|
$ uglifyjs dist/vis-custom.js -o dist/vis-custom.min.js
|
||||||
|
|
||||||
|
The custom bundle can now be loaded like:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="dist/vis-custom.min.js"></script>
|
||||||
|
<link href="dist/vis.min.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
...
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Example 2: Exclude external libraries
|
||||||
|
|
||||||
|
The default bundle `vis.js` is standalone and includes external dependencies such as *hammer.js* and *moment.js*. When these libraries are already loaded by the application, vis.js does not need to include these dependencies itself too. To build a custom bundle of vis.js excluding *moment.js* and *hammer.js*, run browserify in the root of the project:
|
||||||
|
|
||||||
|
$ browserify index.js -t [ babelify --presets [es2015] ] -o dist/vis-custom.js -s vis -x moment -x hammerjs
|
||||||
|
|
||||||
|
This will generate a custom bundle *vis-custom.js*, which exposes the namespace `vis`, and has *moment.js* and *hammer.js* excluded. The generated bundle can be minified with uglifyjs:
|
||||||
|
|
||||||
|
$ uglifyjs dist/vis-custom.js -o dist/vis-custom.min.js
|
||||||
|
|
||||||
|
The custom bundle can now be loaded as:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- load external dependencies -->
|
||||||
|
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
|
||||||
|
<script src="http://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js"></script>
|
||||||
|
|
||||||
|
<!-- load vis.js -->
|
||||||
|
<script src="dist/vis-custom.min.js"></script>
|
||||||
|
<link href="dist/vis.min.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
...
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Example 3: Bundle vis.js as part of your (commonjs) application
|
||||||
|
|
||||||
|
When writing a web application with commonjs modules, vis.js can be packaged automatically into the application. Create a file **app.js** containing:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var moment = require('moment');
|
||||||
|
var DataSet = require('vis/lib/DataSet');
|
||||||
|
var Timeline = require('vis/lib/timeline/Timeline');
|
||||||
|
|
||||||
|
var container = document.getElementById('visualization');
|
||||||
|
var data = new DataSet([
|
||||||
|
{id: 1, content: 'item 1', start: moment('2013-04-20')},
|
||||||
|
{id: 2, content: 'item 2', start: moment('2013-04-14')},
|
||||||
|
{id: 3, content: 'item 3', start: moment('2013-04-18')},
|
||||||
|
{id: 4, content: 'item 4', start: moment('2013-04-16'), end: moment('2013-04-19')},
|
||||||
|
{id: 5, content: 'item 5', start: moment('2013-04-25')},
|
||||||
|
{id: 6, content: 'item 6', start: moment('2013-04-27')}
|
||||||
|
]);
|
||||||
|
var options = {};
|
||||||
|
var timeline = new Timeline(container, data, options);
|
||||||
|
```
|
||||||
|
|
||||||
|
The application can be bundled and minified:
|
||||||
|
|
||||||
|
$ browserify app.js -o dist/app-bundle.js -t babelify
|
||||||
|
$ uglifyjs dist/app-bundle.js -o dist/app-bundle.min.js
|
||||||
|
|
||||||
|
And loaded into a webpage:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link href="node_modules/vis/dist/vis.min.css" rel="stylesheet" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="visualization"></div>
|
||||||
|
<script src="dist/app-bundle.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Example 4: Integrate vis.js components directly in your webpack build
|
||||||
|
|
||||||
|
You can integrate e.g. the timeline component directly in you webpack build.
|
||||||
|
Therefor you can e.g. import the component-files from root direcory (starting with "index-").
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { DataSet, Timeline } from 'vis/index-timeline-graph2d';
|
||||||
|
|
||||||
|
var container = document.getElementById('visualization');
|
||||||
|
var data = new DataSet();
|
||||||
|
var timeline = new Timeline(container, data, {});
|
||||||
|
```
|
||||||
|
|
||||||
|
To get this to work you'll need to add some babel-loader-setting to your webpack-config:
|
||||||
|
|
||||||
|
```js
|
||||||
|
module: {
|
||||||
|
module: {
|
||||||
|
rules: [{
|
||||||
|
test: /node_modules[\\\/]vis[\\\/].*\.js$/,
|
||||||
|
loader: 'babel-loader',
|
||||||
|
query: {
|
||||||
|
cacheDirectory: true,
|
||||||
|
presets: [ "babel-preset-es2015" ].map(require.resolve),
|
||||||
|
plugins: [
|
||||||
|
"transform-es3-property-literals", // #2452
|
||||||
|
"transform-es3-member-expression-literals", // #2566
|
||||||
|
"transform-runtime" // #2566
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
There is also an [demo-project](https://github.com/mojoaxel/vis-webpack-demo) showing the integration of vis.js using webpack.
|
||||||
|
|
||||||
|
## Test
|
||||||
|
|
||||||
|
To test the library, install the project dependencies once:
|
||||||
|
|
||||||
|
$ npm install
|
||||||
|
|
||||||
|
Then run the tests:
|
||||||
|
|
||||||
|
$ npm run test
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright (C) 2010-2017 Almende B.V. and Contributors
|
||||||
|
|
||||||
|
Vis.js is dual licensed under both
|
||||||
|
|
||||||
|
* The Apache 2.0 License
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
* The MIT License
|
||||||
|
http://opensource.org/licenses/MIT
|
||||||
|
|
||||||
|
Vis.js may be distributed under either license.
|
||||||
39
web/bower_components/vis/bower.json
vendored
Normal file
39
web/bower_components/vis/bower.json
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"name": "vis",
|
||||||
|
"main": ["dist/vis.js", "dist/vis.css"],
|
||||||
|
"description": "A dynamic, browser-based visualization library.",
|
||||||
|
"homepage": "http://visjs.org/",
|
||||||
|
"license": ["Apache-2.0", "MIT"],
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/almende/vis.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"vis",
|
||||||
|
"visualization",
|
||||||
|
"web based",
|
||||||
|
"browser based",
|
||||||
|
"javascript",
|
||||||
|
"chart",
|
||||||
|
"linechart",
|
||||||
|
"timeline",
|
||||||
|
"graph",
|
||||||
|
"network",
|
||||||
|
"browser"
|
||||||
|
],
|
||||||
|
"ignore": [
|
||||||
|
"gulpfile.js",
|
||||||
|
"index*.js",
|
||||||
|
"misc",
|
||||||
|
"node_modules",
|
||||||
|
"package.json",
|
||||||
|
"test",
|
||||||
|
"tools",
|
||||||
|
"lib",
|
||||||
|
".idea",
|
||||||
|
".npmignore",
|
||||||
|
".gitignore"
|
||||||
|
],
|
||||||
|
"dependencies": {},
|
||||||
|
"devDependencies": {}
|
||||||
|
}
|
||||||
BIN
web/bower_components/vis/dist/img/network/acceptDeleteIcon.png
vendored
Normal file
BIN
web/bower_components/vis/dist/img/network/acceptDeleteIcon.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
web/bower_components/vis/dist/img/network/addNodeIcon.png
vendored
Normal file
BIN
web/bower_components/vis/dist/img/network/addNodeIcon.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
web/bower_components/vis/dist/img/network/backIcon.png
vendored
Normal file
BIN
web/bower_components/vis/dist/img/network/backIcon.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user