瀏覽代碼

cleaning up folder and removing api

Steve L. Nyemba 8 年之前
父節點
當前提交
67cee60274
共有 100 個文件被更改,包括 0 次插入43659 次删除
  1. 0 3
      .gitmodules
  2. 0 295
      src/api/index.py
  3. 二進制
      src/api/static/.DS_Store
  4. 0 146
      src/api/static/css/default.css
  5. 0 7
      src/api/static/css/fa/HELP-US-OUT.txt
  6. 0 2086
      src/api/static/css/fa/css/font-awesome.css
  7. 0 4
      src/api/static/css/fa/css/font-awesome.min.css
  8. 0 1122
      src/api/static/css/fa/font-awesome-animation.css
  9. 二進制
      src/api/static/css/fa/fonts/FontAwesome.otf
  10. 二進制
      src/api/static/css/fa/fonts/fontawesome-webfont.eot
  11. 0 655
      src/api/static/css/fa/fonts/fontawesome-webfont.svg
  12. 二進制
      src/api/static/css/fa/fonts/fontawesome-webfont.ttf
  13. 二進制
      src/api/static/css/fa/fonts/fontawesome-webfont.woff
  14. 二進制
      src/api/static/css/fa/fonts/fontawesome-webfont.woff2
  15. 0 34
      src/api/static/css/fa/less/animated.less
  16. 0 25
      src/api/static/css/fa/less/bordered-pulled.less
  17. 0 12
      src/api/static/css/fa/less/core.less
  18. 0 6
      src/api/static/css/fa/less/fixed-width.less
  19. 0 17
      src/api/static/css/fa/less/font-awesome.less
  20. 0 697
      src/api/static/css/fa/less/icons.less
  21. 0 13
      src/api/static/css/fa/less/larger.less
  22. 0 19
      src/api/static/css/fa/less/list.less
  23. 0 26
      src/api/static/css/fa/less/mixins.less
  24. 0 15
      src/api/static/css/fa/less/path.less
  25. 0 20
      src/api/static/css/fa/less/rotated-flipped.less
  26. 0 20
      src/api/static/css/fa/less/stacked.less
  27. 0 708
      src/api/static/css/fa/less/variables.less
  28. 0 34
      src/api/static/css/fa/scss/_animated.scss
  29. 0 25
      src/api/static/css/fa/scss/_bordered-pulled.scss
  30. 0 12
      src/api/static/css/fa/scss/_core.scss
  31. 0 6
      src/api/static/css/fa/scss/_fixed-width.scss
  32. 0 697
      src/api/static/css/fa/scss/_icons.scss
  33. 0 13
      src/api/static/css/fa/scss/_larger.scss
  34. 0 19
      src/api/static/css/fa/scss/_list.scss
  35. 0 26
      src/api/static/css/fa/scss/_mixins.scss
  36. 0 15
      src/api/static/css/fa/scss/_path.scss
  37. 0 20
      src/api/static/css/fa/scss/_rotated-flipped.scss
  38. 0 20
      src/api/static/css/fa/scss/_stacked.scss
  39. 0 708
      src/api/static/css/fa/scss/_variables.scss
  40. 0 17
      src/api/static/css/fa/scss/font-awesome.scss
  41. 0 12
      src/api/static/index.html
  42. 二進制
      src/api/static/js/chart.js/.DS_Store
  43. 0 14868
      src/api/static/js/chart.js/chart.bundle.js
  44. 0 2
      src/api/static/js/colors.js
  45. 0 573
      src/api/static/js/dashboard.js
  46. 0 9472
      src/api/static/js/jquery/jquery.min.js
  47. 0 20
      src/api/static/js/jsgrid/.editorconfig
  48. 0 4
      src/api/static/js/jsgrid/.gitignore
  49. 0 5
      src/api/static/js/jsgrid/.npmignore
  50. 0 7
      src/api/static/js/jsgrid/.travis.yml
  51. 0 130
      src/api/static/js/jsgrid/Gruntfile.js
  52. 0 22
      src/api/static/js/jsgrid/LICENSE
  53. 0 2169
      src/api/static/js/jsgrid/README.md
  54. 0 28
      src/api/static/js/jsgrid/bower.json
  55. 二進制
      src/api/static/js/jsgrid/css/icons-2x.png
  56. 二進制
      src/api/static/js/jsgrid/css/icons.png
  57. 0 120
      src/api/static/js/jsgrid/css/jsgrid.css
  58. 0 252
      src/api/static/js/jsgrid/css/theme.css
  59. 0 59
      src/api/static/js/jsgrid/demos/basic.html
  60. 0 102
      src/api/static/js/jsgrid/demos/batch-delete.html
  61. 0 97
      src/api/static/js/jsgrid/demos/custom-grid-field.html
  62. 0 90
      src/api/static/js/jsgrid/demos/custom-load-indicator.html
  63. 0 79
      src/api/static/js/jsgrid/demos/custom-row-renderer.html
  64. 0 85
      src/api/static/js/jsgrid/demos/custom-view.html
  65. 0 212
      src/api/static/js/jsgrid/demos/data-manipulation.html
  66. 0 884
      src/api/static/js/jsgrid/demos/db.js
  67. 0 82
      src/api/static/js/jsgrid/demos/demos.css
  68. 0 72
      src/api/static/js/jsgrid/demos/external-pager.html
  69. 0 31
      src/api/static/js/jsgrid/demos/index.html
  70. 0 90
      src/api/static/js/jsgrid/demos/loading-by-page.html
  71. 0 62
      src/api/static/js/jsgrid/demos/localization.html
  72. 0 74
      src/api/static/js/jsgrid/demos/odata-service.html
  73. 0 83
      src/api/static/js/jsgrid/demos/rows-reordering.html
  74. 0 78
      src/api/static/js/jsgrid/demos/sorting.html
  75. 0 50
      src/api/static/js/jsgrid/demos/static-data.html
  76. 0 61
      src/api/static/js/jsgrid/demos/validation.html
  77. 0 235
      src/api/static/js/jsgrid/external/qunit/qunit-1.10.0.css
  78. 0 1977
      src/api/static/js/jsgrid/external/qunit/qunit-1.10.0.js
  79. 0 258
      src/api/static/js/jsgrid/jsgrid-theme.css
  80. 0 7
      src/api/static/js/jsgrid/jsgrid-theme.min.css
  81. 0 126
      src/api/static/js/jsgrid/jsgrid.css
  82. 0 2516
      src/api/static/js/jsgrid/jsgrid.js
  83. 0 7
      src/api/static/js/jsgrid/jsgrid.min.css
  84. 0 8
      src/api/static/js/jsgrid/jsgrid.min.js
  85. 0 38
      src/api/static/js/jsgrid/package.json
  86. 0 97
      src/api/static/js/jsgrid/src/fields/jsgrid.field.checkbox.js
  87. 0 223
      src/api/static/js/jsgrid/src/fields/jsgrid.field.control.js
  88. 0 41
      src/api/static/js/jsgrid/src/fields/jsgrid.field.number.js
  89. 0 121
      src/api/static/js/jsgrid/src/fields/jsgrid.field.select.js
  90. 0 69
      src/api/static/js/jsgrid/src/fields/jsgrid.field.text.js
  91. 0 34
      src/api/static/js/jsgrid/src/fields/jsgrid.field.textarea.js
  92. 0 46
      src/api/static/js/jsgrid/src/i18n/de.js
  93. 0 46
      src/api/static/js/jsgrid/src/i18n/es.js
  94. 0 47
      src/api/static/js/jsgrid/src/i18n/fr.js
  95. 0 46
      src/api/static/js/jsgrid/src/i18n/he.js
  96. 0 46
      src/api/static/js/jsgrid/src/i18n/ja.js
  97. 0 46
      src/api/static/js/jsgrid/src/i18n/ka.js
  98. 0 62
      src/api/static/js/jsgrid/src/i18n/pl.js
  99. 0 46
      src/api/static/js/jsgrid/src/i18n/pt-br.js
  100. 0 0
      src/api/static/js/jsgrid/src/i18n/pt.js

+ 0 - 3
.gitmodules

@@ -1,3 +0,0 @@
-[submodule "src/api/static/js/jx"]
-	path = src/api/static/js/jx
-	url = https://github.com/lnyemba/jx.git

+ 0 - 295
src/api/index.py

@@ -1,295 +0,0 @@
-"""
-	This is a RESTful interface implemented using Flask micro framework.
-	The API is driven by configuration that is organized in terms of the monitoring classes
-	
-	The API is both restful and websocket/socketio enabled.
-
-	We designed the classes to be reusable (and powered by labels):
-	'monitoring-type':
-		'class':'<class-name>'
-		'config':<labeled-class-specific-configuration>'
-"""
-
-from flask import Flask, session, request, redirect, Response
-from flask.templating import render_template
-
-from flask_session import Session
-import time
-import sys
-import os
-import json
-import re
-import monitor
-import Queue
-from utils.transport import *
-from utils.workers import ThreadManager, Factory
-from utils.ml import ML,AnomalyDetection,AnalyzeAnomaly
-import utils.params as SYS_ARGS
-import atexit
-
-app = Flask(__name__)
-app.config['SECRET_KEY'] = '!h8-[0v8]247-4-360'
-#app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX=?RT'
-
-PARAMS = SYS_ARGS.PARAMS
-f = open(PARAMS['path'])
-CONFIG 	= json.loads(f.read())
-f.close()
-
-#
-#
-#from threading import Thread, RLock
-p = CONFIG['store']['args']
-class_read = CONFIG['store']['class']['read']
-class_write= CONFIG['store']['class']['write']
-factory = DataSourceFactory()
-# gReader = factory.instance(type=class_read,args=p)
-
-atexit.register(ThreadManager.stop)
-@app.route('/get/<id>')
-def procs(id):	
-	try:
-		gReader = factory.instance(type=class_read,args=p)
-		data =  gReader.read()
-		ahandler = AnalyzeAnomaly()
-		learn = {}
-		if 'learn' in data :
-			for row in data['learn'] :
-				label = row['label']
-				learn[label] = row
-		r = {}
-		for label in data :
-			if label not in ['learn','folders'] :
-				index = len(data[label]) - 1
-				row = data[label][index]
-				r[label] = row
-				#
-				# Let us determine if this is a normal operation or not
-				# We will update the status of the information ...
-				#
-				
-				for row in r[label] :	
-					index = r[label].index(row)			
-					if row['label'] in learn:
-						id = row['label']
-						px = ahandler.predict([row],learn[id])
-						if px :
-							
-							# row['anomaly'] = px[1]==1
-							print ""
-							print label,' *** ',index
-							row = dict(row,**px)
-							r[label][index] =row
-							#
-							# @TODO:
-							# Compile a report here that will be sent to the mailing list
-							# 
-					
-	except Exception, e:
-		print e
-		r = []
-	
-	return json.dumps(r)
-
-"""
-	This function/endpoint will assess n-virtual environments and return the results
-	@TODO: Should this be stored for future mining (I don't think so but could be wrong)
-"""
-@app.route('/sandbox')
-def sandbox():
-	global CONFIG
-	
-	if 'sandbox' in CONFIG: #CONFIG['monitor']:
-		#handler = HANDLERS['sandbox']['class']
-		#conf = HANDLERS['sandbox']['config']
-		r = []
-		# p = Factory.instance('sandbox',CONFIG)
-		handler = monitor.Sandbox()
-		conf	= CONFIG['sandbox']
-		
-		for id in conf:
-			try:
-				handler.init(conf[id])
-				r.append (dict(handler.composite(),**{"label":id}))
-			except Exception,e:
-				pass
-	else:
-		
-		r = []
-
-
-	return json.dumps(r)
-@app.route('/trends') 
-def trends ():
-	id = request.args.get('id')
-	app = request.args.get('app').strip()
-	p = CONFIG['store']['args']
-	class_read = CONFIG['store']['class']['read']
-
-	
-	gReader = factory.instance(type=class_read,args=p)	
-	r = gReader.read()
-	if id in r:
-		r = r[id] #--matrix
-		series = []
-
-		for row in r:
-			
-			series += [item for item in row if str(item['label'])== app]
-		if len(series) > 12 :
-			beg = len(series) - 13
-			series = series[beg:]
-		return json.dumps(series)
-	else:
-		return "[]"
-@app.route('/download',methods=['POST'])
-def requirements():
-	stream = request.form['missing']
-	print stream
-	stream = "\n".join(json.loads(stream))
-	headers = {"content-disposition":"attachment; filename=requirements.txt"}
-	return Response(stream,mimetype='text/plain',headers=headers)
-@app.route('/dashboard')
-def dashboard():
-	context = PARAMS['context']
-	if 'title' in PARAMS :
-		title = PARAMS['title']
-	else:
-		title = 'Zulu OverWatch'
-	return render_template('dashboard.html',context=context,title=title)
-
-"""
-	This function is designed to trigger learning for anomaly detection
-	@TODO: forward this to a socket i.e non-blocking socket
-"""
-@app.route('/anomalies/get')
-def learn():
-	global CONFIG
-	p = CONFIG['store']['args']
-	class_read = CONFIG['store']['class']['read']	
-	gReader = factory.instance(type=class_read,args=p)
-	d =  gReader.read()
-	
-	if 'learn' in d :
-		info = d['learn']
-		
-		del d['learn']
-	else :
-		info = []
-	r = []
-	if 'id' in request.args:
-		id = request.args['id']
-		d = d[id]
-		params = {}
-		for item in info:
-			
-			label = item['label']
-			params[label] = item
-		
-		#apps = list(set(ML.Extract(['label'],d)))
-		r = []
-		if params :
-			#
-			# If we have parameters available 
-			p = AnomalyDetection()
-			apps = params.keys()			
-			for name in apps :
-				if name not in params:
-					continue
-				_info	= params[name]		
-				try:
-					xo 	= ML.Filter('label',name,d)	
-				except Exception,e:
-					xo = []
-					#print name,e
-				if len(xo) == 0:					
-					continue	
-				xo 	= [xo[ len(xo) -1]]
-				
-				value	= p.predict(xo,_info)[0]
-				
-				if len(value):
-					report = dict(_info,**{'predicton':value})
-					r.append(report)
-				
-				
-				
-			#print app,value
-			#if value is not None:
-			#	r.append(value)
-	
-	return json.dumps(r)
-		
-
-"""
-	This function returns anomalies for a given context or group of processes
-	The information returned is around precision/recall and f-score and parameters
-"""
-@app.route('/anomalies/status')
-def anomalies_status():
-	global CONFIG
-	p = CONFIG['store']['args']
-	class_read = CONFIG['store']['class']['read']	
-	gReader = factory.instance(type=class_read,args=p)
-	d =  gReader.read()
-	if 'learn' in d :
-		info = d['learn']
-		
-		del d['learn']
-	else :
-		info = []
-	print info
-	r = []
-	if 'id' in request.args:
-		id = request.args['id']
-		r = info
-	return json.dumps(r)
-@app.route('/folders')
-def get_folders():
-	global CONFIG
-	p = CONFIG['store']['args']
-	class_read = CONFIG['store']['class']['read']	
-	gReader = factory.instance(type=class_read,args=p)
-	d =  gReader.read()
-	if 'folders' in d:
-		d = d['folders']
-		hosts = set([row[0]['id'] for row in d])
-		m = {}
-		for id in hosts:
-			for row in d:				
-				if id == row[0]['id'] :
-					m[id] = row
-		d = m.values()
-		for row in d:
-			print row[0]['id']
-		# index = len(d) - 1
-		# d = d[index]
-		
-			
-		# m = {}
-		# for row in d :
-			
-		# 	key = row.keys()[0]
-
-		# 	row = row[key]
-		# 	if key not in m:
-		# 		r.append(row)
-		# 		m[key] = len(r) -1
-		# 	else:
-		# 		index = m[key]
-		# 		r[index] = row
-		# d = r
-	else:
-		d = []
-	
-	return json.dumps(d)
-	
-if __name__== '__main__':
-	
-#	ThreadManager.start(CONFIG)	
-	if 'port' not in SYS_ARGS.PARAMS :
-		SYS_ARGS.PARAMS['port'] = 5000
-	PORT = int(SYS_ARGS.PARAMS['port'])
-	app.run(host='0.0.0.0',port=PORT,debug=True,threaded=True)
-
-	

二進制
src/api/static/.DS_Store


+ 0 - 146
src/api/static/css/default.css

@@ -1,146 +0,0 @@
-body, .default {
-	font-size:14px;
-	font-family:sans-serif;
-	font-weight:lighter;
-	padding:10px;
-	
-}
-.jsgrid-grid-header{
-	background: #f9f9f9;
-	background-color: rgb(249, 249, 249);
-	background-image: none;
-	background-repeat: repeat;
-	background-attachment: scroll;
-	background-clip: border-box;
-	background-origin: padding-box;
-	background-position-x: 0%;
-	background-position-y: 0%;
-	background-size: auto auto;
-	max-height: 48px;
-}
-.jsgrid-grid-body {
-	overflow-x:hidden;
-	overflow-y:scroll;
-	-webkit-overflow-scrolling:touch
-}
-
-
-.small {
-	font-family:sans-serif;
-	font-size:12px;
-	font-weight:lighter;
-}
-.bold {font-weight:bold}
-.left {float:left}
-.right{float:right}
-.caption {
-	font-size:22px;
-	margin:2px;
-	padding:2px;
-	height:30px;
-	font-family:sans-serif;
-	font-weight:lighter;
-	
-}
-.button {
-	padding:8px;
-	margin:2px;
-	border-radius:4px;
-	-moz-border-radius:4px;
-	-webkit-border-radius:4px;
-	cursor:pointer;
-}
-.button:hover{
-	background-color:#4682B4 ;
-	color:#ffffff;
-	
-}
-.no-border{ border:1px solid transparent}
-.border { border:1px solid #CAD5E0}
-.border-bottom{	border-bottom:1px solid #CAD5E0;}
-.border-right { border-right:1px solid #CAD5E0;}
-.border-left { border-left:1px solid #CAD5E0;}
-.border-top { border-top:1px solid #CAD5E0;}
-.grid {
-	font-family:sans-serif;
-	font-weight:lighter;
-	
-	margin:4px;
-	padding:4px;
-}
-.grid-half {
-	height:195px;
-	margin:4px;
-	width:98%;
-	padding:4px;
-}
-.grid .fa-check {color:green}
-.grid .fa-times {color:maroon; }
-
-.menu {
-	margin:4px;
-	padding:4px;
-}
-.menu .fa-chevron-right {color:transparent; margin:4px; }
-.menu .menu-item { border:1px solid transparent; cursor:pointer; padding-bottom:4px; margin:2px;}
-.menu .menu-item:hover {
-	border-bottom-color:#4682B4;
-}
-.menu .menu-item:hover .fa-chevron-right { color:#4582b4}
-input[type=text]{
-	padding:4px;
-	margin:4px;
-	outline:0px;
-	border:1px solid transparent;
-	background-color:#f3f3f3;
-	font-size:14px;
-	font-weight:lighter;
-	font-family:sans-serif;
-}
-input[type=text]:focus{
-	border-left-color:#4682B4;
-}
-
-.padding-2x{padding:4px;}
-.margin-2x {margin:4px;}
-.info {
-	
-	margin:4px;
-	width:43%;
-	
-	
-}
-.height-quarter{height:24%;}
-.height-half{height:47%}
-.width-quarter {width:24%}
-.width-half {width:47%; }
-.width-75 {width:72%}
-
-.bad { color:maroon}
-.good{ color:green}
-.fa-warning, .warning{color:orange}
-.number {font-size:42px; font-weight:lighter; padding:2px; margin:2px;}
-
-.action {cursor:pointer; padding:2px; margin:2px; border:1px solid transparent}
-.action:hover { border-bottom-color:#4682B4}
-.shadow{box-shadow: 7px 7px 5px #888888;}
-.gradient {
-  background-image:
-    linear-gradient(
-      #4682b4, #ffffff,#ffffff
-    );
-}
-.simple-gradient {
-background-image: -ms-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
-
-background-image: -moz-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
-
-background-image: -o-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
-
-background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #CAD5E0), color-stop(40, #F3F3F3));
-
-background-image: -webkit-linear-gradient(top, #CAD5E0 0%, #F3F3F3 40%);
-
-background-image: linear-gradient(to bottom, #CAD5E0 0%, #F3F3F3 40%);
-	
-}

+ 0 - 7
src/api/static/css/fa/HELP-US-OUT.txt

@@ -1,7 +0,0 @@
-I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
-Fonticons (https://fonticons.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
-comprehensive icon sets or copy and paste your own.
-
-Please. Check it out.
-
--Dave Gandy

File diff suppressed because it is too large
+ 0 - 2086
src/api/static/css/fa/css/font-awesome.css


File diff suppressed because it is too large
+ 0 - 4
src/api/static/css/fa/css/font-awesome.min.css


File diff suppressed because it is too large
+ 0 - 1122
src/api/static/css/fa/font-awesome-animation.css


二進制
src/api/static/css/fa/fonts/FontAwesome.otf


二進制
src/api/static/css/fa/fonts/fontawesome-webfont.eot


File diff suppressed because it is too large
+ 0 - 655
src/api/static/css/fa/fonts/fontawesome-webfont.svg


二進制
src/api/static/css/fa/fonts/fontawesome-webfont.ttf


二進制
src/api/static/css/fa/fonts/fontawesome-webfont.woff


二進制
src/api/static/css/fa/fonts/fontawesome-webfont.woff2


+ 0 - 34
src/api/static/css/fa/less/animated.less

@@ -1,34 +0,0 @@
-// Animated Icons
-// --------------------------
-
-.@{fa-css-prefix}-spin {
-  -webkit-animation: fa-spin 2s infinite linear;
-          animation: fa-spin 2s infinite linear;
-}
-
-.@{fa-css-prefix}-pulse {
-  -webkit-animation: fa-spin 1s infinite steps(8);
-          animation: fa-spin 1s infinite steps(8);
-}
-
-@-webkit-keyframes fa-spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-            transform: rotate(0deg);
-  }
-  100% {
-    -webkit-transform: rotate(359deg);
-            transform: rotate(359deg);
-  }
-}
-
-@keyframes fa-spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-            transform: rotate(0deg);
-  }
-  100% {
-    -webkit-transform: rotate(359deg);
-            transform: rotate(359deg);
-  }
-}

+ 0 - 25
src/api/static/css/fa/less/bordered-pulled.less

@@ -1,25 +0,0 @@
-// Bordered & Pulled
-// -------------------------
-
-.@{fa-css-prefix}-border {
-  padding: .2em .25em .15em;
-  border: solid .08em @fa-border-color;
-  border-radius: .1em;
-}
-
-.@{fa-css-prefix}-pull-left { float: left; }
-.@{fa-css-prefix}-pull-right { float: right; }
-
-.@{fa-css-prefix} {
-  &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
-  &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
-}
-
-/* Deprecated as of 4.4.0 */
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-.@{fa-css-prefix} {
-  &.pull-left { margin-right: .3em; }
-  &.pull-right { margin-left: .3em; }
-}

+ 0 - 12
src/api/static/css/fa/less/core.less

@@ -1,12 +0,0 @@
-// Base Class Definition
-// -------------------------
-
-.@{fa-css-prefix} {
-  display: inline-block;
-  font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
-  font-size: inherit; // can't have font-size inherit on line above, so need to override
-  text-rendering: auto; // optimizelegibility throws things off #1094
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-
-}

+ 0 - 6
src/api/static/css/fa/less/fixed-width.less

@@ -1,6 +0,0 @@
-// Fixed Width Icons
-// -------------------------
-.@{fa-css-prefix}-fw {
-  width: (18em / 14);
-  text-align: center;
-}

+ 0 - 17
src/api/static/css/fa/less/font-awesome.less

@@ -1,17 +0,0 @@
-/*!
- *  Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-
-@import "variables.less";
-@import "mixins.less";
-@import "path.less";
-@import "core.less";
-@import "larger.less";
-@import "fixed-width.less";
-@import "list.less";
-@import "bordered-pulled.less";
-@import "animated.less";
-@import "rotated-flipped.less";
-@import "stacked.less";
-@import "icons.less";

+ 0 - 697
src/api/static/css/fa/less/icons.less

@@ -1,697 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
-   readers do not read off random characters that represent icons */
-
-.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }
-.@{fa-css-prefix}-music:before { content: @fa-var-music; }
-.@{fa-css-prefix}-search:before { content: @fa-var-search; }
-.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }
-.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }
-.@{fa-css-prefix}-star:before { content: @fa-var-star; }
-.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }
-.@{fa-css-prefix}-user:before { content: @fa-var-user; }
-.@{fa-css-prefix}-film:before { content: @fa-var-film; }
-.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }
-.@{fa-css-prefix}-th:before { content: @fa-var-th; }
-.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }
-.@{fa-css-prefix}-check:before { content: @fa-var-check; }
-.@{fa-css-prefix}-remove:before,
-.@{fa-css-prefix}-close:before,
-.@{fa-css-prefix}-times:before { content: @fa-var-times; }
-.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }
-.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }
-.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }
-.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }
-.@{fa-css-prefix}-gear:before,
-.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }
-.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }
-.@{fa-css-prefix}-home:before { content: @fa-var-home; }
-.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }
-.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }
-.@{fa-css-prefix}-road:before { content: @fa-var-road; }
-.@{fa-css-prefix}-download:before { content: @fa-var-download; }
-.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }
-.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }
-.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }
-.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }
-.@{fa-css-prefix}-rotate-right:before,
-.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }
-.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }
-.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
-.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }
-.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }
-.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }
-.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }
-.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }
-.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }
-.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }
-.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }
-.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }
-.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }
-.@{fa-css-prefix}-book:before { content: @fa-var-book; }
-.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }
-.@{fa-css-prefix}-print:before { content: @fa-var-print; }
-.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }
-.@{fa-css-prefix}-font:before { content: @fa-var-font; }
-.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }
-.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }
-.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }
-.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }
-.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
-.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }
-.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }
-.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }
-.@{fa-css-prefix}-list:before { content: @fa-var-list; }
-.@{fa-css-prefix}-dedent:before,
-.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }
-.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }
-.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }
-.@{fa-css-prefix}-photo:before,
-.@{fa-css-prefix}-image:before,
-.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }
-.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }
-.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }
-.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }
-.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }
-.@{fa-css-prefix}-edit:before,
-.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }
-.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }
-.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }
-.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }
-.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }
-.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }
-.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }
-.@{fa-css-prefix}-play:before { content: @fa-var-play; }
-.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }
-.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }
-.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }
-.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }
-.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }
-.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }
-.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }
-.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }
-.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }
-.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }
-.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
-.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
-.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
-.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
-.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }
-.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }
-.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }
-.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }
-.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }
-.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }
-.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }
-.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }
-.@{fa-css-prefix}-mail-forward:before,
-.@{fa-css-prefix}-share:before { content: @fa-var-share; }
-.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }
-.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }
-.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
-.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }
-.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }
-.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }
-.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }
-.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }
-.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }
-.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
-.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }
-.@{fa-css-prefix}-warning:before,
-.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }
-.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }
-.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }
-.@{fa-css-prefix}-random:before { content: @fa-var-random; }
-.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }
-.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }
-.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }
-.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }
-.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }
-.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }
-.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }
-.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }
-.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }
-.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }
-.@{fa-css-prefix}-bar-chart-o:before,
-.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; }
-.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }
-.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }
-.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }
-.@{fa-css-prefix}-key:before { content: @fa-var-key; }
-.@{fa-css-prefix}-gears:before,
-.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
-.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }
-.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }
-.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }
-.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }
-.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }
-.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
-.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }
-.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }
-.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }
-.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }
-.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }
-.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }
-.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }
-.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }
-.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }
-.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
-.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
-.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
-.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
-.@{fa-css-prefix}-facebook-f:before,
-.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
-.@{fa-css-prefix}-github:before { content: @fa-var-github; }
-.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
-.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
-.@{fa-css-prefix}-feed:before,
-.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
-.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
-.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
-.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
-.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }
-.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }
-.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }
-.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }
-.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }
-.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }
-.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }
-.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }
-.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }
-.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
-.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }
-.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
-.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }
-.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }
-.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }
-.@{fa-css-prefix}-group:before,
-.@{fa-css-prefix}-users:before { content: @fa-var-users; }
-.@{fa-css-prefix}-chain:before,
-.@{fa-css-prefix}-link:before { content: @fa-var-link; }
-.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
-.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }
-.@{fa-css-prefix}-cut:before,
-.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }
-.@{fa-css-prefix}-copy:before,
-.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }
-.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }
-.@{fa-css-prefix}-save:before,
-.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }
-.@{fa-css-prefix}-square:before { content: @fa-var-square; }
-.@{fa-css-prefix}-navicon:before,
-.@{fa-css-prefix}-reorder:before,
-.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }
-.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
-.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }
-.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }
-.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }
-.@{fa-css-prefix}-table:before { content: @fa-var-table; }
-.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }
-.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }
-.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }
-.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }
-.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }
-.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }
-.@{fa-css-prefix}-money:before { content: @fa-var-money; }
-.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }
-.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }
-.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }
-.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }
-.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }
-.@{fa-css-prefix}-unsorted:before,
-.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }
-.@{fa-css-prefix}-sort-down:before,
-.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }
-.@{fa-css-prefix}-sort-up:before,
-.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }
-.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
-.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }
-.@{fa-css-prefix}-rotate-left:before,
-.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
-.@{fa-css-prefix}-legal:before,
-.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }
-.@{fa-css-prefix}-dashboard:before,
-.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }
-.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }
-.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }
-.@{fa-css-prefix}-flash:before,
-.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }
-.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }
-.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }
-.@{fa-css-prefix}-paste:before,
-.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }
-.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }
-.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }
-.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }
-.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }
-.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }
-.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }
-.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }
-.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }
-.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }
-.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }
-.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }
-.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }
-.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }
-.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }
-.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }
-.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }
-.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }
-.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }
-.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }
-.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }
-.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }
-.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }
-.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }
-.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }
-.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }
-.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }
-.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }
-.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
-.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
-.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }
-.@{fa-css-prefix}-mobile-phone:before,
-.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }
-.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }
-.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
-.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }
-.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }
-.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
-.@{fa-css-prefix}-mail-reply:before,
-.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }
-.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }
-.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }
-.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }
-.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }
-.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }
-.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }
-.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }
-.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }
-.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }
-.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }
-.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }
-.@{fa-css-prefix}-code:before { content: @fa-var-code; }
-.@{fa-css-prefix}-mail-reply-all:before,
-.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }
-.@{fa-css-prefix}-star-half-empty:before,
-.@{fa-css-prefix}-star-half-full:before,
-.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }
-.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }
-.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }
-.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }
-.@{fa-css-prefix}-unlink:before,
-.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }
-.@{fa-css-prefix}-question:before { content: @fa-var-question; }
-.@{fa-css-prefix}-info:before { content: @fa-var-info; }
-.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }
-.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }
-.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }
-.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }
-.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }
-.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }
-.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }
-.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }
-.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }
-.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }
-.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
-.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }
-.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }
-.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }
-.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }
-.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }
-.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }
-.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }
-.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }
-.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }
-.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }
-.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }
-.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }
-.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }
-.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }
-.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }
-.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }
-.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }
-.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }
-.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }
-.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }
-.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }
-.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }
-.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }
-.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }
-.@{fa-css-prefix}-toggle-down:before,
-.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }
-.@{fa-css-prefix}-toggle-up:before,
-.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }
-.@{fa-css-prefix}-toggle-right:before,
-.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }
-.@{fa-css-prefix}-euro:before,
-.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }
-.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }
-.@{fa-css-prefix}-dollar:before,
-.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }
-.@{fa-css-prefix}-rupee:before,
-.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }
-.@{fa-css-prefix}-cny:before,
-.@{fa-css-prefix}-rmb:before,
-.@{fa-css-prefix}-yen:before,
-.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }
-.@{fa-css-prefix}-ruble:before,
-.@{fa-css-prefix}-rouble:before,
-.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }
-.@{fa-css-prefix}-won:before,
-.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }
-.@{fa-css-prefix}-bitcoin:before,
-.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }
-.@{fa-css-prefix}-file:before { content: @fa-var-file; }
-.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }
-.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }
-.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }
-.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }
-.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }
-.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }
-.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }
-.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }
-.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }
-.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }
-.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }
-.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }
-.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }
-.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }
-.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }
-.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }
-.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
-.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }
-.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }
-.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }
-.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }
-.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }
-.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }
-.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }
-.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }
-.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }
-.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }
-.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }
-.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }
-.@{fa-css-prefix}-android:before { content: @fa-var-android; }
-.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }
-.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }
-.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }
-.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }
-.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
-.@{fa-css-prefix}-female:before { content: @fa-var-female; }
-.@{fa-css-prefix}-male:before { content: @fa-var-male; }
-.@{fa-css-prefix}-gittip:before,
-.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }
-.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
-.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
-.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
-.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }
-.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }
-.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }
-.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }
-.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }
-.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }
-.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }
-.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }
-.@{fa-css-prefix}-toggle-left:before,
-.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }
-.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }
-.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }
-.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }
-.@{fa-css-prefix}-turkish-lira:before,
-.@{fa-css-prefix}-try:before { content: @fa-var-try; }
-.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }
-.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }
-.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }
-.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }
-.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }
-.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }
-.@{fa-css-prefix}-institution:before,
-.@{fa-css-prefix}-bank:before,
-.@{fa-css-prefix}-university:before { content: @fa-var-university; }
-.@{fa-css-prefix}-mortar-board:before,
-.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }
-.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }
-.@{fa-css-prefix}-google:before { content: @fa-var-google; }
-.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }
-.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }
-.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }
-.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }
-.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }
-.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }
-.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }
-.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }
-.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }
-.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }
-.@{fa-css-prefix}-language:before { content: @fa-var-language; }
-.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }
-.@{fa-css-prefix}-building:before { content: @fa-var-building; }
-.@{fa-css-prefix}-child:before { content: @fa-var-child; }
-.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }
-.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; }
-.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }
-.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }
-.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }
-.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }
-.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }
-.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }
-.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }
-.@{fa-css-prefix}-automobile:before,
-.@{fa-css-prefix}-car:before { content: @fa-var-car; }
-.@{fa-css-prefix}-cab:before,
-.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }
-.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }
-.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }
-.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }
-.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }
-.@{fa-css-prefix}-database:before { content: @fa-var-database; }
-.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; }
-.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; }
-.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; }
-.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; }
-.@{fa-css-prefix}-file-photo-o:before,
-.@{fa-css-prefix}-file-picture-o:before,
-.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; }
-.@{fa-css-prefix}-file-zip-o:before,
-.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; }
-.@{fa-css-prefix}-file-sound-o:before,
-.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; }
-.@{fa-css-prefix}-file-movie-o:before,
-.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; }
-.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; }
-.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }
-.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }
-.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }
-.@{fa-css-prefix}-life-bouy:before,
-.@{fa-css-prefix}-life-buoy:before,
-.@{fa-css-prefix}-life-saver:before,
-.@{fa-css-prefix}-support:before,
-.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
-.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }
-.@{fa-css-prefix}-ra:before,
-.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }
-.@{fa-css-prefix}-ge:before,
-.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }
-.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }
-.@{fa-css-prefix}-git:before { content: @fa-var-git; }
-.@{fa-css-prefix}-y-combinator-square:before,
-.@{fa-css-prefix}-yc-square:before,
-.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }
-.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }
-.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }
-.@{fa-css-prefix}-wechat:before,
-.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }
-.@{fa-css-prefix}-send:before,
-.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }
-.@{fa-css-prefix}-send-o:before,
-.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }
-.@{fa-css-prefix}-history:before { content: @fa-var-history; }
-.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }
-.@{fa-css-prefix}-header:before { content: @fa-var-header; }
-.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }
-.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; }
-.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }
-.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }
-.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }
-.@{fa-css-prefix}-soccer-ball-o:before,
-.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; }
-.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }
-.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }
-.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }
-.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }
-.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }
-.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }
-.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; }
-.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }
-.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }
-.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }
-.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }
-.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }
-.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }
-.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }
-.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }
-.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }
-.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }
-.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }
-.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; }
-.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }
-.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }
-.@{fa-css-prefix}-at:before { content: @fa-var-at; }
-.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; }
-.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }
-.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }
-.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; }
-.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; }
-.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; }
-.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }
-.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }
-.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }
-.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }
-.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }
-.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }
-.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }
-.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }
-.@{fa-css-prefix}-cc:before { content: @fa-var-cc; }
-.@{fa-css-prefix}-shekel:before,
-.@{fa-css-prefix}-sheqel:before,
-.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }
-.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }
-.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }
-.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }
-.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }
-.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }
-.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }
-.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }
-.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }
-.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }
-.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }
-.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }
-.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }
-.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }
-.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }
-.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }
-.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }
-.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }
-.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }
-.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }
-.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }
-.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }
-.@{fa-css-prefix}-intersex:before,
-.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }
-.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }
-.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }
-.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }
-.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }
-.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }
-.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }
-.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }
-.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }
-.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; }
-.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }
-.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }
-.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }
-.@{fa-css-prefix}-server:before { content: @fa-var-server; }
-.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }
-.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }
-.@{fa-css-prefix}-hotel:before,
-.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }
-.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }
-.@{fa-css-prefix}-train:before { content: @fa-var-train; }
-.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }
-.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }
-.@{fa-css-prefix}-yc:before,
-.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; }
-.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; }
-.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }
-.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }
-.@{fa-css-prefix}-battery-4:before,
-.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }
-.@{fa-css-prefix}-battery-3:before,
-.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }
-.@{fa-css-prefix}-battery-2:before,
-.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; }
-.@{fa-css-prefix}-battery-1:before,
-.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; }
-.@{fa-css-prefix}-battery-0:before,
-.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; }
-.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; }
-.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; }
-.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; }
-.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; }
-.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; }
-.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; }
-.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }
-.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }
-.@{fa-css-prefix}-clone:before { content: @fa-var-clone; }
-.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; }
-.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; }
-.@{fa-css-prefix}-hourglass-1:before,
-.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; }
-.@{fa-css-prefix}-hourglass-2:before,
-.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; }
-.@{fa-css-prefix}-hourglass-3:before,
-.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; }
-.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; }
-.@{fa-css-prefix}-hand-grab-o:before,
-.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; }
-.@{fa-css-prefix}-hand-stop-o:before,
-.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; }
-.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; }
-.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; }
-.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; }
-.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; }
-.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; }
-.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; }
-.@{fa-css-prefix}-registered:before { content: @fa-var-registered; }
-.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; }
-.@{fa-css-prefix}-gg:before { content: @fa-var-gg; }
-.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; }
-.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; }
-.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; }
-.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; }
-.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; }
-.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; }
-.@{fa-css-prefix}-safari:before { content: @fa-var-safari; }
-.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; }
-.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; }
-.@{fa-css-prefix}-opera:before { content: @fa-var-opera; }
-.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; }
-.@{fa-css-prefix}-tv:before,
-.@{fa-css-prefix}-television:before { content: @fa-var-television; }
-.@{fa-css-prefix}-contao:before { content: @fa-var-contao; }
-.@{fa-css-prefix}-500px:before { content: @fa-var-500px; }
-.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; }
-.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; }
-.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; }
-.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; }
-.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; }
-.@{fa-css-prefix}-industry:before { content: @fa-var-industry; }
-.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; }
-.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; }
-.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; }
-.@{fa-css-prefix}-map:before { content: @fa-var-map; }
-.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; }
-.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; }
-.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; }
-.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; }
-.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; }
-.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; }
-.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; }
-.@{fa-css-prefix}-edge:before { content: @fa-var-edge; }
-.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; }
-.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; }
-.@{fa-css-prefix}-modx:before { content: @fa-var-modx; }
-.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; }
-.@{fa-css-prefix}-usb:before { content: @fa-var-usb; }
-.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; }
-.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; }
-.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; }
-.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; }
-.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; }
-.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; }
-.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; }
-.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; }
-.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; }
-.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; }
-.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; }
-.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; }
-.@{fa-css-prefix}-percent:before { content: @fa-var-percent; }

+ 0 - 13
src/api/static/css/fa/less/larger.less

@@ -1,13 +0,0 @@
-// Icon Sizes
-// -------------------------
-
-/* makes the font 33% larger relative to the icon container */
-.@{fa-css-prefix}-lg {
-  font-size: (4em / 3);
-  line-height: (3em / 4);
-  vertical-align: -15%;
-}
-.@{fa-css-prefix}-2x { font-size: 2em; }
-.@{fa-css-prefix}-3x { font-size: 3em; }
-.@{fa-css-prefix}-4x { font-size: 4em; }
-.@{fa-css-prefix}-5x { font-size: 5em; }

+ 0 - 19
src/api/static/css/fa/less/list.less

@@ -1,19 +0,0 @@
-// List Icons
-// -------------------------
-
-.@{fa-css-prefix}-ul {
-  padding-left: 0;
-  margin-left: @fa-li-width;
-  list-style-type: none;
-  > li { position: relative; }
-}
-.@{fa-css-prefix}-li {
-  position: absolute;
-  left: -@fa-li-width;
-  width: @fa-li-width;
-  top: (2em / 14);
-  text-align: center;
-  &.@{fa-css-prefix}-lg {
-    left: (-@fa-li-width + (4em / 14));
-  }
-}

+ 0 - 26
src/api/static/css/fa/less/mixins.less

@@ -1,26 +0,0 @@
-// Mixins
-// --------------------------
-
-.fa-icon() {
-  display: inline-block;
-  font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
-  font-size: inherit; // can't have font-size inherit on line above, so need to override
-  text-rendering: auto; // optimizelegibility throws things off #1094
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-
-}
-
-.fa-icon-rotate(@degrees, @rotation) {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
-  -webkit-transform: rotate(@degrees);
-      -ms-transform: rotate(@degrees);
-          transform: rotate(@degrees);
-}
-
-.fa-icon-flip(@horiz, @vert, @rotation) {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
-  -webkit-transform: scale(@horiz, @vert);
-      -ms-transform: scale(@horiz, @vert);
-          transform: scale(@horiz, @vert);
-}

+ 0 - 15
src/api/static/css/fa/less/path.less

@@ -1,15 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
-  font-family: 'FontAwesome';
-  src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
-  src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
-    url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
-    url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
-    url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
-    url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
-//  src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
-  font-weight: normal;
-  font-style: normal;
-}

+ 0 - 20
src/api/static/css/fa/less/rotated-flipped.less

@@ -1,20 +0,0 @@
-// Rotated & Flipped Icons
-// -------------------------
-
-.@{fa-css-prefix}-rotate-90  { .fa-icon-rotate(90deg, 1);  }
-.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
-.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
-
-.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
-.@{fa-css-prefix}-flip-vertical   { .fa-icon-flip(1, -1, 2); }
-
-// Hook for IE8-9
-// -------------------------
-
-:root .@{fa-css-prefix}-rotate-90,
-:root .@{fa-css-prefix}-rotate-180,
-:root .@{fa-css-prefix}-rotate-270,
-:root .@{fa-css-prefix}-flip-horizontal,
-:root .@{fa-css-prefix}-flip-vertical {
-  filter: none;
-}

+ 0 - 20
src/api/static/css/fa/less/stacked.less

@@ -1,20 +0,0 @@
-// Stacked Icons
-// -------------------------
-
-.@{fa-css-prefix}-stack {
-  position: relative;
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
-  position: absolute;
-  left: 0;
-  width: 100%;
-  text-align: center;
-}
-.@{fa-css-prefix}-stack-1x { line-height: inherit; }
-.@{fa-css-prefix}-stack-2x { font-size: 2em; }
-.@{fa-css-prefix}-inverse { color: @fa-inverse; }

+ 0 - 708
src/api/static/css/fa/less/variables.less

@@ -1,708 +0,0 @@
-// Variables
-// --------------------------
-
-@fa-font-path:        "../fonts";
-@fa-font-size-base:   14px;
-@fa-line-height-base: 1;
-//@fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts"; // for referencing Bootstrap CDN font files directly
-@fa-css-prefix:       fa;
-@fa-version:          "4.5.0";
-@fa-border-color:     #eee;
-@fa-inverse:          #fff;
-@fa-li-width:         (30em / 14);
-
-@fa-var-500px: "\f26e";
-@fa-var-adjust: "\f042";
-@fa-var-adn: "\f170";
-@fa-var-align-center: "\f037";
-@fa-var-align-justify: "\f039";
-@fa-var-align-left: "\f036";
-@fa-var-align-right: "\f038";
-@fa-var-amazon: "\f270";
-@fa-var-ambulance: "\f0f9";
-@fa-var-anchor: "\f13d";
-@fa-var-android: "\f17b";
-@fa-var-angellist: "\f209";
-@fa-var-angle-double-down: "\f103";
-@fa-var-angle-double-left: "\f100";
-@fa-var-angle-double-right: "\f101";
-@fa-var-angle-double-up: "\f102";
-@fa-var-angle-down: "\f107";
-@fa-var-angle-left: "\f104";
-@fa-var-angle-right: "\f105";
-@fa-var-angle-up: "\f106";
-@fa-var-apple: "\f179";
-@fa-var-archive: "\f187";
-@fa-var-area-chart: "\f1fe";
-@fa-var-arrow-circle-down: "\f0ab";
-@fa-var-arrow-circle-left: "\f0a8";
-@fa-var-arrow-circle-o-down: "\f01a";
-@fa-var-arrow-circle-o-left: "\f190";
-@fa-var-arrow-circle-o-right: "\f18e";
-@fa-var-arrow-circle-o-up: "\f01b";
-@fa-var-arrow-circle-right: "\f0a9";
-@fa-var-arrow-circle-up: "\f0aa";
-@fa-var-arrow-down: "\f063";
-@fa-var-arrow-left: "\f060";
-@fa-var-arrow-right: "\f061";
-@fa-var-arrow-up: "\f062";
-@fa-var-arrows: "\f047";
-@fa-var-arrows-alt: "\f0b2";
-@fa-var-arrows-h: "\f07e";
-@fa-var-arrows-v: "\f07d";
-@fa-var-asterisk: "\f069";
-@fa-var-at: "\f1fa";
-@fa-var-automobile: "\f1b9";
-@fa-var-backward: "\f04a";
-@fa-var-balance-scale: "\f24e";
-@fa-var-ban: "\f05e";
-@fa-var-bank: "\f19c";
-@fa-var-bar-chart: "\f080";
-@fa-var-bar-chart-o: "\f080";
-@fa-var-barcode: "\f02a";
-@fa-var-bars: "\f0c9";
-@fa-var-battery-0: "\f244";
-@fa-var-battery-1: "\f243";
-@fa-var-battery-2: "\f242";
-@fa-var-battery-3: "\f241";
-@fa-var-battery-4: "\f240";
-@fa-var-battery-empty: "\f244";
-@fa-var-battery-full: "\f240";
-@fa-var-battery-half: "\f242";
-@fa-var-battery-quarter: "\f243";
-@fa-var-battery-three-quarters: "\f241";
-@fa-var-bed: "\f236";
-@fa-var-beer: "\f0fc";
-@fa-var-behance: "\f1b4";
-@fa-var-behance-square: "\f1b5";
-@fa-var-bell: "\f0f3";
-@fa-var-bell-o: "\f0a2";
-@fa-var-bell-slash: "\f1f6";
-@fa-var-bell-slash-o: "\f1f7";
-@fa-var-bicycle: "\f206";
-@fa-var-binoculars: "\f1e5";
-@fa-var-birthday-cake: "\f1fd";
-@fa-var-bitbucket: "\f171";
-@fa-var-bitbucket-square: "\f172";
-@fa-var-bitcoin: "\f15a";
-@fa-var-black-tie: "\f27e";
-@fa-var-bluetooth: "\f293";
-@fa-var-bluetooth-b: "\f294";
-@fa-var-bold: "\f032";
-@fa-var-bolt: "\f0e7";
-@fa-var-bomb: "\f1e2";
-@fa-var-book: "\f02d";
-@fa-var-bookmark: "\f02e";
-@fa-var-bookmark-o: "\f097";
-@fa-var-briefcase: "\f0b1";
-@fa-var-btc: "\f15a";
-@fa-var-bug: "\f188";
-@fa-var-building: "\f1ad";
-@fa-var-building-o: "\f0f7";
-@fa-var-bullhorn: "\f0a1";
-@fa-var-bullseye: "\f140";
-@fa-var-bus: "\f207";
-@fa-var-buysellads: "\f20d";
-@fa-var-cab: "\f1ba";
-@fa-var-calculator: "\f1ec";
-@fa-var-calendar: "\f073";
-@fa-var-calendar-check-o: "\f274";
-@fa-var-calendar-minus-o: "\f272";
-@fa-var-calendar-o: "\f133";
-@fa-var-calendar-plus-o: "\f271";
-@fa-var-calendar-times-o: "\f273";
-@fa-var-camera: "\f030";
-@fa-var-camera-retro: "\f083";
-@fa-var-car: "\f1b9";
-@fa-var-caret-down: "\f0d7";
-@fa-var-caret-left: "\f0d9";
-@fa-var-caret-right: "\f0da";
-@fa-var-caret-square-o-down: "\f150";
-@fa-var-caret-square-o-left: "\f191";
-@fa-var-caret-square-o-right: "\f152";
-@fa-var-caret-square-o-up: "\f151";
-@fa-var-caret-up: "\f0d8";
-@fa-var-cart-arrow-down: "\f218";
-@fa-var-cart-plus: "\f217";
-@fa-var-cc: "\f20a";
-@fa-var-cc-amex: "\f1f3";
-@fa-var-cc-diners-club: "\f24c";
-@fa-var-cc-discover: "\f1f2";
-@fa-var-cc-jcb: "\f24b";
-@fa-var-cc-mastercard: "\f1f1";
-@fa-var-cc-paypal: "\f1f4";
-@fa-var-cc-stripe: "\f1f5";
-@fa-var-cc-visa: "\f1f0";
-@fa-var-certificate: "\f0a3";
-@fa-var-chain: "\f0c1";
-@fa-var-chain-broken: "\f127";
-@fa-var-check: "\f00c";
-@fa-var-check-circle: "\f058";
-@fa-var-check-circle-o: "\f05d";
-@fa-var-check-square: "\f14a";
-@fa-var-check-square-o: "\f046";
-@fa-var-chevron-circle-down: "\f13a";
-@fa-var-chevron-circle-left: "\f137";
-@fa-var-chevron-circle-right: "\f138";
-@fa-var-chevron-circle-up: "\f139";
-@fa-var-chevron-down: "\f078";
-@fa-var-chevron-left: "\f053";
-@fa-var-chevron-right: "\f054";
-@fa-var-chevron-up: "\f077";
-@fa-var-child: "\f1ae";
-@fa-var-chrome: "\f268";
-@fa-var-circle: "\f111";
-@fa-var-circle-o: "\f10c";
-@fa-var-circle-o-notch: "\f1ce";
-@fa-var-circle-thin: "\f1db";
-@fa-var-clipboard: "\f0ea";
-@fa-var-clock-o: "\f017";
-@fa-var-clone: "\f24d";
-@fa-var-close: "\f00d";
-@fa-var-cloud: "\f0c2";
-@fa-var-cloud-download: "\f0ed";
-@fa-var-cloud-upload: "\f0ee";
-@fa-var-cny: "\f157";
-@fa-var-code: "\f121";
-@fa-var-code-fork: "\f126";
-@fa-var-codepen: "\f1cb";
-@fa-var-codiepie: "\f284";
-@fa-var-coffee: "\f0f4";
-@fa-var-cog: "\f013";
-@fa-var-cogs: "\f085";
-@fa-var-columns: "\f0db";
-@fa-var-comment: "\f075";
-@fa-var-comment-o: "\f0e5";
-@fa-var-commenting: "\f27a";
-@fa-var-commenting-o: "\f27b";
-@fa-var-comments: "\f086";
-@fa-var-comments-o: "\f0e6";
-@fa-var-compass: "\f14e";
-@fa-var-compress: "\f066";
-@fa-var-connectdevelop: "\f20e";
-@fa-var-contao: "\f26d";
-@fa-var-copy: "\f0c5";
-@fa-var-copyright: "\f1f9";
-@fa-var-creative-commons: "\f25e";
-@fa-var-credit-card: "\f09d";
-@fa-var-credit-card-alt: "\f283";
-@fa-var-crop: "\f125";
-@fa-var-crosshairs: "\f05b";
-@fa-var-css3: "\f13c";
-@fa-var-cube: "\f1b2";
-@fa-var-cubes: "\f1b3";
-@fa-var-cut: "\f0c4";
-@fa-var-cutlery: "\f0f5";
-@fa-var-dashboard: "\f0e4";
-@fa-var-dashcube: "\f210";
-@fa-var-database: "\f1c0";
-@fa-var-dedent: "\f03b";
-@fa-var-delicious: "\f1a5";
-@fa-var-desktop: "\f108";
-@fa-var-deviantart: "\f1bd";
-@fa-var-diamond: "\f219";
-@fa-var-digg: "\f1a6";
-@fa-var-dollar: "\f155";
-@fa-var-dot-circle-o: "\f192";
-@fa-var-download: "\f019";
-@fa-var-dribbble: "\f17d";
-@fa-var-dropbox: "\f16b";
-@fa-var-drupal: "\f1a9";
-@fa-var-edge: "\f282";
-@fa-var-edit: "\f044";
-@fa-var-eject: "\f052";
-@fa-var-ellipsis-h: "\f141";
-@fa-var-ellipsis-v: "\f142";
-@fa-var-empire: "\f1d1";
-@fa-var-envelope: "\f0e0";
-@fa-var-envelope-o: "\f003";
-@fa-var-envelope-square: "\f199";
-@fa-var-eraser: "\f12d";
-@fa-var-eur: "\f153";
-@fa-var-euro: "\f153";
-@fa-var-exchange: "\f0ec";
-@fa-var-exclamation: "\f12a";
-@fa-var-exclamation-circle: "\f06a";
-@fa-var-exclamation-triangle: "\f071";
-@fa-var-expand: "\f065";
-@fa-var-expeditedssl: "\f23e";
-@fa-var-external-link: "\f08e";
-@fa-var-external-link-square: "\f14c";
-@fa-var-eye: "\f06e";
-@fa-var-eye-slash: "\f070";
-@fa-var-eyedropper: "\f1fb";
-@fa-var-facebook: "\f09a";
-@fa-var-facebook-f: "\f09a";
-@fa-var-facebook-official: "\f230";
-@fa-var-facebook-square: "\f082";
-@fa-var-fast-backward: "\f049";
-@fa-var-fast-forward: "\f050";
-@fa-var-fax: "\f1ac";
-@fa-var-feed: "\f09e";
-@fa-var-female: "\f182";
-@fa-var-fighter-jet: "\f0fb";
-@fa-var-file: "\f15b";
-@fa-var-file-archive-o: "\f1c6";
-@fa-var-file-audio-o: "\f1c7";
-@fa-var-file-code-o: "\f1c9";
-@fa-var-file-excel-o: "\f1c3";
-@fa-var-file-image-o: "\f1c5";
-@fa-var-file-movie-o: "\f1c8";
-@fa-var-file-o: "\f016";
-@fa-var-file-pdf-o: "\f1c1";
-@fa-var-file-photo-o: "\f1c5";
-@fa-var-file-picture-o: "\f1c5";
-@fa-var-file-powerpoint-o: "\f1c4";
-@fa-var-file-sound-o: "\f1c7";
-@fa-var-file-text: "\f15c";
-@fa-var-file-text-o: "\f0f6";
-@fa-var-file-video-o: "\f1c8";
-@fa-var-file-word-o: "\f1c2";
-@fa-var-file-zip-o: "\f1c6";
-@fa-var-files-o: "\f0c5";
-@fa-var-film: "\f008";
-@fa-var-filter: "\f0b0";
-@fa-var-fire: "\f06d";
-@fa-var-fire-extinguisher: "\f134";
-@fa-var-firefox: "\f269";
-@fa-var-flag: "\f024";
-@fa-var-flag-checkered: "\f11e";
-@fa-var-flag-o: "\f11d";
-@fa-var-flash: "\f0e7";
-@fa-var-flask: "\f0c3";
-@fa-var-flickr: "\f16e";
-@fa-var-floppy-o: "\f0c7";
-@fa-var-folder: "\f07b";
-@fa-var-folder-o: "\f114";
-@fa-var-folder-open: "\f07c";
-@fa-var-folder-open-o: "\f115";
-@fa-var-font: "\f031";
-@fa-var-fonticons: "\f280";
-@fa-var-fort-awesome: "\f286";
-@fa-var-forumbee: "\f211";
-@fa-var-forward: "\f04e";
-@fa-var-foursquare: "\f180";
-@fa-var-frown-o: "\f119";
-@fa-var-futbol-o: "\f1e3";
-@fa-var-gamepad: "\f11b";
-@fa-var-gavel: "\f0e3";
-@fa-var-gbp: "\f154";
-@fa-var-ge: "\f1d1";
-@fa-var-gear: "\f013";
-@fa-var-gears: "\f085";
-@fa-var-genderless: "\f22d";
-@fa-var-get-pocket: "\f265";
-@fa-var-gg: "\f260";
-@fa-var-gg-circle: "\f261";
-@fa-var-gift: "\f06b";
-@fa-var-git: "\f1d3";
-@fa-var-git-square: "\f1d2";
-@fa-var-github: "\f09b";
-@fa-var-github-alt: "\f113";
-@fa-var-github-square: "\f092";
-@fa-var-gittip: "\f184";
-@fa-var-glass: "\f000";
-@fa-var-globe: "\f0ac";
-@fa-var-google: "\f1a0";
-@fa-var-google-plus: "\f0d5";
-@fa-var-google-plus-square: "\f0d4";
-@fa-var-google-wallet: "\f1ee";
-@fa-var-graduation-cap: "\f19d";
-@fa-var-gratipay: "\f184";
-@fa-var-group: "\f0c0";
-@fa-var-h-square: "\f0fd";
-@fa-var-hacker-news: "\f1d4";
-@fa-var-hand-grab-o: "\f255";
-@fa-var-hand-lizard-o: "\f258";
-@fa-var-hand-o-down: "\f0a7";
-@fa-var-hand-o-left: "\f0a5";
-@fa-var-hand-o-right: "\f0a4";
-@fa-var-hand-o-up: "\f0a6";
-@fa-var-hand-paper-o: "\f256";
-@fa-var-hand-peace-o: "\f25b";
-@fa-var-hand-pointer-o: "\f25a";
-@fa-var-hand-rock-o: "\f255";
-@fa-var-hand-scissors-o: "\f257";
-@fa-var-hand-spock-o: "\f259";
-@fa-var-hand-stop-o: "\f256";
-@fa-var-hashtag: "\f292";
-@fa-var-hdd-o: "\f0a0";
-@fa-var-header: "\f1dc";
-@fa-var-headphones: "\f025";
-@fa-var-heart: "\f004";
-@fa-var-heart-o: "\f08a";
-@fa-var-heartbeat: "\f21e";
-@fa-var-history: "\f1da";
-@fa-var-home: "\f015";
-@fa-var-hospital-o: "\f0f8";
-@fa-var-hotel: "\f236";
-@fa-var-hourglass: "\f254";
-@fa-var-hourglass-1: "\f251";
-@fa-var-hourglass-2: "\f252";
-@fa-var-hourglass-3: "\f253";
-@fa-var-hourglass-end: "\f253";
-@fa-var-hourglass-half: "\f252";
-@fa-var-hourglass-o: "\f250";
-@fa-var-hourglass-start: "\f251";
-@fa-var-houzz: "\f27c";
-@fa-var-html5: "\f13b";
-@fa-var-i-cursor: "\f246";
-@fa-var-ils: "\f20b";
-@fa-var-image: "\f03e";
-@fa-var-inbox: "\f01c";
-@fa-var-indent: "\f03c";
-@fa-var-industry: "\f275";
-@fa-var-info: "\f129";
-@fa-var-info-circle: "\f05a";
-@fa-var-inr: "\f156";
-@fa-var-instagram: "\f16d";
-@fa-var-institution: "\f19c";
-@fa-var-internet-explorer: "\f26b";
-@fa-var-intersex: "\f224";
-@fa-var-ioxhost: "\f208";
-@fa-var-italic: "\f033";
-@fa-var-joomla: "\f1aa";
-@fa-var-jpy: "\f157";
-@fa-var-jsfiddle: "\f1cc";
-@fa-var-key: "\f084";
-@fa-var-keyboard-o: "\f11c";
-@fa-var-krw: "\f159";
-@fa-var-language: "\f1ab";
-@fa-var-laptop: "\f109";
-@fa-var-lastfm: "\f202";
-@fa-var-lastfm-square: "\f203";
-@fa-var-leaf: "\f06c";
-@fa-var-leanpub: "\f212";
-@fa-var-legal: "\f0e3";
-@fa-var-lemon-o: "\f094";
-@fa-var-level-down: "\f149";
-@fa-var-level-up: "\f148";
-@fa-var-life-bouy: "\f1cd";
-@fa-var-life-buoy: "\f1cd";
-@fa-var-life-ring: "\f1cd";
-@fa-var-life-saver: "\f1cd";
-@fa-var-lightbulb-o: "\f0eb";
-@fa-var-line-chart: "\f201";
-@fa-var-link: "\f0c1";
-@fa-var-linkedin: "\f0e1";
-@fa-var-linkedin-square: "\f08c";
-@fa-var-linux: "\f17c";
-@fa-var-list: "\f03a";
-@fa-var-list-alt: "\f022";
-@fa-var-list-ol: "\f0cb";
-@fa-var-list-ul: "\f0ca";
-@fa-var-location-arrow: "\f124";
-@fa-var-lock: "\f023";
-@fa-var-long-arrow-down: "\f175";
-@fa-var-long-arrow-left: "\f177";
-@fa-var-long-arrow-right: "\f178";
-@fa-var-long-arrow-up: "\f176";
-@fa-var-magic: "\f0d0";
-@fa-var-magnet: "\f076";
-@fa-var-mail-forward: "\f064";
-@fa-var-mail-reply: "\f112";
-@fa-var-mail-reply-all: "\f122";
-@fa-var-male: "\f183";
-@fa-var-map: "\f279";
-@fa-var-map-marker: "\f041";
-@fa-var-map-o: "\f278";
-@fa-var-map-pin: "\f276";
-@fa-var-map-signs: "\f277";
-@fa-var-mars: "\f222";
-@fa-var-mars-double: "\f227";
-@fa-var-mars-stroke: "\f229";
-@fa-var-mars-stroke-h: "\f22b";
-@fa-var-mars-stroke-v: "\f22a";
-@fa-var-maxcdn: "\f136";
-@fa-var-meanpath: "\f20c";
-@fa-var-medium: "\f23a";
-@fa-var-medkit: "\f0fa";
-@fa-var-meh-o: "\f11a";
-@fa-var-mercury: "\f223";
-@fa-var-microphone: "\f130";
-@fa-var-microphone-slash: "\f131";
-@fa-var-minus: "\f068";
-@fa-var-minus-circle: "\f056";
-@fa-var-minus-square: "\f146";
-@fa-var-minus-square-o: "\f147";
-@fa-var-mixcloud: "\f289";
-@fa-var-mobile: "\f10b";
-@fa-var-mobile-phone: "\f10b";
-@fa-var-modx: "\f285";
-@fa-var-money: "\f0d6";
-@fa-var-moon-o: "\f186";
-@fa-var-mortar-board: "\f19d";
-@fa-var-motorcycle: "\f21c";
-@fa-var-mouse-pointer: "\f245";
-@fa-var-music: "\f001";
-@fa-var-navicon: "\f0c9";
-@fa-var-neuter: "\f22c";
-@fa-var-newspaper-o: "\f1ea";
-@fa-var-object-group: "\f247";
-@fa-var-object-ungroup: "\f248";
-@fa-var-odnoklassniki: "\f263";
-@fa-var-odnoklassniki-square: "\f264";
-@fa-var-opencart: "\f23d";
-@fa-var-openid: "\f19b";
-@fa-var-opera: "\f26a";
-@fa-var-optin-monster: "\f23c";
-@fa-var-outdent: "\f03b";
-@fa-var-pagelines: "\f18c";
-@fa-var-paint-brush: "\f1fc";
-@fa-var-paper-plane: "\f1d8";
-@fa-var-paper-plane-o: "\f1d9";
-@fa-var-paperclip: "\f0c6";
-@fa-var-paragraph: "\f1dd";
-@fa-var-paste: "\f0ea";
-@fa-var-pause: "\f04c";
-@fa-var-pause-circle: "\f28b";
-@fa-var-pause-circle-o: "\f28c";
-@fa-var-paw: "\f1b0";
-@fa-var-paypal: "\f1ed";
-@fa-var-pencil: "\f040";
-@fa-var-pencil-square: "\f14b";
-@fa-var-pencil-square-o: "\f044";
-@fa-var-percent: "\f295";
-@fa-var-phone: "\f095";
-@fa-var-phone-square: "\f098";
-@fa-var-photo: "\f03e";
-@fa-var-picture-o: "\f03e";
-@fa-var-pie-chart: "\f200";
-@fa-var-pied-piper: "\f1a7";
-@fa-var-pied-piper-alt: "\f1a8";
-@fa-var-pinterest: "\f0d2";
-@fa-var-pinterest-p: "\f231";
-@fa-var-pinterest-square: "\f0d3";
-@fa-var-plane: "\f072";
-@fa-var-play: "\f04b";
-@fa-var-play-circle: "\f144";
-@fa-var-play-circle-o: "\f01d";
-@fa-var-plug: "\f1e6";
-@fa-var-plus: "\f067";
-@fa-var-plus-circle: "\f055";
-@fa-var-plus-square: "\f0fe";
-@fa-var-plus-square-o: "\f196";
-@fa-var-power-off: "\f011";
-@fa-var-print: "\f02f";
-@fa-var-product-hunt: "\f288";
-@fa-var-puzzle-piece: "\f12e";
-@fa-var-qq: "\f1d6";
-@fa-var-qrcode: "\f029";
-@fa-var-question: "\f128";
-@fa-var-question-circle: "\f059";
-@fa-var-quote-left: "\f10d";
-@fa-var-quote-right: "\f10e";
-@fa-var-ra: "\f1d0";
-@fa-var-random: "\f074";
-@fa-var-rebel: "\f1d0";
-@fa-var-recycle: "\f1b8";
-@fa-var-reddit: "\f1a1";
-@fa-var-reddit-alien: "\f281";
-@fa-var-reddit-square: "\f1a2";
-@fa-var-refresh: "\f021";
-@fa-var-registered: "\f25d";
-@fa-var-remove: "\f00d";
-@fa-var-renren: "\f18b";
-@fa-var-reorder: "\f0c9";
-@fa-var-repeat: "\f01e";
-@fa-var-reply: "\f112";
-@fa-var-reply-all: "\f122";
-@fa-var-retweet: "\f079";
-@fa-var-rmb: "\f157";
-@fa-var-road: "\f018";
-@fa-var-rocket: "\f135";
-@fa-var-rotate-left: "\f0e2";
-@fa-var-rotate-right: "\f01e";
-@fa-var-rouble: "\f158";
-@fa-var-rss: "\f09e";
-@fa-var-rss-square: "\f143";
-@fa-var-rub: "\f158";
-@fa-var-ruble: "\f158";
-@fa-var-rupee: "\f156";
-@fa-var-safari: "\f267";
-@fa-var-save: "\f0c7";
-@fa-var-scissors: "\f0c4";
-@fa-var-scribd: "\f28a";
-@fa-var-search: "\f002";
-@fa-var-search-minus: "\f010";
-@fa-var-search-plus: "\f00e";
-@fa-var-sellsy: "\f213";
-@fa-var-send: "\f1d8";
-@fa-var-send-o: "\f1d9";
-@fa-var-server: "\f233";
-@fa-var-share: "\f064";
-@fa-var-share-alt: "\f1e0";
-@fa-var-share-alt-square: "\f1e1";
-@fa-var-share-square: "\f14d";
-@fa-var-share-square-o: "\f045";
-@fa-var-shekel: "\f20b";
-@fa-var-sheqel: "\f20b";
-@fa-var-shield: "\f132";
-@fa-var-ship: "\f21a";
-@fa-var-shirtsinbulk: "\f214";
-@fa-var-shopping-bag: "\f290";
-@fa-var-shopping-basket: "\f291";
-@fa-var-shopping-cart: "\f07a";
-@fa-var-sign-in: "\f090";
-@fa-var-sign-out: "\f08b";
-@fa-var-signal: "\f012";
-@fa-var-simplybuilt: "\f215";
-@fa-var-sitemap: "\f0e8";
-@fa-var-skyatlas: "\f216";
-@fa-var-skype: "\f17e";
-@fa-var-slack: "\f198";
-@fa-var-sliders: "\f1de";
-@fa-var-slideshare: "\f1e7";
-@fa-var-smile-o: "\f118";
-@fa-var-soccer-ball-o: "\f1e3";
-@fa-var-sort: "\f0dc";
-@fa-var-sort-alpha-asc: "\f15d";
-@fa-var-sort-alpha-desc: "\f15e";
-@fa-var-sort-amount-asc: "\f160";
-@fa-var-sort-amount-desc: "\f161";
-@fa-var-sort-asc: "\f0de";
-@fa-var-sort-desc: "\f0dd";
-@fa-var-sort-down: "\f0dd";
-@fa-var-sort-numeric-asc: "\f162";
-@fa-var-sort-numeric-desc: "\f163";
-@fa-var-sort-up: "\f0de";
-@fa-var-soundcloud: "\f1be";
-@fa-var-space-shuttle: "\f197";
-@fa-var-spinner: "\f110";
-@fa-var-spoon: "\f1b1";
-@fa-var-spotify: "\f1bc";
-@fa-var-square: "\f0c8";
-@fa-var-square-o: "\f096";
-@fa-var-stack-exchange: "\f18d";
-@fa-var-stack-overflow: "\f16c";
-@fa-var-star: "\f005";
-@fa-var-star-half: "\f089";
-@fa-var-star-half-empty: "\f123";
-@fa-var-star-half-full: "\f123";
-@fa-var-star-half-o: "\f123";
-@fa-var-star-o: "\f006";
-@fa-var-steam: "\f1b6";
-@fa-var-steam-square: "\f1b7";
-@fa-var-step-backward: "\f048";
-@fa-var-step-forward: "\f051";
-@fa-var-stethoscope: "\f0f1";
-@fa-var-sticky-note: "\f249";
-@fa-var-sticky-note-o: "\f24a";
-@fa-var-stop: "\f04d";
-@fa-var-stop-circle: "\f28d";
-@fa-var-stop-circle-o: "\f28e";
-@fa-var-street-view: "\f21d";
-@fa-var-strikethrough: "\f0cc";
-@fa-var-stumbleupon: "\f1a4";
-@fa-var-stumbleupon-circle: "\f1a3";
-@fa-var-subscript: "\f12c";
-@fa-var-subway: "\f239";
-@fa-var-suitcase: "\f0f2";
-@fa-var-sun-o: "\f185";
-@fa-var-superscript: "\f12b";
-@fa-var-support: "\f1cd";
-@fa-var-table: "\f0ce";
-@fa-var-tablet: "\f10a";
-@fa-var-tachometer: "\f0e4";
-@fa-var-tag: "\f02b";
-@fa-var-tags: "\f02c";
-@fa-var-tasks: "\f0ae";
-@fa-var-taxi: "\f1ba";
-@fa-var-television: "\f26c";
-@fa-var-tencent-weibo: "\f1d5";
-@fa-var-terminal: "\f120";
-@fa-var-text-height: "\f034";
-@fa-var-text-width: "\f035";
-@fa-var-th: "\f00a";
-@fa-var-th-large: "\f009";
-@fa-var-th-list: "\f00b";
-@fa-var-thumb-tack: "\f08d";
-@fa-var-thumbs-down: "\f165";
-@fa-var-thumbs-o-down: "\f088";
-@fa-var-thumbs-o-up: "\f087";
-@fa-var-thumbs-up: "\f164";
-@fa-var-ticket: "\f145";
-@fa-var-times: "\f00d";
-@fa-var-times-circle: "\f057";
-@fa-var-times-circle-o: "\f05c";
-@fa-var-tint: "\f043";
-@fa-var-toggle-down: "\f150";
-@fa-var-toggle-left: "\f191";
-@fa-var-toggle-off: "\f204";
-@fa-var-toggle-on: "\f205";
-@fa-var-toggle-right: "\f152";
-@fa-var-toggle-up: "\f151";
-@fa-var-trademark: "\f25c";
-@fa-var-train: "\f238";
-@fa-var-transgender: "\f224";
-@fa-var-transgender-alt: "\f225";
-@fa-var-trash: "\f1f8";
-@fa-var-trash-o: "\f014";
-@fa-var-tree: "\f1bb";
-@fa-var-trello: "\f181";
-@fa-var-tripadvisor: "\f262";
-@fa-var-trophy: "\f091";
-@fa-var-truck: "\f0d1";
-@fa-var-try: "\f195";
-@fa-var-tty: "\f1e4";
-@fa-var-tumblr: "\f173";
-@fa-var-tumblr-square: "\f174";
-@fa-var-turkish-lira: "\f195";
-@fa-var-tv: "\f26c";
-@fa-var-twitch: "\f1e8";
-@fa-var-twitter: "\f099";
-@fa-var-twitter-square: "\f081";
-@fa-var-umbrella: "\f0e9";
-@fa-var-underline: "\f0cd";
-@fa-var-undo: "\f0e2";
-@fa-var-university: "\f19c";
-@fa-var-unlink: "\f127";
-@fa-var-unlock: "\f09c";
-@fa-var-unlock-alt: "\f13e";
-@fa-var-unsorted: "\f0dc";
-@fa-var-upload: "\f093";
-@fa-var-usb: "\f287";
-@fa-var-usd: "\f155";
-@fa-var-user: "\f007";
-@fa-var-user-md: "\f0f0";
-@fa-var-user-plus: "\f234";
-@fa-var-user-secret: "\f21b";
-@fa-var-user-times: "\f235";
-@fa-var-users: "\f0c0";
-@fa-var-venus: "\f221";
-@fa-var-venus-double: "\f226";
-@fa-var-venus-mars: "\f228";
-@fa-var-viacoin: "\f237";
-@fa-var-video-camera: "\f03d";
-@fa-var-vimeo: "\f27d";
-@fa-var-vimeo-square: "\f194";
-@fa-var-vine: "\f1ca";
-@fa-var-vk: "\f189";
-@fa-var-volume-down: "\f027";
-@fa-var-volume-off: "\f026";
-@fa-var-volume-up: "\f028";
-@fa-var-warning: "\f071";
-@fa-var-wechat: "\f1d7";
-@fa-var-weibo: "\f18a";
-@fa-var-weixin: "\f1d7";
-@fa-var-whatsapp: "\f232";
-@fa-var-wheelchair: "\f193";
-@fa-var-wifi: "\f1eb";
-@fa-var-wikipedia-w: "\f266";
-@fa-var-windows: "\f17a";
-@fa-var-won: "\f159";
-@fa-var-wordpress: "\f19a";
-@fa-var-wrench: "\f0ad";
-@fa-var-xing: "\f168";
-@fa-var-xing-square: "\f169";
-@fa-var-y-combinator: "\f23b";
-@fa-var-y-combinator-square: "\f1d4";
-@fa-var-yahoo: "\f19e";
-@fa-var-yc: "\f23b";
-@fa-var-yc-square: "\f1d4";
-@fa-var-yelp: "\f1e9";
-@fa-var-yen: "\f157";
-@fa-var-youtube: "\f167";
-@fa-var-youtube-play: "\f16a";
-@fa-var-youtube-square: "\f166";
-

+ 0 - 34
src/api/static/css/fa/scss/_animated.scss

@@ -1,34 +0,0 @@
-// Spinning Icons
-// --------------------------
-
-.#{$fa-css-prefix}-spin {
-  -webkit-animation: fa-spin 2s infinite linear;
-          animation: fa-spin 2s infinite linear;
-}
-
-.#{$fa-css-prefix}-pulse {
-  -webkit-animation: fa-spin 1s infinite steps(8);
-          animation: fa-spin 1s infinite steps(8);
-}
-
-@-webkit-keyframes fa-spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-            transform: rotate(0deg);
-  }
-  100% {
-    -webkit-transform: rotate(359deg);
-            transform: rotate(359deg);
-  }
-}
-
-@keyframes fa-spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-            transform: rotate(0deg);
-  }
-  100% {
-    -webkit-transform: rotate(359deg);
-            transform: rotate(359deg);
-  }
-}

+ 0 - 25
src/api/static/css/fa/scss/_bordered-pulled.scss

@@ -1,25 +0,0 @@
-// Bordered & Pulled
-// -------------------------
-
-.#{$fa-css-prefix}-border {
-  padding: .2em .25em .15em;
-  border: solid .08em $fa-border-color;
-  border-radius: .1em;
-}
-
-.#{$fa-css-prefix}-pull-left { float: left; }
-.#{$fa-css-prefix}-pull-right { float: right; }
-
-.#{$fa-css-prefix} {
-  &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
-  &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
-}
-
-/* Deprecated as of 4.4.0 */
-.pull-right { float: right; }
-.pull-left { float: left; }
-
-.#{$fa-css-prefix} {
-  &.pull-left { margin-right: .3em; }
-  &.pull-right { margin-left: .3em; }
-}

+ 0 - 12
src/api/static/css/fa/scss/_core.scss

@@ -1,12 +0,0 @@
-// Base Class Definition
-// -------------------------
-
-.#{$fa-css-prefix} {
-  display: inline-block;
-  font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
-  font-size: inherit; // can't have font-size inherit on line above, so need to override
-  text-rendering: auto; // optimizelegibility throws things off #1094
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-
-}

+ 0 - 6
src/api/static/css/fa/scss/_fixed-width.scss

@@ -1,6 +0,0 @@
-// Fixed Width Icons
-// -------------------------
-.#{$fa-css-prefix}-fw {
-  width: (18em / 14);
-  text-align: center;
-}

+ 0 - 697
src/api/static/css/fa/scss/_icons.scss

@@ -1,697 +0,0 @@
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
-   readers do not read off random characters that represent icons */
-
-.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
-.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
-.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
-.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
-.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
-.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
-.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
-.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
-.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
-.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
-.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
-.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
-.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
-.#{$fa-css-prefix}-remove:before,
-.#{$fa-css-prefix}-close:before,
-.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
-.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
-.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
-.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
-.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
-.#{$fa-css-prefix}-gear:before,
-.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
-.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
-.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
-.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
-.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
-.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
-.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
-.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
-.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
-.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
-.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
-.#{$fa-css-prefix}-rotate-right:before,
-.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
-.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
-.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
-.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
-.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
-.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
-.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
-.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
-.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
-.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
-.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
-.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
-.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
-.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
-.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
-.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
-.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
-.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
-.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
-.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
-.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
-.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
-.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
-.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
-.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
-.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
-.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
-.#{$fa-css-prefix}-dedent:before,
-.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
-.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
-.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
-.#{$fa-css-prefix}-photo:before,
-.#{$fa-css-prefix}-image:before,
-.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
-.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
-.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
-.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
-.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
-.#{$fa-css-prefix}-edit:before,
-.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
-.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
-.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
-.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
-.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
-.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
-.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
-.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
-.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
-.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
-.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
-.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
-.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
-.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
-.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
-.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
-.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
-.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
-.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
-.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
-.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
-.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
-.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
-.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
-.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
-.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
-.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
-.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
-.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
-.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
-.#{$fa-css-prefix}-mail-forward:before,
-.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
-.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
-.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
-.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
-.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
-.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
-.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
-.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
-.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
-.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
-.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
-.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
-.#{$fa-css-prefix}-warning:before,
-.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
-.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
-.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
-.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
-.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
-.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
-.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
-.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
-.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
-.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
-.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
-.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
-.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
-.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
-.#{$fa-css-prefix}-bar-chart-o:before,
-.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
-.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
-.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
-.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
-.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
-.#{$fa-css-prefix}-gears:before,
-.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
-.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
-.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
-.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
-.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
-.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
-.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
-.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
-.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
-.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
-.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
-.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
-.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
-.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
-.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
-.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
-.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
-.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
-.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
-.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
-.#{$fa-css-prefix}-facebook-f:before,
-.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
-.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
-.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
-.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
-.#{$fa-css-prefix}-feed:before,
-.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
-.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
-.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
-.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
-.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
-.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
-.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
-.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
-.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
-.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
-.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
-.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
-.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
-.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
-.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
-.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
-.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
-.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
-.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
-.#{$fa-css-prefix}-group:before,
-.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
-.#{$fa-css-prefix}-chain:before,
-.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
-.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
-.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
-.#{$fa-css-prefix}-cut:before,
-.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
-.#{$fa-css-prefix}-copy:before,
-.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
-.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
-.#{$fa-css-prefix}-save:before,
-.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
-.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
-.#{$fa-css-prefix}-navicon:before,
-.#{$fa-css-prefix}-reorder:before,
-.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
-.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
-.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
-.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
-.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
-.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
-.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
-.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
-.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
-.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
-.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
-.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
-.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
-.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
-.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
-.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
-.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
-.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
-.#{$fa-css-prefix}-unsorted:before,
-.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
-.#{$fa-css-prefix}-sort-down:before,
-.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
-.#{$fa-css-prefix}-sort-up:before,
-.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
-.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
-.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
-.#{$fa-css-prefix}-rotate-left:before,
-.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
-.#{$fa-css-prefix}-legal:before,
-.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
-.#{$fa-css-prefix}-dashboard:before,
-.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
-.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
-.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
-.#{$fa-css-prefix}-flash:before,
-.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
-.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
-.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
-.#{$fa-css-prefix}-paste:before,
-.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
-.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
-.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
-.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
-.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
-.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
-.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
-.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
-.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
-.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
-.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
-.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
-.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
-.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
-.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
-.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
-.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
-.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
-.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
-.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
-.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
-.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
-.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
-.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
-.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
-.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
-.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
-.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
-.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
-.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
-.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
-.#{$fa-css-prefix}-mobile-phone:before,
-.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
-.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
-.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
-.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
-.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
-.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
-.#{$fa-css-prefix}-mail-reply:before,
-.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
-.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
-.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
-.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
-.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
-.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
-.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
-.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
-.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
-.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
-.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
-.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
-.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
-.#{$fa-css-prefix}-mail-reply-all:before,
-.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
-.#{$fa-css-prefix}-star-half-empty:before,
-.#{$fa-css-prefix}-star-half-full:before,
-.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
-.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
-.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
-.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
-.#{$fa-css-prefix}-unlink:before,
-.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
-.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
-.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
-.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
-.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
-.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
-.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
-.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
-.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
-.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
-.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
-.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
-.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
-.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
-.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
-.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
-.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
-.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
-.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
-.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
-.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
-.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
-.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
-.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
-.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
-.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
-.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
-.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
-.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
-.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
-.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
-.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
-.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
-.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
-.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
-.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
-.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
-.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
-.#{$fa-css-prefix}-toggle-down:before,
-.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
-.#{$fa-css-prefix}-toggle-up:before,
-.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
-.#{$fa-css-prefix}-toggle-right:before,
-.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
-.#{$fa-css-prefix}-euro:before,
-.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
-.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
-.#{$fa-css-prefix}-dollar:before,
-.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
-.#{$fa-css-prefix}-rupee:before,
-.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
-.#{$fa-css-prefix}-cny:before,
-.#{$fa-css-prefix}-rmb:before,
-.#{$fa-css-prefix}-yen:before,
-.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
-.#{$fa-css-prefix}-ruble:before,
-.#{$fa-css-prefix}-rouble:before,
-.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
-.#{$fa-css-prefix}-won:before,
-.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
-.#{$fa-css-prefix}-bitcoin:before,
-.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
-.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
-.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
-.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
-.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
-.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
-.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
-.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
-.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
-.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
-.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
-.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
-.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
-.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
-.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
-.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
-.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
-.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
-.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
-.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
-.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
-.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
-.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
-.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
-.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
-.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
-.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
-.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
-.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
-.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
-.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
-.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
-.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
-.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
-.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
-.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
-.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
-.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
-.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
-.#{$fa-css-prefix}-gittip:before,
-.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
-.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
-.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
-.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
-.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
-.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
-.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
-.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
-.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
-.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
-.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
-.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
-.#{$fa-css-prefix}-toggle-left:before,
-.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
-.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
-.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
-.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
-.#{$fa-css-prefix}-turkish-lira:before,
-.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
-.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
-.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
-.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
-.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
-.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
-.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
-.#{$fa-css-prefix}-institution:before,
-.#{$fa-css-prefix}-bank:before,
-.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
-.#{$fa-css-prefix}-mortar-board:before,
-.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
-.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
-.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
-.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
-.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
-.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
-.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
-.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
-.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
-.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
-.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
-.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
-.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
-.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
-.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
-.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
-.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
-.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
-.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
-.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
-.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
-.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
-.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
-.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
-.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
-.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
-.#{$fa-css-prefix}-automobile:before,
-.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
-.#{$fa-css-prefix}-cab:before,
-.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
-.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
-.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
-.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
-.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
-.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
-.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
-.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
-.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
-.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
-.#{$fa-css-prefix}-file-photo-o:before,
-.#{$fa-css-prefix}-file-picture-o:before,
-.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
-.#{$fa-css-prefix}-file-zip-o:before,
-.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
-.#{$fa-css-prefix}-file-sound-o:before,
-.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
-.#{$fa-css-prefix}-file-movie-o:before,
-.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
-.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
-.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
-.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
-.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
-.#{$fa-css-prefix}-life-bouy:before,
-.#{$fa-css-prefix}-life-buoy:before,
-.#{$fa-css-prefix}-life-saver:before,
-.#{$fa-css-prefix}-support:before,
-.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
-.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
-.#{$fa-css-prefix}-ra:before,
-.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
-.#{$fa-css-prefix}-ge:before,
-.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
-.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
-.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
-.#{$fa-css-prefix}-y-combinator-square:before,
-.#{$fa-css-prefix}-yc-square:before,
-.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
-.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
-.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
-.#{$fa-css-prefix}-wechat:before,
-.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
-.#{$fa-css-prefix}-send:before,
-.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
-.#{$fa-css-prefix}-send-o:before,
-.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
-.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
-.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
-.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
-.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
-.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
-.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
-.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
-.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
-.#{$fa-css-prefix}-soccer-ball-o:before,
-.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
-.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
-.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
-.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
-.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
-.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
-.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
-.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
-.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
-.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
-.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
-.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
-.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
-.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
-.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
-.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
-.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
-.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
-.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
-.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
-.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
-.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
-.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
-.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
-.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
-.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
-.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
-.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
-.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
-.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
-.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
-.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
-.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
-.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
-.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
-.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
-.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
-.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
-.#{$fa-css-prefix}-shekel:before,
-.#{$fa-css-prefix}-sheqel:before,
-.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
-.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
-.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
-.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
-.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
-.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
-.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
-.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
-.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
-.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
-.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
-.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
-.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
-.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
-.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
-.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
-.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
-.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
-.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
-.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
-.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
-.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
-.#{$fa-css-prefix}-intersex:before,
-.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
-.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
-.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
-.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
-.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
-.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
-.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
-.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
-.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
-.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
-.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
-.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
-.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
-.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
-.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
-.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
-.#{$fa-css-prefix}-hotel:before,
-.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
-.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
-.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
-.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
-.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
-.#{$fa-css-prefix}-yc:before,
-.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
-.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
-.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
-.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
-.#{$fa-css-prefix}-battery-4:before,
-.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
-.#{$fa-css-prefix}-battery-3:before,
-.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
-.#{$fa-css-prefix}-battery-2:before,
-.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
-.#{$fa-css-prefix}-battery-1:before,
-.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
-.#{$fa-css-prefix}-battery-0:before,
-.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
-.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
-.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
-.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
-.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
-.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
-.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
-.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
-.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
-.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
-.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
-.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
-.#{$fa-css-prefix}-hourglass-1:before,
-.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
-.#{$fa-css-prefix}-hourglass-2:before,
-.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
-.#{$fa-css-prefix}-hourglass-3:before,
-.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
-.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
-.#{$fa-css-prefix}-hand-grab-o:before,
-.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
-.#{$fa-css-prefix}-hand-stop-o:before,
-.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
-.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
-.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
-.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
-.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
-.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
-.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
-.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
-.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
-.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
-.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
-.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
-.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
-.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
-.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
-.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
-.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
-.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
-.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
-.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
-.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
-.#{$fa-css-prefix}-tv:before,
-.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
-.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
-.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
-.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
-.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
-.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
-.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
-.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
-.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
-.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
-.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
-.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
-.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
-.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
-.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
-.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
-.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
-.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
-.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
-.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
-.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
-.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
-.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
-.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
-.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
-.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
-.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
-.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
-.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
-.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
-.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
-.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
-.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
-.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
-.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
-.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
-.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
-.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
-.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }

+ 0 - 13
src/api/static/css/fa/scss/_larger.scss

@@ -1,13 +0,0 @@
-// Icon Sizes
-// -------------------------
-
-/* makes the font 33% larger relative to the icon container */
-.#{$fa-css-prefix}-lg {
-  font-size: (4em / 3);
-  line-height: (3em / 4);
-  vertical-align: -15%;
-}
-.#{$fa-css-prefix}-2x { font-size: 2em; }
-.#{$fa-css-prefix}-3x { font-size: 3em; }
-.#{$fa-css-prefix}-4x { font-size: 4em; }
-.#{$fa-css-prefix}-5x { font-size: 5em; }

+ 0 - 19
src/api/static/css/fa/scss/_list.scss

@@ -1,19 +0,0 @@
-// List Icons
-// -------------------------
-
-.#{$fa-css-prefix}-ul {
-  padding-left: 0;
-  margin-left: $fa-li-width;
-  list-style-type: none;
-  > li { position: relative; }
-}
-.#{$fa-css-prefix}-li {
-  position: absolute;
-  left: -$fa-li-width;
-  width: $fa-li-width;
-  top: (2em / 14);
-  text-align: center;
-  &.#{$fa-css-prefix}-lg {
-    left: -$fa-li-width + (4em / 14);
-  }
-}

+ 0 - 26
src/api/static/css/fa/scss/_mixins.scss

@@ -1,26 +0,0 @@
-// Mixins
-// --------------------------
-
-@mixin fa-icon() {
-  display: inline-block;
-  font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
-  font-size: inherit; // can't have font-size inherit on line above, so need to override
-  text-rendering: auto; // optimizelegibility throws things off #1094
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-
-}
-
-@mixin fa-icon-rotate($degrees, $rotation) {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-  -webkit-transform: rotate($degrees);
-      -ms-transform: rotate($degrees);
-          transform: rotate($degrees);
-}
-
-@mixin fa-icon-flip($horiz, $vert, $rotation) {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-  -webkit-transform: scale($horiz, $vert);
-      -ms-transform: scale($horiz, $vert);
-          transform: scale($horiz, $vert);
-}

+ 0 - 15
src/api/static/css/fa/scss/_path.scss

@@ -1,15 +0,0 @@
-/* FONT PATH
- * -------------------------- */
-
-@font-face {
-  font-family: 'FontAwesome';
-  src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
-  src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
-    url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
-    url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
-    url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
-    url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
-//  src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
-  font-weight: normal;
-  font-style: normal;
-}

+ 0 - 20
src/api/static/css/fa/scss/_rotated-flipped.scss

@@ -1,20 +0,0 @@
-// Rotated & Flipped Icons
-// -------------------------
-
-.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, 1);  }
-.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
-.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
-
-.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
-.#{$fa-css-prefix}-flip-vertical   { @include fa-icon-flip(1, -1, 2); }
-
-// Hook for IE8-9
-// -------------------------
-
-:root .#{$fa-css-prefix}-rotate-90,
-:root .#{$fa-css-prefix}-rotate-180,
-:root .#{$fa-css-prefix}-rotate-270,
-:root .#{$fa-css-prefix}-flip-horizontal,
-:root .#{$fa-css-prefix}-flip-vertical {
-  filter: none;
-}

+ 0 - 20
src/api/static/css/fa/scss/_stacked.scss

@@ -1,20 +0,0 @@
-// Stacked Icons
-// -------------------------
-
-.#{$fa-css-prefix}-stack {
-  position: relative;
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
-  position: absolute;
-  left: 0;
-  width: 100%;
-  text-align: center;
-}
-.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
-.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
-.#{$fa-css-prefix}-inverse { color: $fa-inverse; }

+ 0 - 708
src/api/static/css/fa/scss/_variables.scss

@@ -1,708 +0,0 @@
-// Variables
-// --------------------------
-
-$fa-font-path:        "../fonts" !default;
-$fa-font-size-base:   14px !default;
-$fa-line-height-base: 1 !default;
-//$fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly
-$fa-css-prefix:       fa !default;
-$fa-version:          "4.5.0" !default;
-$fa-border-color:     #eee !default;
-$fa-inverse:          #fff !default;
-$fa-li-width:         (30em / 14) !default;
-
-$fa-var-500px: "\f26e";
-$fa-var-adjust: "\f042";
-$fa-var-adn: "\f170";
-$fa-var-align-center: "\f037";
-$fa-var-align-justify: "\f039";
-$fa-var-align-left: "\f036";
-$fa-var-align-right: "\f038";
-$fa-var-amazon: "\f270";
-$fa-var-ambulance: "\f0f9";
-$fa-var-anchor: "\f13d";
-$fa-var-android: "\f17b";
-$fa-var-angellist: "\f209";
-$fa-var-angle-double-down: "\f103";
-$fa-var-angle-double-left: "\f100";
-$fa-var-angle-double-right: "\f101";
-$fa-var-angle-double-up: "\f102";
-$fa-var-angle-down: "\f107";
-$fa-var-angle-left: "\f104";
-$fa-var-angle-right: "\f105";
-$fa-var-angle-up: "\f106";
-$fa-var-apple: "\f179";
-$fa-var-archive: "\f187";
-$fa-var-area-chart: "\f1fe";
-$fa-var-arrow-circle-down: "\f0ab";
-$fa-var-arrow-circle-left: "\f0a8";
-$fa-var-arrow-circle-o-down: "\f01a";
-$fa-var-arrow-circle-o-left: "\f190";
-$fa-var-arrow-circle-o-right: "\f18e";
-$fa-var-arrow-circle-o-up: "\f01b";
-$fa-var-arrow-circle-right: "\f0a9";
-$fa-var-arrow-circle-up: "\f0aa";
-$fa-var-arrow-down: "\f063";
-$fa-var-arrow-left: "\f060";
-$fa-var-arrow-right: "\f061";
-$fa-var-arrow-up: "\f062";
-$fa-var-arrows: "\f047";
-$fa-var-arrows-alt: "\f0b2";
-$fa-var-arrows-h: "\f07e";
-$fa-var-arrows-v: "\f07d";
-$fa-var-asterisk: "\f069";
-$fa-var-at: "\f1fa";
-$fa-var-automobile: "\f1b9";
-$fa-var-backward: "\f04a";
-$fa-var-balance-scale: "\f24e";
-$fa-var-ban: "\f05e";
-$fa-var-bank: "\f19c";
-$fa-var-bar-chart: "\f080";
-$fa-var-bar-chart-o: "\f080";
-$fa-var-barcode: "\f02a";
-$fa-var-bars: "\f0c9";
-$fa-var-battery-0: "\f244";
-$fa-var-battery-1: "\f243";
-$fa-var-battery-2: "\f242";
-$fa-var-battery-3: "\f241";
-$fa-var-battery-4: "\f240";
-$fa-var-battery-empty: "\f244";
-$fa-var-battery-full: "\f240";
-$fa-var-battery-half: "\f242";
-$fa-var-battery-quarter: "\f243";
-$fa-var-battery-three-quarters: "\f241";
-$fa-var-bed: "\f236";
-$fa-var-beer: "\f0fc";
-$fa-var-behance: "\f1b4";
-$fa-var-behance-square: "\f1b5";
-$fa-var-bell: "\f0f3";
-$fa-var-bell-o: "\f0a2";
-$fa-var-bell-slash: "\f1f6";
-$fa-var-bell-slash-o: "\f1f7";
-$fa-var-bicycle: "\f206";
-$fa-var-binoculars: "\f1e5";
-$fa-var-birthday-cake: "\f1fd";
-$fa-var-bitbucket: "\f171";
-$fa-var-bitbucket-square: "\f172";
-$fa-var-bitcoin: "\f15a";
-$fa-var-black-tie: "\f27e";
-$fa-var-bluetooth: "\f293";
-$fa-var-bluetooth-b: "\f294";
-$fa-var-bold: "\f032";
-$fa-var-bolt: "\f0e7";
-$fa-var-bomb: "\f1e2";
-$fa-var-book: "\f02d";
-$fa-var-bookmark: "\f02e";
-$fa-var-bookmark-o: "\f097";
-$fa-var-briefcase: "\f0b1";
-$fa-var-btc: "\f15a";
-$fa-var-bug: "\f188";
-$fa-var-building: "\f1ad";
-$fa-var-building-o: "\f0f7";
-$fa-var-bullhorn: "\f0a1";
-$fa-var-bullseye: "\f140";
-$fa-var-bus: "\f207";
-$fa-var-buysellads: "\f20d";
-$fa-var-cab: "\f1ba";
-$fa-var-calculator: "\f1ec";
-$fa-var-calendar: "\f073";
-$fa-var-calendar-check-o: "\f274";
-$fa-var-calendar-minus-o: "\f272";
-$fa-var-calendar-o: "\f133";
-$fa-var-calendar-plus-o: "\f271";
-$fa-var-calendar-times-o: "\f273";
-$fa-var-camera: "\f030";
-$fa-var-camera-retro: "\f083";
-$fa-var-car: "\f1b9";
-$fa-var-caret-down: "\f0d7";
-$fa-var-caret-left: "\f0d9";
-$fa-var-caret-right: "\f0da";
-$fa-var-caret-square-o-down: "\f150";
-$fa-var-caret-square-o-left: "\f191";
-$fa-var-caret-square-o-right: "\f152";
-$fa-var-caret-square-o-up: "\f151";
-$fa-var-caret-up: "\f0d8";
-$fa-var-cart-arrow-down: "\f218";
-$fa-var-cart-plus: "\f217";
-$fa-var-cc: "\f20a";
-$fa-var-cc-amex: "\f1f3";
-$fa-var-cc-diners-club: "\f24c";
-$fa-var-cc-discover: "\f1f2";
-$fa-var-cc-jcb: "\f24b";
-$fa-var-cc-mastercard: "\f1f1";
-$fa-var-cc-paypal: "\f1f4";
-$fa-var-cc-stripe: "\f1f5";
-$fa-var-cc-visa: "\f1f0";
-$fa-var-certificate: "\f0a3";
-$fa-var-chain: "\f0c1";
-$fa-var-chain-broken: "\f127";
-$fa-var-check: "\f00c";
-$fa-var-check-circle: "\f058";
-$fa-var-check-circle-o: "\f05d";
-$fa-var-check-square: "\f14a";
-$fa-var-check-square-o: "\f046";
-$fa-var-chevron-circle-down: "\f13a";
-$fa-var-chevron-circle-left: "\f137";
-$fa-var-chevron-circle-right: "\f138";
-$fa-var-chevron-circle-up: "\f139";
-$fa-var-chevron-down: "\f078";
-$fa-var-chevron-left: "\f053";
-$fa-var-chevron-right: "\f054";
-$fa-var-chevron-up: "\f077";
-$fa-var-child: "\f1ae";
-$fa-var-chrome: "\f268";
-$fa-var-circle: "\f111";
-$fa-var-circle-o: "\f10c";
-$fa-var-circle-o-notch: "\f1ce";
-$fa-var-circle-thin: "\f1db";
-$fa-var-clipboard: "\f0ea";
-$fa-var-clock-o: "\f017";
-$fa-var-clone: "\f24d";
-$fa-var-close: "\f00d";
-$fa-var-cloud: "\f0c2";
-$fa-var-cloud-download: "\f0ed";
-$fa-var-cloud-upload: "\f0ee";
-$fa-var-cny: "\f157";
-$fa-var-code: "\f121";
-$fa-var-code-fork: "\f126";
-$fa-var-codepen: "\f1cb";
-$fa-var-codiepie: "\f284";
-$fa-var-coffee: "\f0f4";
-$fa-var-cog: "\f013";
-$fa-var-cogs: "\f085";
-$fa-var-columns: "\f0db";
-$fa-var-comment: "\f075";
-$fa-var-comment-o: "\f0e5";
-$fa-var-commenting: "\f27a";
-$fa-var-commenting-o: "\f27b";
-$fa-var-comments: "\f086";
-$fa-var-comments-o: "\f0e6";
-$fa-var-compass: "\f14e";
-$fa-var-compress: "\f066";
-$fa-var-connectdevelop: "\f20e";
-$fa-var-contao: "\f26d";
-$fa-var-copy: "\f0c5";
-$fa-var-copyright: "\f1f9";
-$fa-var-creative-commons: "\f25e";
-$fa-var-credit-card: "\f09d";
-$fa-var-credit-card-alt: "\f283";
-$fa-var-crop: "\f125";
-$fa-var-crosshairs: "\f05b";
-$fa-var-css3: "\f13c";
-$fa-var-cube: "\f1b2";
-$fa-var-cubes: "\f1b3";
-$fa-var-cut: "\f0c4";
-$fa-var-cutlery: "\f0f5";
-$fa-var-dashboard: "\f0e4";
-$fa-var-dashcube: "\f210";
-$fa-var-database: "\f1c0";
-$fa-var-dedent: "\f03b";
-$fa-var-delicious: "\f1a5";
-$fa-var-desktop: "\f108";
-$fa-var-deviantart: "\f1bd";
-$fa-var-diamond: "\f219";
-$fa-var-digg: "\f1a6";
-$fa-var-dollar: "\f155";
-$fa-var-dot-circle-o: "\f192";
-$fa-var-download: "\f019";
-$fa-var-dribbble: "\f17d";
-$fa-var-dropbox: "\f16b";
-$fa-var-drupal: "\f1a9";
-$fa-var-edge: "\f282";
-$fa-var-edit: "\f044";
-$fa-var-eject: "\f052";
-$fa-var-ellipsis-h: "\f141";
-$fa-var-ellipsis-v: "\f142";
-$fa-var-empire: "\f1d1";
-$fa-var-envelope: "\f0e0";
-$fa-var-envelope-o: "\f003";
-$fa-var-envelope-square: "\f199";
-$fa-var-eraser: "\f12d";
-$fa-var-eur: "\f153";
-$fa-var-euro: "\f153";
-$fa-var-exchange: "\f0ec";
-$fa-var-exclamation: "\f12a";
-$fa-var-exclamation-circle: "\f06a";
-$fa-var-exclamation-triangle: "\f071";
-$fa-var-expand: "\f065";
-$fa-var-expeditedssl: "\f23e";
-$fa-var-external-link: "\f08e";
-$fa-var-external-link-square: "\f14c";
-$fa-var-eye: "\f06e";
-$fa-var-eye-slash: "\f070";
-$fa-var-eyedropper: "\f1fb";
-$fa-var-facebook: "\f09a";
-$fa-var-facebook-f: "\f09a";
-$fa-var-facebook-official: "\f230";
-$fa-var-facebook-square: "\f082";
-$fa-var-fast-backward: "\f049";
-$fa-var-fast-forward: "\f050";
-$fa-var-fax: "\f1ac";
-$fa-var-feed: "\f09e";
-$fa-var-female: "\f182";
-$fa-var-fighter-jet: "\f0fb";
-$fa-var-file: "\f15b";
-$fa-var-file-archive-o: "\f1c6";
-$fa-var-file-audio-o: "\f1c7";
-$fa-var-file-code-o: "\f1c9";
-$fa-var-file-excel-o: "\f1c3";
-$fa-var-file-image-o: "\f1c5";
-$fa-var-file-movie-o: "\f1c8";
-$fa-var-file-o: "\f016";
-$fa-var-file-pdf-o: "\f1c1";
-$fa-var-file-photo-o: "\f1c5";
-$fa-var-file-picture-o: "\f1c5";
-$fa-var-file-powerpoint-o: "\f1c4";
-$fa-var-file-sound-o: "\f1c7";
-$fa-var-file-text: "\f15c";
-$fa-var-file-text-o: "\f0f6";
-$fa-var-file-video-o: "\f1c8";
-$fa-var-file-word-o: "\f1c2";
-$fa-var-file-zip-o: "\f1c6";
-$fa-var-files-o: "\f0c5";
-$fa-var-film: "\f008";
-$fa-var-filter: "\f0b0";
-$fa-var-fire: "\f06d";
-$fa-var-fire-extinguisher: "\f134";
-$fa-var-firefox: "\f269";
-$fa-var-flag: "\f024";
-$fa-var-flag-checkered: "\f11e";
-$fa-var-flag-o: "\f11d";
-$fa-var-flash: "\f0e7";
-$fa-var-flask: "\f0c3";
-$fa-var-flickr: "\f16e";
-$fa-var-floppy-o: "\f0c7";
-$fa-var-folder: "\f07b";
-$fa-var-folder-o: "\f114";
-$fa-var-folder-open: "\f07c";
-$fa-var-folder-open-o: "\f115";
-$fa-var-font: "\f031";
-$fa-var-fonticons: "\f280";
-$fa-var-fort-awesome: "\f286";
-$fa-var-forumbee: "\f211";
-$fa-var-forward: "\f04e";
-$fa-var-foursquare: "\f180";
-$fa-var-frown-o: "\f119";
-$fa-var-futbol-o: "\f1e3";
-$fa-var-gamepad: "\f11b";
-$fa-var-gavel: "\f0e3";
-$fa-var-gbp: "\f154";
-$fa-var-ge: "\f1d1";
-$fa-var-gear: "\f013";
-$fa-var-gears: "\f085";
-$fa-var-genderless: "\f22d";
-$fa-var-get-pocket: "\f265";
-$fa-var-gg: "\f260";
-$fa-var-gg-circle: "\f261";
-$fa-var-gift: "\f06b";
-$fa-var-git: "\f1d3";
-$fa-var-git-square: "\f1d2";
-$fa-var-github: "\f09b";
-$fa-var-github-alt: "\f113";
-$fa-var-github-square: "\f092";
-$fa-var-gittip: "\f184";
-$fa-var-glass: "\f000";
-$fa-var-globe: "\f0ac";
-$fa-var-google: "\f1a0";
-$fa-var-google-plus: "\f0d5";
-$fa-var-google-plus-square: "\f0d4";
-$fa-var-google-wallet: "\f1ee";
-$fa-var-graduation-cap: "\f19d";
-$fa-var-gratipay: "\f184";
-$fa-var-group: "\f0c0";
-$fa-var-h-square: "\f0fd";
-$fa-var-hacker-news: "\f1d4";
-$fa-var-hand-grab-o: "\f255";
-$fa-var-hand-lizard-o: "\f258";
-$fa-var-hand-o-down: "\f0a7";
-$fa-var-hand-o-left: "\f0a5";
-$fa-var-hand-o-right: "\f0a4";
-$fa-var-hand-o-up: "\f0a6";
-$fa-var-hand-paper-o: "\f256";
-$fa-var-hand-peace-o: "\f25b";
-$fa-var-hand-pointer-o: "\f25a";
-$fa-var-hand-rock-o: "\f255";
-$fa-var-hand-scissors-o: "\f257";
-$fa-var-hand-spock-o: "\f259";
-$fa-var-hand-stop-o: "\f256";
-$fa-var-hashtag: "\f292";
-$fa-var-hdd-o: "\f0a0";
-$fa-var-header: "\f1dc";
-$fa-var-headphones: "\f025";
-$fa-var-heart: "\f004";
-$fa-var-heart-o: "\f08a";
-$fa-var-heartbeat: "\f21e";
-$fa-var-history: "\f1da";
-$fa-var-home: "\f015";
-$fa-var-hospital-o: "\f0f8";
-$fa-var-hotel: "\f236";
-$fa-var-hourglass: "\f254";
-$fa-var-hourglass-1: "\f251";
-$fa-var-hourglass-2: "\f252";
-$fa-var-hourglass-3: "\f253";
-$fa-var-hourglass-end: "\f253";
-$fa-var-hourglass-half: "\f252";
-$fa-var-hourglass-o: "\f250";
-$fa-var-hourglass-start: "\f251";
-$fa-var-houzz: "\f27c";
-$fa-var-html5: "\f13b";
-$fa-var-i-cursor: "\f246";
-$fa-var-ils: "\f20b";
-$fa-var-image: "\f03e";
-$fa-var-inbox: "\f01c";
-$fa-var-indent: "\f03c";
-$fa-var-industry: "\f275";
-$fa-var-info: "\f129";
-$fa-var-info-circle: "\f05a";
-$fa-var-inr: "\f156";
-$fa-var-instagram: "\f16d";
-$fa-var-institution: "\f19c";
-$fa-var-internet-explorer: "\f26b";
-$fa-var-intersex: "\f224";
-$fa-var-ioxhost: "\f208";
-$fa-var-italic: "\f033";
-$fa-var-joomla: "\f1aa";
-$fa-var-jpy: "\f157";
-$fa-var-jsfiddle: "\f1cc";
-$fa-var-key: "\f084";
-$fa-var-keyboard-o: "\f11c";
-$fa-var-krw: "\f159";
-$fa-var-language: "\f1ab";
-$fa-var-laptop: "\f109";
-$fa-var-lastfm: "\f202";
-$fa-var-lastfm-square: "\f203";
-$fa-var-leaf: "\f06c";
-$fa-var-leanpub: "\f212";
-$fa-var-legal: "\f0e3";
-$fa-var-lemon-o: "\f094";
-$fa-var-level-down: "\f149";
-$fa-var-level-up: "\f148";
-$fa-var-life-bouy: "\f1cd";
-$fa-var-life-buoy: "\f1cd";
-$fa-var-life-ring: "\f1cd";
-$fa-var-life-saver: "\f1cd";
-$fa-var-lightbulb-o: "\f0eb";
-$fa-var-line-chart: "\f201";
-$fa-var-link: "\f0c1";
-$fa-var-linkedin: "\f0e1";
-$fa-var-linkedin-square: "\f08c";
-$fa-var-linux: "\f17c";
-$fa-var-list: "\f03a";
-$fa-var-list-alt: "\f022";
-$fa-var-list-ol: "\f0cb";
-$fa-var-list-ul: "\f0ca";
-$fa-var-location-arrow: "\f124";
-$fa-var-lock: "\f023";
-$fa-var-long-arrow-down: "\f175";
-$fa-var-long-arrow-left: "\f177";
-$fa-var-long-arrow-right: "\f178";
-$fa-var-long-arrow-up: "\f176";
-$fa-var-magic: "\f0d0";
-$fa-var-magnet: "\f076";
-$fa-var-mail-forward: "\f064";
-$fa-var-mail-reply: "\f112";
-$fa-var-mail-reply-all: "\f122";
-$fa-var-male: "\f183";
-$fa-var-map: "\f279";
-$fa-var-map-marker: "\f041";
-$fa-var-map-o: "\f278";
-$fa-var-map-pin: "\f276";
-$fa-var-map-signs: "\f277";
-$fa-var-mars: "\f222";
-$fa-var-mars-double: "\f227";
-$fa-var-mars-stroke: "\f229";
-$fa-var-mars-stroke-h: "\f22b";
-$fa-var-mars-stroke-v: "\f22a";
-$fa-var-maxcdn: "\f136";
-$fa-var-meanpath: "\f20c";
-$fa-var-medium: "\f23a";
-$fa-var-medkit: "\f0fa";
-$fa-var-meh-o: "\f11a";
-$fa-var-mercury: "\f223";
-$fa-var-microphone: "\f130";
-$fa-var-microphone-slash: "\f131";
-$fa-var-minus: "\f068";
-$fa-var-minus-circle: "\f056";
-$fa-var-minus-square: "\f146";
-$fa-var-minus-square-o: "\f147";
-$fa-var-mixcloud: "\f289";
-$fa-var-mobile: "\f10b";
-$fa-var-mobile-phone: "\f10b";
-$fa-var-modx: "\f285";
-$fa-var-money: "\f0d6";
-$fa-var-moon-o: "\f186";
-$fa-var-mortar-board: "\f19d";
-$fa-var-motorcycle: "\f21c";
-$fa-var-mouse-pointer: "\f245";
-$fa-var-music: "\f001";
-$fa-var-navicon: "\f0c9";
-$fa-var-neuter: "\f22c";
-$fa-var-newspaper-o: "\f1ea";
-$fa-var-object-group: "\f247";
-$fa-var-object-ungroup: "\f248";
-$fa-var-odnoklassniki: "\f263";
-$fa-var-odnoklassniki-square: "\f264";
-$fa-var-opencart: "\f23d";
-$fa-var-openid: "\f19b";
-$fa-var-opera: "\f26a";
-$fa-var-optin-monster: "\f23c";
-$fa-var-outdent: "\f03b";
-$fa-var-pagelines: "\f18c";
-$fa-var-paint-brush: "\f1fc";
-$fa-var-paper-plane: "\f1d8";
-$fa-var-paper-plane-o: "\f1d9";
-$fa-var-paperclip: "\f0c6";
-$fa-var-paragraph: "\f1dd";
-$fa-var-paste: "\f0ea";
-$fa-var-pause: "\f04c";
-$fa-var-pause-circle: "\f28b";
-$fa-var-pause-circle-o: "\f28c";
-$fa-var-paw: "\f1b0";
-$fa-var-paypal: "\f1ed";
-$fa-var-pencil: "\f040";
-$fa-var-pencil-square: "\f14b";
-$fa-var-pencil-square-o: "\f044";
-$fa-var-percent: "\f295";
-$fa-var-phone: "\f095";
-$fa-var-phone-square: "\f098";
-$fa-var-photo: "\f03e";
-$fa-var-picture-o: "\f03e";
-$fa-var-pie-chart: "\f200";
-$fa-var-pied-piper: "\f1a7";
-$fa-var-pied-piper-alt: "\f1a8";
-$fa-var-pinterest: "\f0d2";
-$fa-var-pinterest-p: "\f231";
-$fa-var-pinterest-square: "\f0d3";
-$fa-var-plane: "\f072";
-$fa-var-play: "\f04b";
-$fa-var-play-circle: "\f144";
-$fa-var-play-circle-o: "\f01d";
-$fa-var-plug: "\f1e6";
-$fa-var-plus: "\f067";
-$fa-var-plus-circle: "\f055";
-$fa-var-plus-square: "\f0fe";
-$fa-var-plus-square-o: "\f196";
-$fa-var-power-off: "\f011";
-$fa-var-print: "\f02f";
-$fa-var-product-hunt: "\f288";
-$fa-var-puzzle-piece: "\f12e";
-$fa-var-qq: "\f1d6";
-$fa-var-qrcode: "\f029";
-$fa-var-question: "\f128";
-$fa-var-question-circle: "\f059";
-$fa-var-quote-left: "\f10d";
-$fa-var-quote-right: "\f10e";
-$fa-var-ra: "\f1d0";
-$fa-var-random: "\f074";
-$fa-var-rebel: "\f1d0";
-$fa-var-recycle: "\f1b8";
-$fa-var-reddit: "\f1a1";
-$fa-var-reddit-alien: "\f281";
-$fa-var-reddit-square: "\f1a2";
-$fa-var-refresh: "\f021";
-$fa-var-registered: "\f25d";
-$fa-var-remove: "\f00d";
-$fa-var-renren: "\f18b";
-$fa-var-reorder: "\f0c9";
-$fa-var-repeat: "\f01e";
-$fa-var-reply: "\f112";
-$fa-var-reply-all: "\f122";
-$fa-var-retweet: "\f079";
-$fa-var-rmb: "\f157";
-$fa-var-road: "\f018";
-$fa-var-rocket: "\f135";
-$fa-var-rotate-left: "\f0e2";
-$fa-var-rotate-right: "\f01e";
-$fa-var-rouble: "\f158";
-$fa-var-rss: "\f09e";
-$fa-var-rss-square: "\f143";
-$fa-var-rub: "\f158";
-$fa-var-ruble: "\f158";
-$fa-var-rupee: "\f156";
-$fa-var-safari: "\f267";
-$fa-var-save: "\f0c7";
-$fa-var-scissors: "\f0c4";
-$fa-var-scribd: "\f28a";
-$fa-var-search: "\f002";
-$fa-var-search-minus: "\f010";
-$fa-var-search-plus: "\f00e";
-$fa-var-sellsy: "\f213";
-$fa-var-send: "\f1d8";
-$fa-var-send-o: "\f1d9";
-$fa-var-server: "\f233";
-$fa-var-share: "\f064";
-$fa-var-share-alt: "\f1e0";
-$fa-var-share-alt-square: "\f1e1";
-$fa-var-share-square: "\f14d";
-$fa-var-share-square-o: "\f045";
-$fa-var-shekel: "\f20b";
-$fa-var-sheqel: "\f20b";
-$fa-var-shield: "\f132";
-$fa-var-ship: "\f21a";
-$fa-var-shirtsinbulk: "\f214";
-$fa-var-shopping-bag: "\f290";
-$fa-var-shopping-basket: "\f291";
-$fa-var-shopping-cart: "\f07a";
-$fa-var-sign-in: "\f090";
-$fa-var-sign-out: "\f08b";
-$fa-var-signal: "\f012";
-$fa-var-simplybuilt: "\f215";
-$fa-var-sitemap: "\f0e8";
-$fa-var-skyatlas: "\f216";
-$fa-var-skype: "\f17e";
-$fa-var-slack: "\f198";
-$fa-var-sliders: "\f1de";
-$fa-var-slideshare: "\f1e7";
-$fa-var-smile-o: "\f118";
-$fa-var-soccer-ball-o: "\f1e3";
-$fa-var-sort: "\f0dc";
-$fa-var-sort-alpha-asc: "\f15d";
-$fa-var-sort-alpha-desc: "\f15e";
-$fa-var-sort-amount-asc: "\f160";
-$fa-var-sort-amount-desc: "\f161";
-$fa-var-sort-asc: "\f0de";
-$fa-var-sort-desc: "\f0dd";
-$fa-var-sort-down: "\f0dd";
-$fa-var-sort-numeric-asc: "\f162";
-$fa-var-sort-numeric-desc: "\f163";
-$fa-var-sort-up: "\f0de";
-$fa-var-soundcloud: "\f1be";
-$fa-var-space-shuttle: "\f197";
-$fa-var-spinner: "\f110";
-$fa-var-spoon: "\f1b1";
-$fa-var-spotify: "\f1bc";
-$fa-var-square: "\f0c8";
-$fa-var-square-o: "\f096";
-$fa-var-stack-exchange: "\f18d";
-$fa-var-stack-overflow: "\f16c";
-$fa-var-star: "\f005";
-$fa-var-star-half: "\f089";
-$fa-var-star-half-empty: "\f123";
-$fa-var-star-half-full: "\f123";
-$fa-var-star-half-o: "\f123";
-$fa-var-star-o: "\f006";
-$fa-var-steam: "\f1b6";
-$fa-var-steam-square: "\f1b7";
-$fa-var-step-backward: "\f048";
-$fa-var-step-forward: "\f051";
-$fa-var-stethoscope: "\f0f1";
-$fa-var-sticky-note: "\f249";
-$fa-var-sticky-note-o: "\f24a";
-$fa-var-stop: "\f04d";
-$fa-var-stop-circle: "\f28d";
-$fa-var-stop-circle-o: "\f28e";
-$fa-var-street-view: "\f21d";
-$fa-var-strikethrough: "\f0cc";
-$fa-var-stumbleupon: "\f1a4";
-$fa-var-stumbleupon-circle: "\f1a3";
-$fa-var-subscript: "\f12c";
-$fa-var-subway: "\f239";
-$fa-var-suitcase: "\f0f2";
-$fa-var-sun-o: "\f185";
-$fa-var-superscript: "\f12b";
-$fa-var-support: "\f1cd";
-$fa-var-table: "\f0ce";
-$fa-var-tablet: "\f10a";
-$fa-var-tachometer: "\f0e4";
-$fa-var-tag: "\f02b";
-$fa-var-tags: "\f02c";
-$fa-var-tasks: "\f0ae";
-$fa-var-taxi: "\f1ba";
-$fa-var-television: "\f26c";
-$fa-var-tencent-weibo: "\f1d5";
-$fa-var-terminal: "\f120";
-$fa-var-text-height: "\f034";
-$fa-var-text-width: "\f035";
-$fa-var-th: "\f00a";
-$fa-var-th-large: "\f009";
-$fa-var-th-list: "\f00b";
-$fa-var-thumb-tack: "\f08d";
-$fa-var-thumbs-down: "\f165";
-$fa-var-thumbs-o-down: "\f088";
-$fa-var-thumbs-o-up: "\f087";
-$fa-var-thumbs-up: "\f164";
-$fa-var-ticket: "\f145";
-$fa-var-times: "\f00d";
-$fa-var-times-circle: "\f057";
-$fa-var-times-circle-o: "\f05c";
-$fa-var-tint: "\f043";
-$fa-var-toggle-down: "\f150";
-$fa-var-toggle-left: "\f191";
-$fa-var-toggle-off: "\f204";
-$fa-var-toggle-on: "\f205";
-$fa-var-toggle-right: "\f152";
-$fa-var-toggle-up: "\f151";
-$fa-var-trademark: "\f25c";
-$fa-var-train: "\f238";
-$fa-var-transgender: "\f224";
-$fa-var-transgender-alt: "\f225";
-$fa-var-trash: "\f1f8";
-$fa-var-trash-o: "\f014";
-$fa-var-tree: "\f1bb";
-$fa-var-trello: "\f181";
-$fa-var-tripadvisor: "\f262";
-$fa-var-trophy: "\f091";
-$fa-var-truck: "\f0d1";
-$fa-var-try: "\f195";
-$fa-var-tty: "\f1e4";
-$fa-var-tumblr: "\f173";
-$fa-var-tumblr-square: "\f174";
-$fa-var-turkish-lira: "\f195";
-$fa-var-tv: "\f26c";
-$fa-var-twitch: "\f1e8";
-$fa-var-twitter: "\f099";
-$fa-var-twitter-square: "\f081";
-$fa-var-umbrella: "\f0e9";
-$fa-var-underline: "\f0cd";
-$fa-var-undo: "\f0e2";
-$fa-var-university: "\f19c";
-$fa-var-unlink: "\f127";
-$fa-var-unlock: "\f09c";
-$fa-var-unlock-alt: "\f13e";
-$fa-var-unsorted: "\f0dc";
-$fa-var-upload: "\f093";
-$fa-var-usb: "\f287";
-$fa-var-usd: "\f155";
-$fa-var-user: "\f007";
-$fa-var-user-md: "\f0f0";
-$fa-var-user-plus: "\f234";
-$fa-var-user-secret: "\f21b";
-$fa-var-user-times: "\f235";
-$fa-var-users: "\f0c0";
-$fa-var-venus: "\f221";
-$fa-var-venus-double: "\f226";
-$fa-var-venus-mars: "\f228";
-$fa-var-viacoin: "\f237";
-$fa-var-video-camera: "\f03d";
-$fa-var-vimeo: "\f27d";
-$fa-var-vimeo-square: "\f194";
-$fa-var-vine: "\f1ca";
-$fa-var-vk: "\f189";
-$fa-var-volume-down: "\f027";
-$fa-var-volume-off: "\f026";
-$fa-var-volume-up: "\f028";
-$fa-var-warning: "\f071";
-$fa-var-wechat: "\f1d7";
-$fa-var-weibo: "\f18a";
-$fa-var-weixin: "\f1d7";
-$fa-var-whatsapp: "\f232";
-$fa-var-wheelchair: "\f193";
-$fa-var-wifi: "\f1eb";
-$fa-var-wikipedia-w: "\f266";
-$fa-var-windows: "\f17a";
-$fa-var-won: "\f159";
-$fa-var-wordpress: "\f19a";
-$fa-var-wrench: "\f0ad";
-$fa-var-xing: "\f168";
-$fa-var-xing-square: "\f169";
-$fa-var-y-combinator: "\f23b";
-$fa-var-y-combinator-square: "\f1d4";
-$fa-var-yahoo: "\f19e";
-$fa-var-yc: "\f23b";
-$fa-var-yc-square: "\f1d4";
-$fa-var-yelp: "\f1e9";
-$fa-var-yen: "\f157";
-$fa-var-youtube: "\f167";
-$fa-var-youtube-play: "\f16a";
-$fa-var-youtube-square: "\f166";
-

+ 0 - 17
src/api/static/css/fa/scss/font-awesome.scss

@@ -1,17 +0,0 @@
-/*!
- *  Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */
-
-@import "variables";
-@import "mixins";
-@import "path";
-@import "core";
-@import "larger";
-@import "fixed-width";
-@import "list";
-@import "bordered-pulled";
-@import "animated";
-@import "rotated-flipped";
-@import "stacked";
-@import "icons";

+ 0 - 12
src/api/static/index.html

@@ -1,12 +0,0 @@
-<link type="text/css" rel="stylesheet" href="{{ context }}/js/jsgrid/jsgrid.min.css" />
-<link type="text/css" rel="stylesheet" href="{{ context }}/js/jsgrid/jsgrid-theme.min.css" />
-<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
-<script src="{{ context }}/static/js/jsgrid.js"></script>
-<script src="{{ context }}/static/js/jquery/jquery.min.js"></script>
-
-<title></title>
-<body>
-<div class="caption">
-<div class="left">Process Monitoring</div>
-</div>
-</body>

二進制
src/api/static/js/chart.js/.DS_Store


File diff suppressed because it is too large
+ 0 - 14868
src/api/static/js/chart.js/chart.bundle.js


File diff suppressed because it is too large
+ 0 - 2
src/api/static/js/colors.js


+ 0 - 573
src/api/static/js/dashboard.js

@@ -1,573 +0,0 @@
-
-var monitor = {}
-monitor.processes = {}
-monitor.processes.fetch = function(){
-	var httpclient = HttpClient.instance()
-	httpclient.get(HTTP_CONTEXT+'/get/processes',monitor.processes.init);
-	
-}
-
-monitor.processes.init = function (x) {
-	
-	var r = JSON.parse(x.responseText)
-	monitor.processes.summary.init(r) 
-	var keys = jx.utils.keys(r)	
-	jx.dom.set.value('menu','')
-	jx.utils.patterns.visitor(keys,function(label){
-		var div = jx.dom.get.instance('DIV')
-		var frame= jx.dom.get.instance('DIV')
-		var i	= jx.dom.get.instance('I')
-		i.className = 'fa fa-chevron-right left'
-		
-		div.innerHTML	= label
-		frame.data	= r[label]
-		frame.label	= label
-		frame.appendChild(i)
-		frame.appendChild(div)
-		frame.className = 'menu-item'
-		frame.onclick = function () {
-			monitor.processes.render(this.label, this.data);
-			jx.dom.set.value('trends_chart','')
-			//monitor.processes.trend.init(this.label)
-		}
-		jx.dom.append('menu',frame)
-	})
-	//
-	// Auto start the first item in the menu 
-	// This is designed not to let the user wander or wonder what is going on
-	//
-	var nodes = jx.dom.get.children('menu')
-	if (nodes.length > 0) {
-		nodes[0].click()
-	} else { 
-		//
-		// We should hide the panes for this
-		//
-		jx.dom.hide('apps')
-	}
-	
-	setTimeout(monitor.sandbox.init,3000)
-}
-
-/**
-* This function renders the grid of processes being monitored,
-* @param label	label the list of processes belongs to
-* @param data	dataset of a selected set of processes (works a bit like top)
-*/
-monitor.processes.render = function(label,data) {
-
-	data = jx.utils.patterns.visitor(data,function(row){
-		var status = {"idle":'<i class="fa fa-ellipsis-h" title="IDLE"></i>',"running":'<i class="fa fa-check" title="RUNNING"></i>',"crash":'<i class="fa fa-times" title="CRASHED"></i>'}	
-		if (!row.status.match(/class/)) {
-			row.status_id = row.status
-			row.status = status[row.status]		
-			
-		}
-		return row
-	})
-	jx.dom.set.value('latest_processes','') ;
-	jx.dom.set.value('latest_processes_label',label)
-	var options = {
-		width: $('#latest_processes').width(), height:'auto'
-	}
-	options.paging = true
-	options.pageSize = 4
-	options.pageIndex = 1
-	options.pageButtonCount = 4
-	options.pagerContainer = '#latest_process_pager'
-    	options.pagerFormat= "{prev} Page {pageIndex} of {pageCount} {next}"
-    	options.pagePrevText= '<i class="fa fa-chevron-left"></i>'
-    	options.pageNextText= "<i class='fa fa-chevron-right small' title='Next'> </i>"
-	
-	options.data = data
-	options.rowClass = function (item, index,evt) {
-		
-		return 'small'
-	}
-	options.rowClick = function(args){
-		var item = args.item
-		var id 	= jx.dom.get.value('latest_processes_label')
-		var app = item.label
-		monitor.processes.trend.init(id, app)
-		
-		if (item.anomaly == true) {
-			jx.dom.show('has_anomaly')
-		} else {
-			jx.dom.hide('has_anomaly')
-		}
-	}
-	
-	options.autoload  = true
-	options.fields = [
-		{ name: 'label', type: 'text', title: "Process", headercss: "small bold", css: "small"},
-		{ name: "cpu_usage", type: "number", title: "CPU", headercss: "small bold" , width:'64px'},
-		{ name: "memory_usage", type: "text", title: "Mem. Used", type: "number", headercss: "small bold" },
-		{ name: "proc_count", type: "number", title: "Proc Count", headercss: "small bold" },
-		{name:"status",type:"text",title:"Status",headercss:"small bold",align:"center", width:'64px'}
-	]
-	var grid = $('#latest_processes').jsGrid(options) ;
-	//
-	// We need to auto click the first row
-	$('#latest_processes').find('.jsgrid-row')[0].click()
-}
-
-monitor.processes.trend = {}
-monitor.processes.trend.init = function (label,app) {
-	var httpclient = HttpClient.instance()
-	var uri = HTTP_CONTEXT+'/trends?id='+label+'&app='+encodeURIComponent(app)
-	httpclient.get(uri, function (x) {
-		var logs = JSON.parse(x.responseText)
-		var dom = jx.dom.get.instance('trend_info');
-		dom.logs = logs
-		jx.dom.set.value('trend_info',app) 
-		// jx.dom.set.attribute(label,'logs',logs)
-		monitor.processes.trend.render(logs,null,app)
-	})
-}
-monitor.processes.trend.render = function (logs, key,label) {
-	// if (key == null) {
-	// 	key = 'memory_usage'
-	// }
-	// if (logs == null || label == null){
-		
-	// 	logs = jx.dom.get.instance('trend_info').logs
-	// 	label= jx.dom.get.value('trend_info') ;
-	// }
-	var frame = $('#trends_chart')
-	jx.dom.set.value('trends_chart','')
-	var context = jx.dom.get.instance('CANVAS')
-	context.width = $(frame).width()
-	context.height= $(frame).height()
-
-	var conf = { type: 'line',responsive:true }
-	conf.data = {}
-	conf.options = { legend: { position: 'bottom' } }
-	conf.options.scales = {}
-	conf.options.scales.yAxes = [  
-		{id:'0',scaleLabel:{display:true,labelString:'CPU & MEMORY USAGE'},ticks:{min:0,beginAtZero:true},gridLines: {display:false}},
-		{id:'1',position:'right',scaleLabel:{display:true,labelString:'PROCESS COUNT'},ticks:{min:0,stepSize:1,beginAtZero:true},gridLines: {display:false}}
-	]
-	conf.options.scales.xAxes = [
-		{
-			
-			gridLines: {display:false},
-			
-			time: {
-				format:'DD-MMM HH:mm'
-			}
-			
-		}
-		
-	]
-	conf.data.datasets = [	]
-	var x_axis = []
-	var _x = {}
-	// var _y = {}
-	var cpu = {yAxisID:'0', label: 'CPU Usage (%)', data: [] ,backgroundColor:'transparent',borderColor:COLORS[187],fill:false,borderWidth:1}
-	var mem = {yAxisID:'0',label : 'Memory Usage(%)',data:[],backgroundColor:'transparent',borderColor:COLORS[32],fill:false,borderWidth:1}
-	var proc= {yAxisID:'1',label : 'Proc Count',data:[],backgroundColor:'transparent',borderColor:COLORS[542],fill:false,borderWidth:1}
-	var months={1:"Jan",2:"Feb",3:"Mar",4:"Apr",5:"May",6:"Jun",7:"Jul",8:"Aug",9:"Sep",10:"Oct",11:"Nov",12:"Dec"}
-	jx.utils.patterns.visitor(logs,function(item){
-		//x = new Date(item.year,item.month-1,item.day,item.hour,item.minute)
-		day = item.day > 9? (['0',item.day]).join(''): item.day
-		month = months[item.month]
-		x = ([month,day,item.hour+':'+item.minute]).join(' ')
-		y = item[key]
-		if (_x[x] == null ){//||(_x[x] == null && _y[y] == null)) {
-			_x[x] = 1
-			// _y[y] = 1
-			x_axis.push(x)	
-			cpu.data.push({ x: x, y: item.cpu_usage })
-			mem.data.push({x:x,y:item.memory_usage})
-			proc.data.push({x:x,y:item.proc_count})
-			// return {x:x,y:y}
-			
-		}
-		
-	})
-	
-	
-	
-	conf.data.datasets = [cpu,mem,proc]
-	x_axis = jx.utils.unique(x_axis)
-	conf.data.labels = x_axis
-	// console.log(conf)
-	jx.dom.append('trends_chart',context)
-	var chart = new Chart(context,conf)
-	
-}
-
-monitor.processes.summary = {}
-monitor.processes.summary.init = function(logs){
-	var xr = 0, xc = 0, xi = 0
-	var series = {}
-	//var colors = [COLORS[11], COLORS[1], COLORS[2]]
-	colors = [COLORS[11], COLORS[2], COLORS[100]]
-	RUNNING_COLOR = COLORS[26]
-	IDLE_COLOR = COLORS[100]
-	CRASH_COLOR=COLORS[2]
-
-	var i = 0;
-	var date = null;
-	for( label in logs ){
-		var rows = logs[label]
-		series[label] = {data:[0,0,0],label:label}
-		
-		jx.utils.patterns.visitor(rows,function(item){
-			if (date == null) {
-				
-				date = new Date(item.year,item.month,item.day)
-				//date = [item.day,item.month,item.year]
-			}
-			if (item.status == 'running'){
-				xr += 1
-			}else if(item.status == 'idle'){
-				xi += 1
-			}else{
-				xc += 1
-			}
-		})
-		
-	}
-	var data = {labels:['Running','Crash','Idle'],datasets:[{data:[xr,xc,xi],backgroundColor:[RUNNING_COLOR,CRASH_COLOR,IDLE_COLOR/**COLORS[11],COLORS[2],COLORS[100]*/]}]}
-	var context = jx.dom.get.instance('CANVAS')
-	jx.dom.set.value('total-running', xr)
-	jx.dom.set.value('total-crash', xc)
-	jx.dom.set.value('total-idle', xi)
-	jx.dom.set.value('total-apps', xr + xi + xc)
-	
-	
-	jx.dom.set.value('app-summary-date', date)
-	jx.dom.set.value('summary_chart','')
-	jx.dom.append('summary_chart',context)
-	var conf = {}//width:50,height:40}
-	
-	conf.type = 'doughnut'
-	conf.responsive = true
-	conf.data = data
-	conf.options = {legend:{ position:'right'},repsonsive:true}
-	var chart = new Chart(context,conf)
-	
-	jx.dom.set.value('summary_ranking','')
-	context	= jx.dom.get.instance('CANVAS')
-	jx.dom.append('summary_ranking',context)
-	
-	conf = { type: 'bar', responsive: true }
-	
-	conf.options={scales:{xAxes:[{gridLines: {display:false}}],yAxes:[{gridLines: {display:false},scaleLabel:{display:true,labelString:'PROCESS COUNTS'} }] }}
-	conf.options.legend ={position:'right'}
-	/*
-	conf.data = {labels:['Running','Idle','Crash']}
-	var labels = jx.utils.keys(series)
-	
-	var i = 0
-	conf.data.datasets = jx.utils.patterns.visitor(labels,function(id){ 
-		series[id].backgroundColor = COLORS[i++]
-		return series[id]})
-	chart = new Chart(context,conf);
-	*/
-	var labels = jx.utils.keys(logs)
-	conf.data = { labels: labels, backgroundColor:colors }
-	var xr = [], xi = [], xc = [],xr_bg = [],xc_bg = [],xi_bg = []
-	jx.utils.patterns.visitor(labels, function (id) {
-		
-		var rows = logs[id]
-		var index = xr.length
-		xr_bg[index] = RUNNING_COLOR
-		xi_bg[index] = IDLE_COLOR
-		xc_bg[index] = CRASH_COLOR
-		if (xr[index] == null) {
-			xr[index] = 0
-			xc[index] = 0
-			xi[index] = 0
-		}
-		
-		jx.utils.patterns.visitor(logs[id], function (row) {
-			
-			if (row.status.match(/running/i)) {
-				xr[index] += 1
-				
-			} else if (row.status.match(/idle/i)) {
-				xi[index] += 1
-				
-			} else {
-				xc[index] += 1
-				
-			}
-		})
-	})
-	
-	conf.data.datasets = [{ label: 'Running', data:xr,backgroundColor:xr_bg},{label:'Crash',data:xc,backgroundColor:xc_bg},{label:'Idle',data:xi,backgroundColor:xi_bg} ]
-	chart = new Chart(context, conf)
-	
-}
-
-monitor.sandbox = {}
-monitor.sandbox.init = function () {
-	jx.dom.hide('inspect_sandbox')
-	var httpclient = HttpClient.instance()
-	httpclient.get(HTTP_CONTEXT+'/sandbox', function (x) {
-		
-		var r = JSON.parse(x.responseText)
-		
-		if (r.length > 0) {
-			jx.dom.show('sandbox')
-			monitor.sandbox.render(r);
-		} else {
-			jx.dom.hide('sandbox')
-		}
-	})
-}
-monitor.sandbox.render = function (logs) {
-	months = { 1: 'Jan', 2: 'Feb', 3: 'Mar', 4: 'Apr', 5: 'May', 6: 'Jun', 7: 'Jul', 8: 'Aug', 9: 'Sep', 10: 'Oct', 11: 'Nov', 12: 'Dec' }
-	
-	var d = ([logs[0].day, '-', months[logs[0].month], '-', logs[0].year, ' ', logs[0].hour, ':', logs[0].minute]).join('')
-	jx.dom.set.value('sandbox_date', d)
-	var options = { width: $('#sandbox_status').width(), height: 'auto' }
-	options.data = jx.utils.patterns.visitor(logs, function (item) { 
-		if (item.value == 100) {
-			item.status = '<i class="fa fa-check" style="color:green"></i>'
-		} else {
-			item.status = '<i class="fa fa-download" style="color:black"></i>'
-		}
-		return item		
-	})
-	options.paging = true
-	options.pageSize = 4
-	options.pageIndex = 1
-	options.pageButtonCount = 4
-	options.pagerContainer = '#folders_pager'
-	options.pagerFormat = "{prev} Page {pageIndex} of {pageCount} {next}"
-	options.pagePrevText = '<i class="fa fa-chevron-left"></i>'
-	options.pageNextText = "<i class='fa fa-chevron-right small' title='Next'> </i>";
-	options.rowClass = function (item) {
-		
-		if (item.value < 70) {
-			return 'bad'
-		} else if (item.value < 100) {
-			return 'warning'
-		} else {
-			return 'good'
-		}
-	}
-	options.rowClick = function (args) {
-		var item = args.item;
-		if (item.missing.length > 0) {
-			var form = jx.dom.get.instance('FORM')
-			var dom = jx.dom.get.instance('INPUT')
-			dom.type = 'hidden'
-			dom.name = 'missing'
-			dom.value = JSON.stringify(item.missing)
-			
-			form.action 	= HTTP_CONTEXT+'/download'
-			form.method = 'POST'
-			form.appendChild(dom)
-			form.submit()
-
-		}
-	}
-	options.fields = [
-		{name:"status",title:"",width:20},
-		{ name: 'label',title:'Virtual Environment Label',type:'text',css:'small',headercss:'small bold' },
-		{ name: 'value', title:'Completeness %',type: 'number', css: 'small', headercss: 'small bold' }
-		
-	]
-	var grid = $('#sandbox_status').jsGrid(options)
-	jx.dom.show('inspect_sandbox')
-	
-}
-
-
-
-monitor.folders = {}
-monitor.folders.init = function () {
-	var httpclient = HttpClient.instance()
-	httpclient.get(HTTP_CONTEXT+'/folders', function (x) {
-		var r = JSON.parse(x.responseText)
-		var data = []
-		for (var id in r) {
-			var item = r[id]
-			// item.id = id
-			data = data.concat(item)
-		}
-		
-		monitor.folders.render.init(data)
-	})
-}
-monitor.folders.search = {}
-monitor.folders.search.reset = function () {
-	jx.dom.set.value('folder_search', '')
-	var data = jx.dom.get.attribute('folder_search', 'data')
-	monitor.folders.render.summary(data)
-	
-}
-monitor.folders.search.init = function(){
-	var term = jx.dom.get.value('folder_search')
-	var data = jx.dom.get.attribute('folder_search', 'data')
-	
-	term = term.replace(/\x32/g,'')
-	if (term.length == 0) {
-		monitor.folders.render.summary(data)
-	} else if (term.length > 0) {
-		
-		data = jx.utils.patterns.visitor(data, function (row) {
-			if (row.id.match(term)) {
-				return row
-			}
-		})
-		monitor.folders.render.summary(data)
-	}
-}
-monitor.folders.render = {}
-monitor.folders.render.init = function (data) {
-	jx.dom.set.attribute('folder_search','data',data)
-	monitor.folders.render.summary(data)
-}
-monitor.folders.show = {}
-monitor.folders.show.plan = function () {
-		$('#folder_summary').slideUp(function () {
-		$('#folder_plan').slideDown()
-	})
-
-}
-monitor.folders.show.grid = function () {
-		$('#folder_plan').slideUp(function () {
-			$('#folder_summary').slideDown()
-		})
-	
-}
-/***
- * This function is designed to establish a folder clean up strategy i.e  :
- * 	- We will look for anomalies given age,file size
- * 	- We will also look for where most of the data is distributed (mode)
- */
-monitor.folders.render.details = function (folder,data) {
-	//
-	// We need to normalize the data at this point so as to be able to show it all in the same chart
-	// jx.math.scale x: counts, y: measure ment
-	//
-	var r = [data.age, data.size]
-	var plans = []
-	for (var i in r) {
-		var xy = r[i]
-		var mode = jx.math.mode(jx.utils.vector('x', xy))
-		var yvalues = jx.utils.patterns.visitor(xy, function (row) {
-			if (row.x == mode) { 
-				return row.y
-			}
-		})
-		var sd = jx.math.sd(yvalues)
-		if (i == 0) {
-			prefix = 'age'
-			var mean = jx.math.mean(yvalues)
-			var max = (mean + (1.5 * sd))
-			if (mean > 30 && mean < 365) {
-				divide_by = 30
-				units = 'MONTHS'
-			} else if (mean > 365) {
-				divide_by=365
-				units = 'YEARS'
-			} else {
-				divide_by = 1
-				units = 'DAYS'
-			}
-		} else {
-			prefix = 'size'
-			var mean = jx.math.sum(yvalues)
-			var max = 0// (mean + (1.5 * sd))
-			if (mean > 1000) { 
-				divide_by = 1000
-				units = 'GB'
-			} else {
-				divide_by = 1
-				units = 'MB'
-			}
-
-		}
-		if (isNaN(mean)) {
-			mean = 0
-		}
-		//
-		// We need to assess the outliars i.e too old, too large
-		//
-		y = jx.utils.vector('y', xy)
-		var _mean = jx.math.mean(y)
-		var _sd = jx.math.sd(y)
-		var outlier = _mean < mean || max > (_mean + (1.5 * _sd))
-
-		plans.push({ 'label': prefix, 'max': max, 'sd': sd, 'mean': mean, 'count': yvalues.length, 'outlier': outlier })
-		jx.dom.set.value(prefix + '_count', yvalues.length)
-		jx.dom.set.value(prefix + '_value', (mean/divide_by).toFixed(2))
-		jx.dom.set.value(prefix+'_units',units)
-		monitor.folders.show.plan()
-
-	}
-	
-	jx.dom.set.value('folder_name', folder)
-	
-	
-	
-	
-}
-monitor.folders.render.summary = function (data) {
-	
-	jx.dom.set.value('gridfolders', '')
-	var options = {
-		width: $('#gridfolders').width(), height:'auto'
-	}
-	options.paging = true
-	options.pageSize = 4
-	options.pageIndex = 2
-	options.pageButtonCount = 4
-	options.pagerContainer = '#folderspager'
-    	options.pagerFormat= "{prev} Page {pageIndex} of {pageCount} {next}"
-    	options.pagePrevText= '<i class="fa fa-chevron-left"></i>'
-    	options.pageNextText= "<i class='fa fa-chevron-right small' title='Next'> </i>"
-	
-	options.data = data
-	options.rowClass = function (item, index,evt) {
-		
-		return 'small'
-	}
-	options.rowClick = function(args){
-		// var item = args.item
-		
-		// age = jx.utils.patterns.visitor(item.details.age, function (row) {
-		// 	return {y:row[0],x:row[1]}
-		// })
-		// size = jx.utils.patterns.visitor(item.details.size, function (row) {
-		// 	return {y:row[0],x:row[1]}
-		// })
-
-		// monitor.folders.render.details(item.name,{age:age,size:size})
-	}
-	//
-	// @TODO Add the units in days just in case
-	options.autoload  = true
-	options.fields = [
-		{ name: 'id', type: 'text', title: "Host", headercss: "small bold", css: "small"},
-		{ name: 'name', type: 'text', title: "Folder Name", headercss: "small bold", css: "small"},
-		
-		{ name: "size", type: "number", title: "Folder Size", type: "number", headercss: "small bold" },
-		{ name: "count", type: "number", title: "File Count", type: "number", headercss: "small bold" }
-	]
-	var grid = $('#gridfolders').jsGrid(options) ;
-	
-}
-monitor.menu = {}
-monitor.menu.event = {}
-monitor.menu.event.toggle = function () {
-	var dom = jx.dom.get.instance('menuframe')
-	var value = dom.style.marginLeft.trim()
-	
-	if (value==0 || value == "0px" || value == "") {
-		var width = -$(dom).width() - 10
-		$('#menuframe').animate({marginLeft:"-12%"})
-	} else {
-		$('#menuframe').animate({marginLeft:"0"})
-	}
-	
-}
-/**
- * Socket handler, check for learning status
- */

File diff suppressed because it is too large
+ 0 - 9472
src/api/static/js/jquery/jquery.min.js


+ 0 - 20
src/api/static/js/jsgrid/.editorconfig

@@ -1,20 +0,0 @@
-# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# editorconfig.org
-
-root = true
-
-[*]
-
-# Change these settings to your own preference
-indent_style = space
-indent_size = 4
-
-# We recommend you to keep these unchanged
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false

+ 0 - 4
src/api/static/js/jsgrid/.gitignore

@@ -1,4 +0,0 @@
-.idea
-node_modules
-dist
-_site

+ 0 - 5
src/api/static/js/jsgrid/.npmignore

@@ -1,5 +0,0 @@
-.idea
-node_modules
-_site
-.editorconfig
-.travis.yml

+ 0 - 7
src/api/static/js/jsgrid/.travis.yml

@@ -1,7 +0,0 @@
-language: node_js
-node_js:
-  - '0.10'
-before_script:
-  - 'npm install -g grunt-cli'
-
-script: grunt test --verbose --force

+ 0 - 130
src/api/static/js/jsgrid/Gruntfile.js

@@ -1,130 +0,0 @@
-module.exports = function(grunt) {
-    "use strict"
-
-    var banner =
-        "/*\n" +
-        " * jsGrid v<%= pkg.version %> (<%= pkg.homepage %>)\n" +
-        " * (c) <%= grunt.template.today('yyyy') %> <%= pkg.author %>\n" +
-        " * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n" +
-        " */\n";
-
-    grunt.initConfig({
-        pkg: grunt.file.readJSON("package.json"),
-
-        copy: {
-            imgs: {
-                expand: true,
-                cwd: "css/",
-                src: "*.png",
-                dest: "dist/"
-            },
-            i18n: {
-                expand: true,
-                cwd: "src/i18n/",
-                src: "*.js",
-                dest: "dist/i18n/",
-                rename: function(dest, src) {
-                    return dest + "jsgrid-" + src;
-                }
-            }
-        },
-
-        concat: {
-            options: {
-                banner: banner + "\n",
-                separator: "\n"
-            },
-            js: {
-                src: [
-                    "src/jsgrid.core.js",
-                    "src/jsgrid.load-indicator.js",
-                    "src/jsgrid.load-strategies.js",
-                    "src/jsgrid.sort-strategies.js",
-                    "src/jsgrid.validation.js",
-                    "src/jsgrid.field.js",
-                    "src/fields/jsgrid.field.text.js",
-                    "src/fields/jsgrid.field.number.js",
-                    "src/fields/jsgrid.field.textarea.js",
-                    "src/fields/jsgrid.field.select.js",
-                    "src/fields/jsgrid.field.checkbox.js",
-                    "src/fields/jsgrid.field.control.js"
-                ],
-                dest: "dist/<%= pkg.name %>.js"
-            },
-            css: {
-                src: "css/jsgrid.css",
-                dest: "dist/<%= pkg.name %>.css"
-            },
-            theme: {
-                src: "css/theme.css",
-                dest: "dist/<%= pkg.name %>-theme.css"
-            }
-        },
-
-        "string-replace": {
-            version: {
-                files: [{
-                    src: "<%= concat.js.dest %>",
-                    dest: "<%= concat.js.dest %>"
-                }],
-                options: {
-                    replacements: [{
-                        pattern: /"@VERSION"/g,
-                        replacement: "'<%= pkg.version %>'"
-                    }]
-                }
-            }
-        },
-
-        imageEmbed: {
-            options: {
-                deleteAfterEncoding : true
-            },
-            theme: {
-                src: "<%= concat.theme.dest %>",
-                dest: "<%= concat.theme.dest %>"
-            }
-        },
-
-        uglify: {
-            options : {
-                banner: banner + "\n"
-            },
-            js: {
-                src: "<%= concat.js.dest %>",
-                dest: "dist/<%= pkg.name %>.min.js"
-            }
-        },
-
-        cssmin: {
-            options : {
-                banner: banner
-            },
-            css: {
-                src: "<%= concat.css.dest %>",
-                dest: "dist/<%= pkg.name %>.min.css"
-            },
-            theme: {
-                src: "<%= concat.theme.dest %>",
-                dest: "dist/<%= pkg.name %>-theme.min.css"
-            }
-        },
-
-        qunit: {
-            files: ["tests/index.html"]
-        }
-
-    });
-
-    grunt.loadNpmTasks("grunt-contrib-copy");
-    grunt.loadNpmTasks("grunt-contrib-concat");
-    grunt.loadNpmTasks("grunt-contrib-uglify");
-    grunt.loadNpmTasks("grunt-image-embed");
-    grunt.loadNpmTasks("grunt-contrib-cssmin");
-    grunt.loadNpmTasks("grunt-contrib-qunit");
-    grunt.loadNpmTasks('grunt-string-replace');
-
-    grunt.registerTask("default", ["copy", "concat", "string-replace", "imageEmbed", "uglify", "cssmin"]);
-
-    grunt.registerTask("test", "qunit");
-};

+ 0 - 22
src/api/static/js/jsgrid/LICENSE

@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Artem Tabalin
-
-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.
-

File diff suppressed because it is too large
+ 0 - 2169
src/api/static/js/jsgrid/README.md


+ 0 - 28
src/api/static/js/jsgrid/bower.json

@@ -1,28 +0,0 @@
-{
-    "name": "jsgrid",
-    "version": "1.5.3",
-    "main": [
-        "dist/jsgrid.js",
-        "dist/jsgrid.css",
-        "dist/jsgrid-theme.css"
-    ],
-    "ignore": [
-        "demos",
-        "external",
-        "tests",
-        ".editorconfig",
-        ".gitignore",
-        ".travis.yml",
-        "bower.json",
-        "Gruntfile.js",
-        "LICENSE",
-        "package.json",
-        "README.md"
-    ],
-    "dependencies": {
-        "jquery": ">=1.8.3"
-    },
-    "devDependencies": {
-        "qunit": ">=1.10.0"
-    }
-}

二進制
src/api/static/js/jsgrid/css/icons-2x.png


二進制
src/api/static/js/jsgrid/css/icons.png


+ 0 - 120
src/api/static/js/jsgrid/css/jsgrid.css

@@ -1,120 +0,0 @@
-.jsgrid {
-    position: relative;
-    overflow: hidden;
-    font-size: 1em;
-}
-
-.jsgrid, .jsgrid *, .jsgrid *:before, .jsgrid *:after {
-    box-sizing: border-box;
-}
-
-.jsgrid input,
-.jsgrid textarea,
-.jsgrid select {
-    font-size: 1em;
-}
-
-.jsgrid-grid-header {
-    overflow-x: hidden;
-    overflow-y: scroll;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    -o-user-select: none;
-    user-select: none;
-}
-
-.jsgrid-grid-body {
-    overflow-x: auto;
-    overflow-y: scroll;
-    -webkit-overflow-scrolling: touch;
-}
-
-.jsgrid-table {
-    width: 100%;
-    table-layout: fixed;
-    border-collapse: collapse;
-    border-spacing: 0;
-}
-
-.jsgrid-cell {
-    padding: 0.5em 0.5em;
-}
-
-.jsgrid-сell,
-.jsgrid-header-cell {
-    box-sizing: border-box;
-}
-
-.jsgrid-align-left {
-    text-align: left;
-}
-
-.jsgrid-align-center,
-.jsgrid-align-center input,
-.jsgrid-align-center textarea,
-.jsgrid-align-center select {
-    text-align: center;
-}
-
-.jsgrid-align-right,
-.jsgrid-align-right input,
-.jsgrid-align-right textarea,
-.jsgrid-align-right select {
-    text-align: right;
-}
-
-.jsgrid-header-cell {
-    padding: .5em .5em;
-}
-
-.jsgrid-filter-row input,
-.jsgrid-filter-row textarea,
-.jsgrid-filter-row select,
-.jsgrid-edit-row input,
-.jsgrid-edit-row textarea,
-.jsgrid-edit-row select,
-.jsgrid-insert-row input,
-.jsgrid-insert-row textarea,
-.jsgrid-insert-row select {
-    width: 100%;
-    padding: .3em .5em;
-}
-
-.jsgrid-filter-row input[type='checkbox'],
-.jsgrid-edit-row input[type='checkbox'],
-.jsgrid-insert-row input[type='checkbox'] {
-    width: auto;
-}
-
-
-.jsgrid-selected-row .jsgrid-cell {
-    cursor: pointer;
-}
-
-.jsgrid-nodata-row .jsgrid-cell {
-    padding: .5em 0;
-    text-align: center;
-}
-
-.jsgrid-header-sort {
-    cursor: pointer;
-}
-
-.jsgrid-pager {
-    padding: .5em 0;
-}
-
-.jsgrid-pager-nav-button {
-    padding: .2em .6em;
-}
-
-.jsgrid-pager-nav-inactive-button {
-    display: none;
-    pointer-events: none;
-}
-
-.jsgrid-pager-page {
-    padding: .2em .6em;
-}

+ 0 - 252
src/api/static/js/jsgrid/css/theme.css

@@ -1,252 +0,0 @@
-.jsgrid-grid-header,
-.jsgrid-grid-body,
-.jsgrid-header-row > .jsgrid-header-cell,
-.jsgrid-filter-row > .jsgrid-cell,
-.jsgrid-insert-row > .jsgrid-cell,
-.jsgrid-edit-row > .jsgrid-cell {
-    border: 1px solid #e9e9e9;
-}
-
-.jsgrid-header-row > .jsgrid-header-cell {
-    border-top: 0;
-}
-
-.jsgrid-header-row > .jsgrid-header-cell,
-.jsgrid-filter-row > .jsgrid-cell,
-.jsgrid-insert-row > .jsgrid-cell {
-    border-bottom: 0;
-}
-
-.jsgrid-header-row > .jsgrid-header-cell:first-child,
-.jsgrid-filter-row > .jsgrid-cell:first-child,
-.jsgrid-insert-row > .jsgrid-cell:first-child {
-    border-left: none;
-}
-
-.jsgrid-header-row > .jsgrid-header-cell:last-child,
-.jsgrid-filter-row > .jsgrid-cell:last-child,
-.jsgrid-insert-row > .jsgrid-cell:last-child {
-    border-right: none;
-}
-
-.jsgrid-header-row .jsgrid-align-right,
-.jsgrid-header-row .jsgrid-align-left {
-    text-align: center;
-}
-
-.jsgrid-grid-header {
-    background: #f9f9f9;
-}
-
-.jsgrid-header-scrollbar {
-    scrollbar-arrow-color: #f1f1f1;
-    scrollbar-base-color: #f1f1f1;
-    scrollbar-3dlight-color: #f1f1f1;
-    scrollbar-highlight-color: #f1f1f1;
-    scrollbar-track-color: #f1f1f1;
-    scrollbar-shadow-color: #f1f1f1;
-    scrollbar-dark-shadow-color: #f1f1f1;
-}
-
-.jsgrid-header-scrollbar::-webkit-scrollbar {
-    visibility: hidden;
-}
-
-.jsgrid-header-scrollbar::-webkit-scrollbar-track {
-    background: #f1f1f1;
-}
-
-.jsgrid-header-sortable:hover {
-    cursor: pointer;
-    background: #fcfcfc;
-}
-
-.jsgrid-header-row .jsgrid-header-sort {
-    background: #c4e2ff;
-}
-
-.jsgrid-header-sort:before {
-    content: " ";
-    display: block;
-    float: left;
-    width: 0;
-    height: 0;
-    border-style: solid;
-}
-
-.jsgrid-header-sort-asc:before {
-    border-width: 0 5px 5px 5px;
-    border-color: transparent transparent #009a67 transparent;
-}
-
-.jsgrid-header-sort-desc:before {
-    border-width: 5px 5px 0 5px;
-    border-color: #009a67 transparent transparent transparent;
-}
-
-.jsgrid-grid-body {
-    border-top: none;
-}
-
-.jsgrid-cell {
-    border: #f3f3f3 1px solid;
-}
-
-.jsgrid-grid-body .jsgrid-row:first-child .jsgrid-cell,
-.jsgrid-grid-body .jsgrid-alt-row:first-child .jsgrid-cell {
-    border-top: none;
-}
-
-.jsgrid-grid-body .jsgrid-cell:first-child {
-    border-left: none;
-}
-
-.jsgrid-grid-body .jsgrid-cell:last-child {
-    border-right: none;
-}
-
-.jsgrid-row > .jsgrid-cell {
-    background: #fff;
-}
-
-.jsgrid-alt-row > .jsgrid-cell {
-    background: #fcfcfc;
-}
-
-.jsgrid-header-row > .jsgrid-header-cell {
-    background: #f9f9f9;
-}
-
-.jsgrid-filter-row > .jsgrid-cell {
-    background: #fcfcfc;
-}
-
-.jsgrid-insert-row > .jsgrid-cell {
-    background: #e3ffe5;
-}
-
-.jsgrid-edit-row > .jsgrid-cell {
-    background: #fdffe3;
-}
-
-.jsgrid-selected-row > .jsgrid-cell {
-    background: #c4e2ff;
-    border-color: #c4e2ff;
-}
-
-.jsgrid-nodata-row > .jsgrid-cell {
-    background: #fff;
-}
-
-.jsgrid-invalid input,
-.jsgrid-invalid select,
-.jsgrid-invalid textarea {
-    background: #ffe3e5;
-    border: 1px solid #ff808a;
-}
-
-.jsgrid-pager-current-page {
-    font-weight: bold;
-}
-
-.jsgrid-pager-nav-inactive-button a {
-    color: #d3d3d3;
-}
-
-.jsgrid-button + .jsgrid-button {
-    margin-left: 5px;
-}
-
-.jsgrid-button:hover {
-    opacity: .5;
-    transition: opacity 200ms linear;
-}
-
-.jsgrid .jsgrid-button {
-    width: 16px;
-    height: 16px;
-    border: none;
-    cursor: pointer;
-    background-image: url(icons.png);
-    background-repeat: no-repeat;
-    background-color: transparent;
-}
-
-@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
-    .jsgrid .jsgrid-button {
-        background-image: url(icons-2x.png);
-        background-size: 24px 352px;
-    }
-}
-
-.jsgrid .jsgrid-mode-button {
-    width: 24px;
-    height: 24px;
-}
-
-.jsgrid-mode-on-button {
-    opacity: .5;
-}
-
-.jsgrid-cancel-edit-button { background-position: 0 0; width: 16px; height: 16px; }
-.jsgrid-clear-filter-button { background-position: 0 -40px; width: 16px; height: 16px; }
-.jsgrid-delete-button { background-position: 0 -80px; width: 16px; height: 16px; }
-.jsgrid-edit-button { background-position: 0 -120px; width: 16px; height: 16px; }
-.jsgrid-insert-mode-button { background-position: 0 -160px; width: 24px; height: 24px; }
-.jsgrid-insert-button { background-position: 0 -208px; width: 16px; height: 16px; }
-.jsgrid-search-mode-button { background-position: 0 -248px; width: 24px; height: 24px; }
-.jsgrid-search-button { background-position: 0 -296px; width: 16px; height: 16px; }
-.jsgrid-update-button { background-position: 0 -336px; width: 16px; height: 16px; }
-
-
-.jsgrid-load-shader {
-    background: #ddd;
-    opacity: .5;
-    filter: alpha(opacity=50);
-}
-
-.jsgrid-load-panel {
-    width: 15em;
-    height: 5em;
-    background: #fff;
-    border: 1px solid #e9e9e9;
-    padding-top: 3em;
-    text-align: center;
-}
-
-.jsgrid-load-panel:before {
-    content: ' ';
-    position: absolute;
-    top: .5em;
-    left: 50%;
-    margin-left: -1em;
-    width: 2em;
-    height: 2em;
-    border: 2px solid #009a67;
-    border-right-color: transparent;
-    border-radius: 50%;
-    -webkit-animation: indicator 1s linear infinite;
-    animation: indicator 1s linear infinite;
-}
-
-@-webkit-keyframes indicator
-{
-    from { -webkit-transform: rotate(0deg); }
-    50%  { -webkit-transform: rotate(180deg); }
-    to   { -webkit-transform: rotate(360deg); }
-}
-
-@keyframes indicator
-{
-    from { transform: rotate(0deg); }
-    50%  { transform: rotate(180deg); }
-    to   { transform: rotate(360deg); }
-}
-
-/* old IE */
-.jsgrid-load-panel {
-    padding-top: 1.5em\9;
-}
-.jsgrid-load-panel:before {
-    display: none\9;
-}

+ 0 - 59
src/api/static/js/jsgrid/demos/basic.html

@@ -1,59 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Basic Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-</head>
-<body>
-    <h1>Basic Scenario</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                filtering: true,
-                editing: true,
-                inserting: true,
-                sorting: true,
-                paging: true,
-                autoload: true,
-                pageSize: 15,
-                pageButtonCount: 5,
-                deleteConfirm: "Do you really want to delete the client?",
-                controller: db,
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married", sorting: false },
-                    { type: "control" }
-                ]
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 102
src/api/static/js/jsgrid/demos/batch-delete.html

@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Batch Delete</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-</head>
-<body>
-    <h1>Batch Delete</h1>
-
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "50%",
-                width: "100%",
-                autoload: true,
-                confirmDeleting: false,
-                paging: true,
-                controller: {
-                    loadData: function() {
-                        return db.clients;
-                    }
-                },
-                fields: [
-                    {
-                        headerTemplate: function() {
-                            return $("<button>").attr("type", "button").text("Delete")
-                                    .on("click", function () {
-                                        deleteSelectedItems();
-                                    });
-                        },
-                        itemTemplate: function(_, item) {
-                            return $("<input>").attr("type", "checkbox")
-                                    .prop("checked", $.inArray(item, selectedItems) > -1)
-                                    .on("change", function () {
-                                        $(this).is(":checked") ? selectItem(item) : unselectItem(item);
-                                    });
-                        },
-                        align: "center",
-                        width: 50
-                    },
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 }
-                ]
-            });
-
-
-            var selectedItems = [];
-
-            var selectItem = function(item) {
-                selectedItems.push(item);
-            };
-
-            var unselectItem = function(item) {
-                selectedItems = $.grep(selectedItems, function(i) {
-                    return i !== item;
-                });
-            };
-
-            var deleteSelectedItems = function() {
-                if(!selectedItems.length || !confirm("Are you sure?"))
-                    return;
-
-                deleteClientsFromDb(selectedItems);
-
-                var $grid = $("#jsGrid");
-                $grid.jsGrid("option", "pageIndex", 1);
-                $grid.jsGrid("loadData");
-
-                selectedItems = [];
-            };
-
-            var deleteClientsFromDb = function(deletingClients) {
-                db.clients = $.map(db.clients, function(client) {
-                    return ($.inArray(client, deletingClients) > -1) ? null : client;
-                });
-            };
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 97
src/api/static/js/jsgrid/demos/custom-grid-field.html

@@ -1,97 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Custom Grid Field Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css' />
-
-    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">
-    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
-    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-
-    <style>
-        .hasDatepicker {
-            width: 100px;
-            text-align: center;
-        }
-
-        .ui-datepicker * {
-            font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
-            font-size: 14px;
-            font-weight: 300 !important;
-        }
-    </style>
-</head>
-<body>
-    <h1>Custom Grid DateField</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            var MyDateField = function(config) {
-                jsGrid.Field.call(this, config);
-            };
-
-            MyDateField.prototype = new jsGrid.Field({
-                sorter: function(date1, date2) {
-                    return new Date(date1) - new Date(date2);
-                },
-
-                itemTemplate: function(value) {
-                    return new Date(value).toDateString();
-                },
-
-                insertTemplate: function(value) {
-                    return this._insertPicker = $("<input>").datepicker({ defaultDate: new Date() });
-                },
-
-                editTemplate: function(value) {
-                    return this._editPicker = $("<input>").datepicker().datepicker("setDate", new Date(value));
-                },
-
-                insertValue: function() {
-                    return this._insertPicker.datepicker("getDate").toISOString();
-                },
-
-                editValue: function() {
-                    return this._editPicker.datepicker("getDate").toISOString();
-                }
-            });
-
-            jsGrid.fields.myDateField = MyDateField;
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                inserting: true,
-                editing: true,
-                sorting: true,
-                paging: true,
-                fields: [
-                    { name: "Account", width: 150, align: "center" },
-                    { name: "Name", type: "text" },
-                    { name: "RegisterDate", type: "myDateField", width: 100, align: "center" },
-                    { type: "control", editButton: false, modeSwitchButton: false }
-                ],
-                data: db.users
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 90
src/api/static/js/jsgrid/demos/custom-load-indicator.html

@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Custom Load Indicator</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="http://cdnjs.cloudflare.com/ajax/libs/spin.js/2.3.1/spin.min.js"></script>
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.textarea.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-
-    <style>
-        .rating {
-            color: #F8CA03;
-        }
-    </style>
-</head>
-<body>
-    <h1>Custom Load Indicator</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "50%",
-                width: "100%",
-                sorting: true,
-                paging: false,
-                autoload: true,
-                controller: {
-                    loadData: function() {
-                        var d = $.Deferred();
-
-                        $.ajax({
-                            url: "http://services.odata.org/V3/(S(3mnweai3qldmghnzfshavfok))/OData/OData.svc/Products",
-                            dataType: "json"
-                        }).done(function(response) {
-                            setTimeout(function() {
-                                d.resolve(response.value);
-                            }, 2000);
-                        });
-
-                        return d.promise();
-                    }
-                },
-                loadIndicator: function(config) {
-                    var container = config.container[0];
-                    var spinner = new Spinner();
-
-                    return {
-                        show: function() {
-                            spinner.spin(container);
-                        },
-                        hide: function() {
-                            spinner.stop();
-                        }
-                    };
-                },
-                fields: [
-                    { name: "Name", type: "text" },
-                    { name: "Description", type: "textarea", width: 150 },
-                    { name: "Rating", type: "number", width: 50, align: "center",
-                        itemTemplate: function(value) {
-                            return $("<div>").addClass("rating").append(Array(value + 1).join("&#9733;"));
-                        }
-                    },
-                    { name: "Price", type: "number", width: 50,
-                        itemTemplate: function(value) {
-                            return value.toFixed(2) + "$"; }
-                    }
-                ]
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 79
src/api/static/js/jsgrid/demos/custom-row-renderer.html

@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Custom Row Renderer</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-
-    <style>
-        .client-photo { float: left; margin: 0 20px 0 10px; }
-        .client-photo img { border-radius: 50%; border: 1px solid #ddd; }
-        .client-info { margin-top: 10px; }
-        .client-info p { line-height: 25px; }
-    </style>
-</head>
-<body>
-    <h1>Custom Row Renderer</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "80%",
-                width: "50%",
-                autoload: true,
-                paging: true,
-                controller: {
-                    loadData: function() {
-                        var deferred = $.Deferred();
-
-                        $.ajax({
-                            url: 'http://api.randomuser.me/?results=40',
-                            dataType: 'jsonp',
-                            success: function(data){
-                                deferred.resolve(data.results);
-                            }
-                        });
-
-                        return deferred.promise();
-                    }
-                },
-                rowRenderer: function(item) {
-                    var user = item;
-                    var $photo = $("<div>").addClass("client-photo").append($("<img>").attr("src", user.picture.large));
-                    var $info = $("<div>").addClass("client-info")
-                        .append($("<p>").append($("<strong>").text(user.name.first.capitalize() + " " + user.name.last.capitalize())))
-                        .append($("<p>").text("Location: " + user.location.city.capitalize() + ", " + user.location.street))
-                        .append($("<p>").text("Email: " + user.email))
-                        .append($("<p>").text("Phone: " + user.phone))
-                        .append($("<p>").text("Cell: " + user.cell));
-
-                    return $("<tr>").append($("<td>").append($photo).append($info));
-                },
-                fields: [
-                    { title: "Clients" }
-                ]
-            });
-
-
-            String.prototype.capitalize = function() {
-                return this.charAt(0).toUpperCase() + this.slice(1);
-            };
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 85
src/api/static/js/jsgrid/demos/custom-view.html

@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Custom View Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-
-    <style>
-        .config-panel {
-            padding: 10px;
-            margin: 10px 0;
-            background: #fcfcfc;
-            border: 1px solid #e9e9e9;
-            display: inline-block;
-        }
-
-        .config-panel label {
-            margin-right: 10px;
-        }
-    </style>
-</head>
-<body>
-    <h1>Custom View</h1>
-    <div class="config-panel">
-        <label><input id="heading" type="checkbox" checked /> Heading</label>
-        <label><input id="filtering" type="checkbox" checked /> Filtering</label>
-        <label><input id="inserting" type="checkbox" /> Inserting</label>
-        <label><input id="editing" type="checkbox" checked /> Editing</label>
-        <label><input id="paging" type="checkbox" checked /> Paging</label>
-        <label><input id="sorting" type="checkbox" checked /> Sorting</label>
-        <label><input id="selecting" type="checkbox" checked /> Selecting</label>
-    </div>
-
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                filtering: true,
-                editing: true,
-                sorting: true,
-                paging: true,
-                autoload: true,
-                pageSize: 15,
-                pageButtonCount: 5,
-                controller: db,
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married", sorting: false },
-                    { type: "control", modeSwitchButton: false, editButton: false }
-                ]
-            });
-
-            $(".config-panel input[type=checkbox]").on("click", function() {
-                var $cb = $(this);
-                $("#jsGrid").jsGrid("option", $cb.attr("id"), $cb.is(":checked"));
-            });
-        });
-    </script>
-</body>
-</html>

+ 0 - 212
src/api/static/js/jsgrid/demos/data-manipulation.html

@@ -1,212 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Data Manipulation</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">
-    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
-    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
-    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
-
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-
-    <style>
-        .ui-widget *, .ui-widget input, .ui-widget select, .ui-widget button {
-            font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
-            font-size: 14px;
-            font-weight: 300 !important;
-        }
-
-        .details-form-field input,
-        .details-form-field select {
-            width: 250px;
-            float: right;
-        }
-
-        .details-form-field {
-            margin: 30px 0;
-        }
-
-        .details-form-field:first-child {
-            margin-top: 10px;
-        }
-
-        .details-form-field:last-child {
-            margin-bottom: 10px;
-        }
-
-        .details-form-field button {
-            display: block;
-            width: 100px;
-            margin: 0 auto;
-        }
-
-        input.error, select.error {
-            border: 1px solid #ff9999;
-            background: #ffeeee;
-        }
-
-        label.error {
-            float: right;
-            margin-left: 100px;
-            font-size: .8em;
-            color: #ff6666;
-        }
-    </style>
-</head>
-<body>
-    <h1>Data Manipulation</h1>
-    <div id="jsGrid"></div>
-
-    <div id="detailsDialog">
-        <form id="detailsForm">
-            <div class="details-form-field">
-                <label for="name">Name:</label>
-                <input id="name" name="name" type="text" />
-            </div>
-            <div class="details-form-field">
-                <label for="age">Age:</label>
-                <input id="age" name="age" type="number" />
-            </div>
-            <div class="details-form-field">
-                <label for="address">Address:</label>
-                <input id="address" name="address" type="text" />
-            </div>
-            <div class="details-form-field">
-                <label for="country">Country:</label>
-                <select id="country" name="country">
-                    <option value="">(Select)</option>
-                    <option value="1">United States</option>
-                    <option value="2">Canada</option>
-                    <option value="3">United Kingdom</option>
-                    <option value="4">France</option>
-                    <option value="5">Brazil</option>
-                    <option value="6">China</option>
-                    <option value="7">Russia</option>
-                </select>
-            </div>
-            <div class="details-form-field">
-                <label for="married">Is Married</label>
-                <input id="married" name="married" type="checkbox" />
-            </div>
-            <div class="details-form-field">
-                <button type="submit" id="save">Save</button>
-            </div>
-        </form>
-    </div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                editing: true,
-                autoload: true,
-                paging: true,
-                deleteConfirm: function(item) {
-                    return "The client \"" + item.Name + "\" will be removed. Are you sure?";
-                },
-                rowClick: function(args) {
-                    showDetailsDialog("Edit", args.item);
-                },
-                controller: db,
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married", sorting: false },
-                    {
-                        type: "control",
-                        modeSwitchButton: false,
-                        editButton: false,
-                        headerTemplate: function() {
-                            return $("<button>").attr("type", "button").text("Add")
-                                .on("click", function () {
-                                    showDetailsDialog("Add", {});
-                                });
-                        }
-                    }
-                ]
-            });
-
-            $("#detailsDialog").dialog({
-                autoOpen: false,
-                width: 400,
-                close: function() {
-                    $("#detailsForm").validate().resetForm();
-                    $("#detailsForm").find(".error").removeClass("error");
-                }
-            });
-
-            $("#detailsForm").validate({
-                rules: {
-                    name: "required",
-                    age: { required: true, range: [18, 150] },
-                    address: { required: true, minlength: 10 },
-                    country: "required"
-                },
-                messages: {
-                    name: "Please enter name",
-                    age: "Please enter valid age",
-                    address: "Please enter address (more than 10 chars)",
-                    country: "Please select country"
-                },
-                submitHandler: function() {
-                    formSubmitHandler();
-                }
-            });
-
-            var formSubmitHandler = $.noop;
-
-            var showDetailsDialog = function(dialogType, client) {
-                $("#name").val(client.Name);
-                $("#age").val(client.Age);
-                $("#address").val(client.Address);
-                $("#country").val(client.Country);
-                $("#married").prop("checked", client.Married);
-
-                formSubmitHandler = function() {
-                    saveClient(client, dialogType === "Add");
-                };
-
-                $("#detailsDialog").dialog("option", "title", dialogType + " Client")
-                    .dialog("open");
-            };
-
-            var saveClient = function(client, isNew) {
-                $.extend(client, {
-                    Name: $("#name").val(),
-                    Age: parseInt($("#age").val(), 10),
-                    Address: $("#address").val(),
-                    Country: parseInt($("#country").val(), 10),
-                    Married: $("#married").is(":checked")
-                });
-
-                $("#jsGrid").jsGrid(isNew ? "insertItem" : "updateItem", client);
-
-                $("#detailsDialog").dialog("close");
-            };
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 884
src/api/static/js/jsgrid/demos/db.js

@@ -1,884 +0,0 @@
-(function() {
-
-    var db = {
-
-        loadData: function(filter) {
-            return $.grep(this.clients, function(client) {
-                return (!filter.Name || client.Name.indexOf(filter.Name) > -1)
-                    && (filter.Age === undefined || client.Age === filter.Age)
-                    && (!filter.Address || client.Address.indexOf(filter.Address) > -1)
-                    && (!filter.Country || client.Country === filter.Country)
-                    && (filter.Married === undefined || client.Married === filter.Married);
-            });
-        },
-
-        insertItem: function(insertingClient) {
-            this.clients.push(insertingClient);
-        },
-
-        updateItem: function(updatingClient) { },
-
-        deleteItem: function(deletingClient) {
-            var clientIndex = $.inArray(deletingClient, this.clients);
-            this.clients.splice(clientIndex, 1);
-        }
-
-    };
-
-    window.db = db;
-
-
-    db.countries = [
-        { Name: "", Id: 0 },
-        { Name: "United States", Id: 1 },
-        { Name: "Canada", Id: 2 },
-        { Name: "United Kingdom", Id: 3 },
-        { Name: "France", Id: 4 },
-        { Name: "Brazil", Id: 5 },
-        { Name: "China", Id: 6 },
-        { Name: "Russia", Id: 7 }
-    ];
-
-    db.clients = [
-        {
-            "Name": "Otto Clay",
-            "Age": 61,
-            "Country": 6,
-            "Address": "Ap #897-1459 Quam Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Connor Johnston",
-            "Age": 73,
-            "Country": 7,
-            "Address": "Ap #370-4647 Dis Av.",
-            "Married": false
-        },
-        {
-            "Name": "Lacey Hess",
-            "Age": 29,
-            "Country": 7,
-            "Address": "Ap #365-8835 Integer St.",
-            "Married": false
-        },
-        {
-            "Name": "Timothy Henson",
-            "Age": 78,
-            "Country": 1,
-            "Address": "911-5143 Luctus Ave",
-            "Married": false
-        },
-        {
-            "Name": "Ramona Benton",
-            "Age": 43,
-            "Country": 5,
-            "Address": "Ap #614-689 Vehicula Street",
-            "Married": true
-        },
-        {
-            "Name": "Ezra Tillman",
-            "Age": 51,
-            "Country": 1,
-            "Address": "P.O. Box 738, 7583 Quisque St.",
-            "Married": true
-        },
-        {
-            "Name": "Dante Carter",
-            "Age": 59,
-            "Country": 1,
-            "Address": "P.O. Box 976, 6316 Lorem, St.",
-            "Married": false
-        },
-        {
-            "Name": "Christopher Mcclure",
-            "Age": 58,
-            "Country": 1,
-            "Address": "847-4303 Dictum Av.",
-            "Married": true
-        },
-        {
-            "Name": "Ruby Rocha",
-            "Age": 62,
-            "Country": 2,
-            "Address": "5212 Sagittis Ave",
-            "Married": false
-        },
-        {
-            "Name": "Imelda Hardin",
-            "Age": 39,
-            "Country": 5,
-            "Address": "719-7009 Auctor Av.",
-            "Married": false
-        },
-        {
-            "Name": "Jonah Johns",
-            "Age": 28,
-            "Country": 5,
-            "Address": "P.O. Box 939, 9310 A Ave",
-            "Married": false
-        },
-        {
-            "Name": "Herman Rosa",
-            "Age": 49,
-            "Country": 7,
-            "Address": "718-7162 Molestie Av.",
-            "Married": true
-        },
-        {
-            "Name": "Arthur Gay",
-            "Age": 20,
-            "Country": 7,
-            "Address": "5497 Neque Street",
-            "Married": false
-        },
-        {
-            "Name": "Xena Wilkerson",
-            "Age": 63,
-            "Country": 1,
-            "Address": "Ap #303-6974 Proin Street",
-            "Married": true
-        },
-        {
-            "Name": "Lilah Atkins",
-            "Age": 33,
-            "Country": 5,
-            "Address": "622-8602 Gravida Ave",
-            "Married": true
-        },
-        {
-            "Name": "Malik Shepard",
-            "Age": 59,
-            "Country": 1,
-            "Address": "967-5176 Tincidunt Av.",
-            "Married": false
-        },
-        {
-            "Name": "Keely Silva",
-            "Age": 24,
-            "Country": 1,
-            "Address": "P.O. Box 153, 8995 Praesent Ave",
-            "Married": false
-        },
-        {
-            "Name": "Hunter Pate",
-            "Age": 73,
-            "Country": 7,
-            "Address": "P.O. Box 771, 7599 Ante, Road",
-            "Married": false
-        },
-        {
-            "Name": "Mikayla Roach",
-            "Age": 55,
-            "Country": 5,
-            "Address": "Ap #438-9886 Donec Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Upton Joseph",
-            "Age": 48,
-            "Country": 4,
-            "Address": "Ap #896-7592 Habitant St.",
-            "Married": true
-        },
-        {
-            "Name": "Jeanette Pate",
-            "Age": 59,
-            "Country": 2,
-            "Address": "P.O. Box 177, 7584 Amet, St.",
-            "Married": false
-        },
-        {
-            "Name": "Kaden Hernandez",
-            "Age": 79,
-            "Country": 3,
-            "Address": "366 Ut St.",
-            "Married": true
-        },
-        {
-            "Name": "Kenyon Stevens",
-            "Age": 20,
-            "Country": 3,
-            "Address": "P.O. Box 704, 4580 Gravida Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Jerome Harper",
-            "Age": 31,
-            "Country": 5,
-            "Address": "2464 Porttitor Road",
-            "Married": false
-        },
-        {
-            "Name": "Jelani Patel",
-            "Age": 36,
-            "Country": 2,
-            "Address": "P.O. Box 541, 5805 Nec Av.",
-            "Married": true
-        },
-        {
-            "Name": "Keaton Oconnor",
-            "Age": 21,
-            "Country": 1,
-            "Address": "Ap #657-1093 Nec, Street",
-            "Married": false
-        },
-        {
-            "Name": "Bree Johnston",
-            "Age": 31,
-            "Country": 2,
-            "Address": "372-5942 Vulputate Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Maisie Hodges",
-            "Age": 70,
-            "Country": 7,
-            "Address": "P.O. Box 445, 3880 Odio, Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Kuame Calhoun",
-            "Age": 39,
-            "Country": 2,
-            "Address": "P.O. Box 609, 4105 Rutrum St.",
-            "Married": true
-        },
-        {
-            "Name": "Carlos Cameron",
-            "Age": 38,
-            "Country": 5,
-            "Address": "Ap #215-5386 A, Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Fulton Parsons",
-            "Age": 25,
-            "Country": 7,
-            "Address": "P.O. Box 523, 3705 Sed Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Wallace Christian",
-            "Age": 43,
-            "Country": 3,
-            "Address": "416-8816 Mauris Avenue",
-            "Married": true
-        },
-        {
-            "Name": "Caryn Maldonado",
-            "Age": 40,
-            "Country": 1,
-            "Address": "108-282 Nonummy Ave",
-            "Married": false
-        },
-        {
-            "Name": "Whilemina Frank",
-            "Age": 20,
-            "Country": 7,
-            "Address": "P.O. Box 681, 3938 Egestas. Av.",
-            "Married": true
-        },
-        {
-            "Name": "Emery Moon",
-            "Age": 41,
-            "Country": 4,
-            "Address": "Ap #717-8556 Non Road",
-            "Married": true
-        },
-        {
-            "Name": "Price Watkins",
-            "Age": 35,
-            "Country": 4,
-            "Address": "832-7810 Nunc Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Lydia Castillo",
-            "Age": 59,
-            "Country": 7,
-            "Address": "5280 Placerat, Ave",
-            "Married": true
-        },
-        {
-            "Name": "Lawrence Conway",
-            "Age": 53,
-            "Country": 1,
-            "Address": "Ap #452-2808 Imperdiet St.",
-            "Married": false
-        },
-        {
-            "Name": "Kalia Nicholson",
-            "Age": 67,
-            "Country": 5,
-            "Address": "P.O. Box 871, 3023 Tellus Road",
-            "Married": true
-        },
-        {
-            "Name": "Brielle Baxter",
-            "Age": 45,
-            "Country": 3,
-            "Address": "Ap #822-9526 Ut, Road",
-            "Married": true
-        },
-        {
-            "Name": "Valentine Brady",
-            "Age": 72,
-            "Country": 7,
-            "Address": "8014 Enim. Road",
-            "Married": true
-        },
-        {
-            "Name": "Rebecca Gardner",
-            "Age": 57,
-            "Country": 4,
-            "Address": "8655 Arcu. Road",
-            "Married": true
-        },
-        {
-            "Name": "Vladimir Tate",
-            "Age": 26,
-            "Country": 1,
-            "Address": "130-1291 Non, Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Vernon Hays",
-            "Age": 56,
-            "Country": 4,
-            "Address": "964-5552 In Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Allegra Hull",
-            "Age": 22,
-            "Country": 4,
-            "Address": "245-8891 Donec St.",
-            "Married": true
-        },
-        {
-            "Name": "Hu Hendrix",
-            "Age": 65,
-            "Country": 7,
-            "Address": "428-5404 Tempus Ave",
-            "Married": true
-        },
-        {
-            "Name": "Kenyon Battle",
-            "Age": 32,
-            "Country": 2,
-            "Address": "921-6804 Lectus St.",
-            "Married": false
-        },
-        {
-            "Name": "Gloria Nielsen",
-            "Age": 24,
-            "Country": 4,
-            "Address": "Ap #275-4345 Lorem, Street",
-            "Married": true
-        },
-        {
-            "Name": "Illiana Kidd",
-            "Age": 59,
-            "Country": 2,
-            "Address": "7618 Lacus. Av.",
-            "Married": false
-        },
-        {
-            "Name": "Adria Todd",
-            "Age": 68,
-            "Country": 6,
-            "Address": "1889 Tincidunt Road",
-            "Married": false
-        },
-        {
-            "Name": "Kirsten Mayo",
-            "Age": 71,
-            "Country": 1,
-            "Address": "100-8640 Orci, Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Willa Hobbs",
-            "Age": 60,
-            "Country": 6,
-            "Address": "P.O. Box 323, 158 Tristique St.",
-            "Married": false
-        },
-        {
-            "Name": "Alexis Clements",
-            "Age": 69,
-            "Country": 5,
-            "Address": "P.O. Box 176, 5107 Proin Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Akeem Conrad",
-            "Age": 60,
-            "Country": 2,
-            "Address": "282-495 Sed Ave",
-            "Married": true
-        },
-        {
-            "Name": "Montana Silva",
-            "Age": 79,
-            "Country": 6,
-            "Address": "P.O. Box 120, 9766 Consectetuer St.",
-            "Married": false
-        },
-        {
-            "Name": "Kaseem Hensley",
-            "Age": 77,
-            "Country": 6,
-            "Address": "Ap #510-8903 Mauris. Av.",
-            "Married": true
-        },
-        {
-            "Name": "Christopher Morton",
-            "Age": 35,
-            "Country": 5,
-            "Address": "P.O. Box 234, 3651 Sodales Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Wade Fernandez",
-            "Age": 49,
-            "Country": 6,
-            "Address": "740-5059 Dolor. Road",
-            "Married": true
-        },
-        {
-            "Name": "Illiana Kirby",
-            "Age": 31,
-            "Country": 2,
-            "Address": "527-3553 Mi Ave",
-            "Married": false
-        },
-        {
-            "Name": "Kimberley Hurley",
-            "Age": 65,
-            "Country": 5,
-            "Address": "P.O. Box 637, 9915 Dictum St.",
-            "Married": false
-        },
-        {
-            "Name": "Arthur Olsen",
-            "Age": 74,
-            "Country": 5,
-            "Address": "887-5080 Eget St.",
-            "Married": false
-        },
-        {
-            "Name": "Brody Potts",
-            "Age": 59,
-            "Country": 2,
-            "Address": "Ap #577-7690 Sem Road",
-            "Married": false
-        },
-        {
-            "Name": "Dillon Ford",
-            "Age": 60,
-            "Country": 1,
-            "Address": "Ap #885-9289 A, Av.",
-            "Married": true
-        },
-        {
-            "Name": "Hannah Juarez",
-            "Age": 61,
-            "Country": 2,
-            "Address": "4744 Sapien, Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Vincent Shaffer",
-            "Age": 25,
-            "Country": 2,
-            "Address": "9203 Nunc St.",
-            "Married": true
-        },
-        {
-            "Name": "George Holt",
-            "Age": 27,
-            "Country": 6,
-            "Address": "4162 Cras Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Tobias Bartlett",
-            "Age": 74,
-            "Country": 4,
-            "Address": "792-6145 Mauris St.",
-            "Married": true
-        },
-        {
-            "Name": "Xavier Hooper",
-            "Age": 35,
-            "Country": 1,
-            "Address": "879-5026 Interdum. Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Declan Dorsey",
-            "Age": 31,
-            "Country": 2,
-            "Address": "Ap #926-4171 Aenean Road",
-            "Married": true
-        },
-        {
-            "Name": "Clementine Tran",
-            "Age": 43,
-            "Country": 4,
-            "Address": "P.O. Box 176, 9865 Eu Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Pamela Moody",
-            "Age": 55,
-            "Country": 6,
-            "Address": "622-6233 Luctus Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Julie Leon",
-            "Age": 43,
-            "Country": 6,
-            "Address": "Ap #915-6782 Sem Av.",
-            "Married": true
-        },
-        {
-            "Name": "Shana Nolan",
-            "Age": 79,
-            "Country": 5,
-            "Address": "P.O. Box 603, 899 Eu St.",
-            "Married": false
-        },
-        {
-            "Name": "Vaughan Moody",
-            "Age": 37,
-            "Country": 5,
-            "Address": "880 Erat Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Randall Reeves",
-            "Age": 44,
-            "Country": 3,
-            "Address": "1819 Non Street",
-            "Married": false
-        },
-        {
-            "Name": "Dominic Raymond",
-            "Age": 68,
-            "Country": 1,
-            "Address": "Ap #689-4874 Nisi Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Lev Pugh",
-            "Age": 69,
-            "Country": 5,
-            "Address": "Ap #433-6844 Auctor Avenue",
-            "Married": true
-        },
-        {
-            "Name": "Desiree Hughes",
-            "Age": 80,
-            "Country": 4,
-            "Address": "605-6645 Fermentum Avenue",
-            "Married": true
-        },
-        {
-            "Name": "Idona Oneill",
-            "Age": 23,
-            "Country": 7,
-            "Address": "751-8148 Aliquam Avenue",
-            "Married": true
-        },
-        {
-            "Name": "Lani Mayo",
-            "Age": 76,
-            "Country": 1,
-            "Address": "635-2704 Tristique St.",
-            "Married": true
-        },
-        {
-            "Name": "Cathleen Bonner",
-            "Age": 40,
-            "Country": 1,
-            "Address": "916-2910 Dolor Av.",
-            "Married": false
-        },
-        {
-            "Name": "Sydney Murray",
-            "Age": 44,
-            "Country": 5,
-            "Address": "835-2330 Fringilla St.",
-            "Married": false
-        },
-        {
-            "Name": "Brenna Rodriguez",
-            "Age": 77,
-            "Country": 6,
-            "Address": "3687 Imperdiet Av.",
-            "Married": true
-        },
-        {
-            "Name": "Alfreda Mcdaniel",
-            "Age": 38,
-            "Country": 7,
-            "Address": "745-8221 Aliquet Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Zachery Atkins",
-            "Age": 30,
-            "Country": 1,
-            "Address": "549-2208 Auctor. Road",
-            "Married": true
-        },
-        {
-            "Name": "Amelia Rich",
-            "Age": 56,
-            "Country": 4,
-            "Address": "P.O. Box 734, 4717 Nunc Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Kiayada Witt",
-            "Age": 62,
-            "Country": 3,
-            "Address": "Ap #735-3421 Malesuada Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Lysandra Pierce",
-            "Age": 36,
-            "Country": 1,
-            "Address": "Ap #146-2835 Curabitur St.",
-            "Married": true
-        },
-        {
-            "Name": "Cara Rios",
-            "Age": 58,
-            "Country": 4,
-            "Address": "Ap #562-7811 Quam. Ave",
-            "Married": true
-        },
-        {
-            "Name": "Austin Andrews",
-            "Age": 55,
-            "Country": 7,
-            "Address": "P.O. Box 274, 5505 Sociis Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Lillian Peterson",
-            "Age": 39,
-            "Country": 2,
-            "Address": "6212 A Avenue",
-            "Married": false
-        },
-        {
-            "Name": "Adria Beach",
-            "Age": 29,
-            "Country": 2,
-            "Address": "P.O. Box 183, 2717 Nunc Avenue",
-            "Married": true
-        },
-        {
-            "Name": "Oleg Durham",
-            "Age": 80,
-            "Country": 4,
-            "Address": "931-3208 Nunc Rd.",
-            "Married": false
-        },
-        {
-            "Name": "Casey Reese",
-            "Age": 60,
-            "Country": 4,
-            "Address": "383-3675 Ultrices, St.",
-            "Married": false
-        },
-        {
-            "Name": "Kane Burnett",
-            "Age": 80,
-            "Country": 1,
-            "Address": "759-8212 Dolor. Ave",
-            "Married": false
-        },
-        {
-            "Name": "Stewart Wilson",
-            "Age": 46,
-            "Country": 7,
-            "Address": "718-7845 Sagittis. Av.",
-            "Married": false
-        },
-        {
-            "Name": "Charity Holcomb",
-            "Age": 31,
-            "Country": 6,
-            "Address": "641-7892 Enim. Ave",
-            "Married": false
-        },
-        {
-            "Name": "Kyra Cummings",
-            "Age": 43,
-            "Country": 4,
-            "Address": "P.O. Box 702, 6621 Mus. Av.",
-            "Married": false
-        },
-        {
-            "Name": "Stuart Wallace",
-            "Age": 25,
-            "Country": 7,
-            "Address": "648-4990 Sed Rd.",
-            "Married": true
-        },
-        {
-            "Name": "Carter Clarke",
-            "Age": 59,
-            "Country": 6,
-            "Address": "Ap #547-2921 A Street",
-            "Married": false
-        }
-    ];
-
-    db.users = [
-        {
-            "ID": "x",
-            "Account": "A758A693-0302-03D1-AE53-EEFE22855556",
-            "Name": "Carson Kelley",
-            "RegisterDate": "2002-04-20T22:55:52-07:00"
-        },
-        {
-            "Account": "D89FF524-1233-0CE7-C9E1-56EFF017A321",
-            "Name": "Prescott Griffin",
-            "RegisterDate": "2011-02-22T05:59:55-08:00"
-        },
-        {
-            "Account": "06FAAD9A-5114-08F6-D60C-961B2528B4F0",
-            "Name": "Amir Saunders",
-            "RegisterDate": "2014-08-13T09:17:49-07:00"
-        },
-        {
-            "Account": "EED7653D-7DD9-A722-64A8-36A55ECDBE77",
-            "Name": "Derek Thornton",
-            "RegisterDate": "2012-02-27T01:31:07-08:00"
-        },
-        {
-            "Account": "2A2E6D40-FEBD-C643-A751-9AB4CAF1E2F6",
-            "Name": "Fletcher Romero",
-            "RegisterDate": "2010-06-25T15:49:54-07:00"
-        },
-        {
-            "Account": "3978F8FA-DFF0-DA0E-0A5D-EB9D281A3286",
-            "Name": "Thaddeus Stein",
-            "RegisterDate": "2013-11-10T07:29:41-08:00"
-        },
-        {
-            "Account": "658DBF5A-176E-569A-9273-74FB5F69FA42",
-            "Name": "Nash Knapp",
-            "RegisterDate": "2005-06-24T09:11:19-07:00"
-        },
-        {
-            "Account": "76D2EE4B-7A73-1212-F6F2-957EF8C1F907",
-            "Name": "Quamar Vega",
-            "RegisterDate": "2011-04-13T20:06:29-07:00"
-        },
-        {
-            "Account": "00E46809-A595-CE82-C5B4-D1CAEB7E3E58",
-            "Name": "Philip Galloway",
-            "RegisterDate": "2008-08-21T18:59:38-07:00"
-        },
-        {
-            "Account": "C196781C-DDCC-AF83-DDC2-CA3E851A47A0",
-            "Name": "Mason French",
-            "RegisterDate": "2000-11-15T00:38:37-08:00"
-        },
-        {
-            "Account": "5911F201-818A-B393-5888-13157CE0D63F",
-            "Name": "Ross Cortez",
-            "RegisterDate": "2010-05-27T17:35:32-07:00"
-        },
-        {
-            "Account": "B8BB78F9-E1A1-A956-086F-E12B6FE168B6",
-            "Name": "Logan King",
-            "RegisterDate": "2003-07-08T16:58:06-07:00"
-        },
-        {
-            "Account": "06F636C3-9599-1A2D-5FD5-86B24ADDE626",
-            "Name": "Cedric Leblanc",
-            "RegisterDate": "2011-06-30T14:30:10-07:00"
-        },
-        {
-            "Account": "FE880CDD-F6E7-75CB-743C-64C6DE192412",
-            "Name": "Simon Sullivan",
-            "RegisterDate": "2013-06-11T16:35:07-07:00"
-        },
-        {
-            "Account": "BBEDD673-E2C1-4872-A5D3-C4EBD4BE0A12",
-            "Name": "Jamal West",
-            "RegisterDate": "2001-03-16T20:18:29-08:00"
-        },
-        {
-            "Account": "19BC22FA-C52E-0CC6-9552-10365C755FAC",
-            "Name": "Hector Morales",
-            "RegisterDate": "2012-11-01T01:56:34-07:00"
-        },
-        {
-            "Account": "A8292214-2C13-5989-3419-6B83DD637D6C",
-            "Name": "Herrod Hart",
-            "RegisterDate": "2008-03-13T19:21:04-07:00"
-        },
-        {
-            "Account": "0285564B-F447-0E7F-EAA1-7FB8F9C453C8",
-            "Name": "Clark Maxwell",
-            "RegisterDate": "2004-08-05T08:22:24-07:00"
-        },
-        {
-            "Account": "EA78F076-4F6E-4228-268C-1F51272498AE",
-            "Name": "Reuben Walter",
-            "RegisterDate": "2011-01-23T01:55:59-08:00"
-        },
-        {
-            "Account": "6A88C194-EA21-426F-4FE2-F2AE33F51793",
-            "Name": "Ira Ingram",
-            "RegisterDate": "2008-08-15T05:57:46-07:00"
-        },
-        {
-            "Account": "4275E873-439C-AD26-56B3-8715E336508E",
-            "Name": "Damian Morrow",
-            "RegisterDate": "2015-09-13T01:50:55-07:00"
-        },
-        {
-            "Account": "A0D733C4-9070-B8D6-4387-D44F0BA515BE",
-            "Name": "Macon Farrell",
-            "RegisterDate": "2011-03-14T05:41:40-07:00"
-        },
-        {
-            "Account": "B3683DE8-C2FA-7CA0-A8A6-8FA7E954F90A",
-            "Name": "Joel Galloway",
-            "RegisterDate": "2003-02-03T04:19:01-08:00"
-        },
-        {
-            "Account": "01D95A8E-91BC-2050-F5D0-4437AAFFD11F",
-            "Name": "Rigel Horton",
-            "RegisterDate": "2015-06-20T11:53:11-07:00"
-        },
-        {
-            "Account": "F0D12CC0-31AC-A82E-FD73-EEEFDBD21A36",
-            "Name": "Sylvester Gaines",
-            "RegisterDate": "2004-03-12T09:57:13-08:00"
-        },
-        {
-            "Account": "874FCC49-9A61-71BC-2F4E-2CE88348AD7B",
-            "Name": "Abbot Mckay",
-            "RegisterDate": "2008-12-26T20:42:57-08:00"
-        },
-        {
-            "Account": "B8DA1912-20A0-FB6E-0031-5F88FD63EF90",
-            "Name": "Solomon Green",
-            "RegisterDate": "2013-09-04T01:44:47-07:00"
-        }
-     ];
-
-}());

+ 0 - 82
src/api/static/js/jsgrid/demos/demos.css

@@ -1,82 +0,0 @@
-* {
-    margin: 0;
-    padding: 0;
-    box-sizing: border-box;
-}
-
-html {
-    height: 100%;
-}
-
-body {
-    height: 100%;
-    padding: 10px;
-    color: #262626;
-    font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
-    font-size: 14px;
-    font-weight: 300;
-}
-
-h1 {
-    margin: 0 0 8px 0;
-    font-size: 24px;
-    font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
-    font-weight: 300;
-}
-
-h2 {
-    margin: 16px 0 8px 0;
-    font-size: 18px;
-    font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
-    font-weight: 300;
-}
-
-ul {
-    list-style: none;
-}
-
-a {
-    color: #2ba6cb;
-    text-decoration: none;
-}
-
-a:hover {
-    text-decoration: underline;
-    color: #258faf;
-}
-
-input, button, select {
-    font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
-    font-weight: 300;
-    font-size: 14px;
-    padding: 2px;
-}
-
-.navigation {
-    width: 200px;
-    position: absolute;
-    top: 0;
-    bottom: 0;
-    left: 0;
-    padding: 10px;
-    border-right: 1px solid #e9e9e9;
-}
-
-.navigation li {
-    margin: 10px 0;
-}
-
-.demo-frame {
-    position: absolute;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    left: 200px;
-}
-
-iframe[name='demo'] {
-    display: block;
-    width: 100%;
-    height: 100%;
-    border: none;
-}

+ 0 - 72
src/api/static/js/jsgrid/demos/external-pager.html

@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - External Pager Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-
-    <style>
-        .external-pager {
-            margin: 10px 0;
-        }
-
-        .external-pager .jsgrid-pager-current-page {
-            background: #c4e2ff;
-            color: #fff;
-        }
-    </style>
-</head>
-<body>
-    <h1>External Customized Pager</h1>
-    <div id="externalPager" class="external-pager"></div>
-
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                paging: true,
-                pageSize: 15,
-                pageButtonCount: 5,
-                pagerContainer: "#externalPager",
-                pagerFormat: "current page: {pageIndex} &nbsp;&nbsp; {first} {prev} {pages} {next} {last} &nbsp;&nbsp; total pages: {pageCount} total items: {itemCount}",
-                pagePrevText: "<",
-                pageNextText: ">",
-                pageFirstText: "<<",
-                pageLastText: ">>",
-                pageNavigatorNextText: "&#8230;",
-                pageNavigatorPrevText: "&#8230;",
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married" }
-                ],
-                data: db.clients
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 31
src/api/static/js/jsgrid/demos/index.html

@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Simple jQuery DataGrid - Demos</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-</head>
-<body>
-    <div class="navigation">
-        <h1>jsGrid Demos</h1>
-        <ul>
-            <li><a href="basic.html" target="demo">Basic Scenario</a></li>
-            <li><a href="static-data.html" target="demo">Static Data</a></li>
-            <li><a href="odata-service.html" target="demo">OData Service</a></li>
-            <li><a href="data-manipulation.html" target="demo">Data Manipulation</a></li>
-            <li><a href="validation.html" target="demo">Validation</a></li>
-            <li><a href="sorting.html" target="demo">Sorting</a></li>
-            <li><a href="loading-by-page.html" target="demo">Loading by Page</a></li>
-            <li><a href="custom-view.html" target="demo">Custom View</a></li>
-            <li><a href="custom-row-renderer.html" target="demo">Custom Row Renderer</a></li>
-            <li><a href="external-pager.html" target="demo">External Pager</a></li>
-            <li><a href="custom-grid-field.html" target="demo">Custom Grid Field</a></li>
-            <li><a href="localization.html" target="demo">Localization</a></li>
-        </ul>
-    </div>
-    <div class="demo-frame">
-        <iframe name="demo" src="basic.html"></iframe>
-    </div>
-</body>
-</html>

+ 0 - 90
src/api/static/js/jsgrid/demos/loading-by-page.html

@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Loading Data by Page Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-
-    <style>
-        .pager-panel {
-            padding: 10px;
-            margin: 10px 0;
-            background: #fcfcfc;
-            border: 1px solid #e9e9e9;
-            display: inline-block;
-        }
-    </style>
-</head>
-<body>
-    <h1>Loading Data by Page</h1>
-    <div class="pager-panel">
-        <label>Page:
-            <select id="pager">
-                <option>1</option>
-                <option selected>2</option>
-                <option>3</option>
-                <option>4</option>
-                <option>5</option>
-                <option>6</option>
-                <option>7</option>
-            </select>
-        </label>
-    </div>
-
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                autoload: true,
-                paging: true,
-                pageLoading: true,
-                pageSize: 15,
-                pageIndex: 2,
-                controller: {
-                    loadData: function(filter) {
-                        var startIndex = (filter.pageIndex - 1) * filter.pageSize;
-                        return {
-                            data: db.clients.slice(startIndex, startIndex + filter.pageSize),
-                            itemsCount: db.clients.length
-                        };
-                    }
-                },
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married" }
-                ]
-            });
-
-            $("#pager").on("change", function() {
-                var page = parseInt($(this).val(), 10);
-                $("#jsGrid").jsGrid("openPage", page);
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 62
src/api/static/js/jsgrid/demos/localization.html

@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Localization (FR)</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.validation.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-    <script src="../src/i18n/fr.js"></script>
-</head>
-<body>
-    <h1>Localization (FR)</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            jsGrid.locale("fr");
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                filtering: true,
-                editing: true,
-                inserting: true,
-                sorting: true,
-                paging: true,
-                autoload: true,
-                pageSize: 15,
-                pageButtonCount: 5,
-                controller: db,
-                fields: [
-                    { name: "Name", title: "Nom", type: "text", width: 150, validate: "required" },
-                    { name: "Age", title: "Âge", type: "number", width: 50, validate: { validator: "range", param: [18,80] } },
-                    { name: "Address", title: "Adresse", type: "text", width: 200, validate: { validator: "rangeLength", param: [10, 250] } },
-                    { name: "Country", title: "Pays", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", title: "Marié", type: "checkbox", sorting: false },
-                    { type: "control" }
-                ]
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 74
src/api/static/js/jsgrid/demos/odata-service.html

@@ -1,74 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - OData Service Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.textarea.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-
-    <style>
-        .rating {
-            color: #F8CA03;
-        }
-    </style>
-</head>
-<body>
-    <h1>OData Service</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "auto",
-                width: "auto",
-                sorting: true,
-                paging: false,
-                autoload: true,
-                controller: {
-                    loadData: function() {
-                        var d = $.Deferred();
-
-                        $.ajax({
-                            url: "http://services.odata.org/V3/(S(3mnweai3qldmghnzfshavfok))/OData/OData.svc/Products",
-                            dataType: "json"
-                        }).done(function(response) {
-                            d.resolve(response.value);
-                        });
-
-                        return d.promise();
-                    }
-                },
-                fields: [
-                    { name: "Name", type: "text", width: 100 },
-                    { name: "Description", type: "textarea", width: 200 },
-                    { name: "Rating", type: "number", width: 150, align: "center",
-                        itemTemplate: function(value) {
-                            return $("<div>").addClass("rating").append(Array(value + 1).join("&#9733;"));
-                        }
-                    },
-                    { name: "Price", type: "number", width: 100,
-                        itemTemplate: function(value) {
-                            return value.toFixed(2) + "$"; }
-                    }
-                ]
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 83
src/api/static/js/jsgrid/demos/rows-reordering.html

@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Rows Reordering Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">
-    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
-    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-</head>
-<body>
-<h1>Rows Reordering Scenario</h1>
-<div id="jsGrid"></div>
-
-<script>
-    $(function() {
-
-        $("#jsGrid").jsGrid({
-            height: "70%",
-            width: "100%",
-            autoload: true,
-
-            rowClass: function(item, itemIndex) {
-                return "client-" + itemIndex;
-            },
-
-            controller: {
-                loadData: function() {
-                    return db.clients.slice(0, 15);
-                }
-            },
-
-            fields: [
-                { name: "Name", type: "text", width: 150 },
-                { name: "Age", type: "number", width: 50 },
-                { name: "Address", type: "text", width: 200 },
-                { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                { name: "Married", type: "checkbox", title: "Is Married", sorting: false }
-            ],
-
-            onRefreshed: function() {
-                var $gridData = $("#jsGrid .jsgrid-grid-body tbody");
-
-                $gridData.sortable({
-                    update: function(e, ui) {
-                        // array of indexes
-                        var clientIndexRegExp = /\s*client-(\d+)\s*/;
-                        var indexes = $.map($gridData.sortable("toArray", { attribute: "class" }), function(classes) {
-                            return clientIndexRegExp.exec(classes)[1];
-                        });
-                        alert("Reordered indexes: " + indexes.join(", "));
-
-                        // arrays of items
-                        var items = $.map($gridData.find("tr"), function(row) {
-                            return $(row).data("JSGridItem");
-                        });
-                        console && console.log("Reordered items", items);
-                    }
-                });
-            }
-        });
-
-    });
-</script>
-</body>
-</html>

+ 0 - 78
src/api/static/js/jsgrid/demos/sorting.html

@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Sorting Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-
-    <style>
-        .sort-panel {
-            padding: 10px;
-            margin: 10px 0;
-            background: #fcfcfc;
-            border: 1px solid #e9e9e9;
-            display: inline-block;
-        }
-    </style>
-</head>
-<body>
-    <h1>Sorting</h1>
-    <div class="sort-panel">
-        <label>Sorting Field:
-            <select id="sortingField">
-                <option>Name</option>
-                <option>Age</option>
-                <option>Address</option>
-                <option>Country</option>
-                <option>Married</option>
-            </select>
-            <button type="button" id="sort">Sort</button>
-        </label>
-    </div>
-
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                autoload: true,
-                selecting: false,
-                controller: db,
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married" }
-                ]
-            });
-
-            $("#sort").click(function() {
-                var field = $("#sortingField").val();
-                $("#jsGrid").jsGrid("sort", field);
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 50
src/api/static/js/jsgrid/demos/static-data.html

@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Static Data Scenario</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-</head>
-<body>
-    <h1>Static Data</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                sorting: true,
-                paging: true,
-                fields: [
-                    { name: "Name", type: "text", width: 150 },
-                    { name: "Age", type: "number", width: 50 },
-                    { name: "Address", type: "text", width: 200 },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
-                    { name: "Married", type: "checkbox", title: "Is Married" }
-                ],
-                data: db.clients
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 61
src/api/static/js/jsgrid/demos/validation.html

@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>jsGrid - Validation</title>
-    <link rel="stylesheet" type="text/css" href="demos.css" />
-    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
-
-    <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
-    <link rel="stylesheet" type="text/css" href="../css/theme.css" />
-
-    <script src="../external/jquery/jquery-1.8.3.js"></script>
-    <script src="db.js"></script>
-
-    <script src="../src/jsgrid.core.js"></script>
-    <script src="../src/jsgrid.load-indicator.js"></script>
-    <script src="../src/jsgrid.load-strategies.js"></script>
-    <script src="../src/jsgrid.sort-strategies.js"></script>
-    <script src="../src/jsgrid.validation.js"></script>
-    <script src="../src/jsgrid.field.js"></script>
-    <script src="../src/fields/jsgrid.field.text.js"></script>
-    <script src="../src/fields/jsgrid.field.number.js"></script>
-    <script src="../src/fields/jsgrid.field.select.js"></script>
-    <script src="../src/fields/jsgrid.field.checkbox.js"></script>
-    <script src="../src/fields/jsgrid.field.control.js"></script>
-</head>
-<body>
-    <h1>Validation</h1>
-    <div id="jsGrid"></div>
-
-    <script>
-        $(function() {
-
-            $("#jsGrid").jsGrid({
-                height: "70%",
-                width: "100%",
-                filtering: true,
-                editing: true,
-                inserting: true,
-                sorting: true,
-                paging: true,
-                autoload: true,
-                pageSize: 15,
-                pageButtonCount: 5,
-                deleteConfirm: "Do you really want to delete the client?",
-                controller: db,
-                fields: [
-                    { name: "Name", type: "text", width: 150, validate: "required" },
-                    { name: "Age", type: "number", width: 50, validate: { validator: "range", param: [18,80] } },
-                    { name: "Address", type: "text", width: 200, validate: { validator: "rangeLength", param: [10, 250] } },
-                    { name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name",
-                        validate: { message: "Country should be specified", validator: function(value) { return value > 0; } } },
-                    { name: "Married", type: "checkbox", title: "Is Married", sorting: false },
-                    { type: "control" }
-                ]
-            });
-
-        });
-    </script>
-</body>
-</html>

+ 0 - 235
src/api/static/js/jsgrid/external/qunit/qunit-1.10.0.css

@@ -1,235 +0,0 @@
-/**
- * QUnit v1.10.0 - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 5px 5px 0 0;
-	-moz-border-radius: 5px 5px 0 0;
-	-webkit-border-top-right-radius: 5px;
-	-webkit-border-top-left-radius: 5px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-testrunner-toolbar label {
-	display: inline-block;
-	padding: 0 .5em 0 .1em;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-	overflow: hidden;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-#qunit-modulefilter-container {
-	float: right;
-}
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	padding: 5px;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #3c510c;
-	background-color: #fff;
-	border-left: 10px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 10px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 5px 5px;
-	-moz-border-radius: 0 0 5px 5px;
-	-webkit-border-bottom-right-radius: 5px;
-	-webkit-border-bottom-left-radius: 5px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-#qunit-testresult .module-name {
-	font-weight: bold;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-	width: 1000px;
-	height: 1000px;
-}

File diff suppressed because it is too large
+ 0 - 1977
src/api/static/js/jsgrid/external/qunit/qunit-1.10.0.js


File diff suppressed because it is too large
+ 0 - 258
src/api/static/js/jsgrid/jsgrid-theme.css


File diff suppressed because it is too large
+ 0 - 7
src/api/static/js/jsgrid/jsgrid-theme.min.css


+ 0 - 126
src/api/static/js/jsgrid/jsgrid.css

@@ -1,126 +0,0 @@
-/*
- * jsGrid v1.5.3 (http://js-grid.com)
- * (c) 2016 Artem Tabalin
- * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
- */
-
-.jsgrid {
-    position: relative;
-    overflow: hidden;
-    font-size: 1em;
-}
-
-.jsgrid, .jsgrid *, .jsgrid *:before, .jsgrid *:after {
-    box-sizing: border-box;
-}
-
-.jsgrid input,
-.jsgrid textarea,
-.jsgrid select {
-    font-size: 1em;
-}
-
-.jsgrid-grid-header {
-    overflow-x: hidden;
-    overflow-y: scroll;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    -o-user-select: none;
-    user-select: none;
-}
-
-.jsgrid-grid-body {
-    overflow-x: auto;
-    overflow-y: scroll;
-    -webkit-overflow-scrolling: touch;
-}
-
-.jsgrid-table {
-    width: 100%;
-    table-layout: fixed;
-    border-collapse: collapse;
-    border-spacing: 0;
-}
-
-.jsgrid-cell {
-    padding: 0.5em 0.5em;
-}
-
-.jsgrid-сell,
-.jsgrid-header-cell {
-    box-sizing: border-box;
-}
-
-.jsgrid-align-left {
-    text-align: left;
-}
-
-.jsgrid-align-center,
-.jsgrid-align-center input,
-.jsgrid-align-center textarea,
-.jsgrid-align-center select {
-    text-align: center;
-}
-
-.jsgrid-align-right,
-.jsgrid-align-right input,
-.jsgrid-align-right textarea,
-.jsgrid-align-right select {
-    text-align: right;
-}
-
-.jsgrid-header-cell {
-    padding: .5em .5em;
-}
-
-.jsgrid-filter-row input,
-.jsgrid-filter-row textarea,
-.jsgrid-filter-row select,
-.jsgrid-edit-row input,
-.jsgrid-edit-row textarea,
-.jsgrid-edit-row select,
-.jsgrid-insert-row input,
-.jsgrid-insert-row textarea,
-.jsgrid-insert-row select {
-    width: 100%;
-    padding: .3em .5em;
-}
-
-.jsgrid-filter-row input[type='checkbox'],
-.jsgrid-edit-row input[type='checkbox'],
-.jsgrid-insert-row input[type='checkbox'] {
-    width: auto;
-}
-
-
-.jsgrid-selected-row .jsgrid-cell {
-    cursor: pointer;
-}
-
-.jsgrid-nodata-row .jsgrid-cell {
-    padding: .5em 0;
-    text-align: center;
-}
-
-.jsgrid-header-sort {
-    cursor: pointer;
-}
-
-.jsgrid-pager {
-    padding: .5em 0;
-}
-
-.jsgrid-pager-nav-button {
-    padding: .2em .6em;
-}
-
-.jsgrid-pager-nav-inactive-button {
-    display: none;
-    pointer-events: none;
-}
-
-.jsgrid-pager-page {
-    padding: .2em .6em;
-}

File diff suppressed because it is too large
+ 0 - 2516
src/api/static/js/jsgrid/jsgrid.js


File diff suppressed because it is too large
+ 0 - 7
src/api/static/js/jsgrid/jsgrid.min.css


File diff suppressed because it is too large
+ 0 - 8
src/api/static/js/jsgrid/jsgrid.min.js


+ 0 - 38
src/api/static/js/jsgrid/package.json

@@ -1,38 +0,0 @@
-{
-    "name": "jsgrid",
-    "version": "1.5.3",
-    "description": "Lightweight data grid jQuery plugin. It supports basic grid operations like inserting, filtering, editing, deleting, paging, sorting, and validation. jsGrid is tunable and allows to customize appearance and components.",
-    "keywords": [
-        "grid",
-        "jquery",
-        "plugin"
-    ],
-    "homepage": "http://js-grid.com",
-    "author": "Artem Tabalin",
-    "license": {
-        "type": "MIT",
-        "url": "https://github.com/tabalinas/jsgrid/blob/master/LICENSE"
-    },
-    "main": "dist/jsgrid.js",
-    "directories": {
-        "test": "tests"
-    },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/tabalinas/jsgrid"
-    },
-    "bugs": {
-        "url": "https://github.com/tabalinas/jsgrid/issues"
-    },
-    "dependencies": {},
-    "devDependencies": {
-        "grunt": "^0.4.5",
-        "grunt-contrib-concat": "~0.3.0",
-        "grunt-contrib-copy": "^0.7.0",
-        "grunt-contrib-cssmin": "^0.10.0",
-        "grunt-contrib-qunit": "^0.5.2",
-        "grunt-contrib-uglify": "^0.4.0",
-        "grunt-image-embed": "^0.3.1",
-        "grunt-string-replace": "^1.2.1"
-    }
-}

+ 0 - 97
src/api/static/js/jsgrid/src/fields/jsgrid.field.checkbox.js

@@ -1,97 +0,0 @@
-(function(jsGrid, $, undefined) {
-
-    var Field = jsGrid.Field;
-
-    function CheckboxField(config) {
-        Field.call(this, config);
-    }
-
-    CheckboxField.prototype = new Field({
-
-        sorter: "number",
-        align: "center",
-        autosearch: true,
-
-        itemTemplate: function(value) {
-            return this._createCheckbox().prop({
-                checked: value,
-                disabled: true
-            });
-        },
-
-        filterTemplate: function() {
-            if(!this.filtering)
-                return "";
-
-            var grid = this._grid,
-                $result = this.filterControl = this._createCheckbox();
-
-            $result.prop({
-                readOnly: true,
-                indeterminate: true
-            });
-
-            $result.on("click", function() {
-                var $cb = $(this);
-
-                if($cb.prop("readOnly")) {
-                    $cb.prop({
-                        checked: false,
-                        readOnly: false
-                    });
-                }
-                else if(!$cb.prop("checked")) {
-                    $cb.prop({
-                        readOnly: true,
-                        indeterminate: true
-                    });
-                }
-            });
-
-            if(this.autosearch) {
-                $result.on("click", function() {
-                    grid.search();
-                });
-            }
-
-            return $result;
-        },
-
-        insertTemplate: function() {
-            if(!this.inserting)
-                return "";
-
-            return this.insertControl = this._createCheckbox();
-        },
-
-        editTemplate: function(value) {
-            if(!this.editing)
-                return this.itemTemplate.apply(this, arguments);
-
-            var $result = this.editControl = this._createCheckbox();
-            $result.prop("checked", value);
-            return $result;
-        },
-
-        filterValue: function() {
-            return this.filterControl.get(0).indeterminate
-                ? undefined
-                : this.filterControl.is(":checked");
-        },
-
-        insertValue: function() {
-            return this.insertControl.is(":checked");
-        },
-
-        editValue: function() {
-            return this.editControl.is(":checked");
-        },
-
-        _createCheckbox: function() {
-            return $("<input>").attr("type", "checkbox");
-        }
-    });
-
-    jsGrid.fields.checkbox = jsGrid.CheckboxField = CheckboxField;
-
-}(jsGrid, jQuery));

+ 0 - 223
src/api/static/js/jsgrid/src/fields/jsgrid.field.control.js

@@ -1,223 +0,0 @@
-(function(jsGrid, $, undefined) {
-
-    var Field = jsGrid.Field;
-
-    function ControlField(config) {
-        Field.call(this, config);
-        this._configInitialized = false;
-    }
-
-    ControlField.prototype = new Field({
-        css: "jsgrid-control-field",
-        align: "center",
-        width: 50,
-        filtering: false,
-        inserting: false,
-        editing: false,
-        sorting: false,
-
-        buttonClass: "jsgrid-button",
-        modeButtonClass: "jsgrid-mode-button",
-
-        modeOnButtonClass: "jsgrid-mode-on-button",
-        searchModeButtonClass: "jsgrid-search-mode-button",
-        insertModeButtonClass: "jsgrid-insert-mode-button",
-        editButtonClass: "jsgrid-edit-button",
-        deleteButtonClass: "jsgrid-delete-button",
-        searchButtonClass: "jsgrid-search-button",
-        clearFilterButtonClass: "jsgrid-clear-filter-button",
-        insertButtonClass: "jsgrid-insert-button",
-        updateButtonClass: "jsgrid-update-button",
-        cancelEditButtonClass: "jsgrid-cancel-edit-button",
-
-        searchModeButtonTooltip: "Switch to searching",
-        insertModeButtonTooltip: "Switch to inserting",
-        editButtonTooltip: "Edit",
-        deleteButtonTooltip: "Delete",
-        searchButtonTooltip: "Search",
-        clearFilterButtonTooltip: "Clear filter",
-        insertButtonTooltip: "Insert",
-        updateButtonTooltip: "Update",
-        cancelEditButtonTooltip: "Cancel edit",
-
-        editButton: true,
-        deleteButton: true,
-        clearFilterButton: true,
-        modeSwitchButton: true,
-
-        _initConfig: function() {
-            this._hasFiltering = this._grid.filtering;
-            this._hasInserting = this._grid.inserting;
-
-            if(this._hasInserting && this.modeSwitchButton) {
-                this._grid.inserting = false;
-            }
-
-            this._configInitialized = true;
-        },
-
-        headerTemplate: function() {
-            if(!this._configInitialized) {
-                this._initConfig();
-            }
-
-            var hasFiltering = this._hasFiltering;
-            var hasInserting = this._hasInserting;
-
-            if(!this.modeSwitchButton || (!hasFiltering && !hasInserting))
-                return "";
-
-            if(hasFiltering && !hasInserting)
-                return this._createFilterSwitchButton();
-
-            if(hasInserting && !hasFiltering)
-                return this._createInsertSwitchButton();
-
-            return this._createModeSwitchButton();
-        },
-
-        itemTemplate: function(value, item) {
-            var $result = $([]);
-
-            if(this.editButton) {
-                $result = $result.add(this._createEditButton(item));
-            }
-
-            if(this.deleteButton) {
-                $result = $result.add(this._createDeleteButton(item));
-            }
-
-            return $result;
-        },
-
-        filterTemplate: function() {
-            var $result = this._createSearchButton();
-            return this.clearFilterButton ? $result.add(this._createClearFilterButton()) : $result;
-        },
-
-        insertTemplate: function() {
-            return this._createInsertButton();
-        },
-
-        editTemplate: function() {
-            return this._createUpdateButton().add(this._createCancelEditButton());
-        },
-
-        _createFilterSwitchButton: function() {
-            return this._createOnOffSwitchButton("filtering", this.searchModeButtonClass, true);
-        },
-
-        _createInsertSwitchButton: function() {
-            return this._createOnOffSwitchButton("inserting", this.insertModeButtonClass, false);
-        },
-
-        _createOnOffSwitchButton: function(option, cssClass, isOnInitially) {
-            var isOn = isOnInitially;
-
-            var updateButtonState = $.proxy(function() {
-                $button.toggleClass(this.modeOnButtonClass, isOn);
-            }, this);
-
-            var $button = this._createGridButton(this.modeButtonClass + " " + cssClass, "", function(grid) {
-                isOn = !isOn;
-                grid.option(option, isOn);
-                updateButtonState();
-            });
-
-            updateButtonState();
-
-            return $button;
-        },
-
-        _createModeSwitchButton: function() {
-            var isInserting = false;
-
-            var updateButtonState = $.proxy(function() {
-                $button.attr("title", isInserting ? this.searchModeButtonTooltip : this.insertModeButtonTooltip)
-                    .toggleClass(this.insertModeButtonClass, !isInserting)
-                    .toggleClass(this.searchModeButtonClass, isInserting);
-            }, this);
-
-            var $button = this._createGridButton(this.modeButtonClass, "", function(grid) {
-                isInserting = !isInserting;
-                grid.option("inserting", isInserting);
-                grid.option("filtering", !isInserting);
-                updateButtonState();
-            });
-
-            updateButtonState();
-
-            return $button;
-        },
-
-        _createEditButton: function(item) {
-            return this._createGridButton(this.editButtonClass, this.editButtonTooltip, function(grid, e) {
-                grid.editItem(item);
-                e.stopPropagation();
-            });
-        },
-
-        _createDeleteButton: function(item) {
-            return this._createGridButton(this.deleteButtonClass, this.deleteButtonTooltip, function(grid, e) {
-                grid.deleteItem(item);
-                e.stopPropagation();
-            });
-        },
-
-        _createSearchButton: function() {
-            return this._createGridButton(this.searchButtonClass, this.searchButtonTooltip, function(grid) {
-                grid.search();
-            });
-        },
-
-        _createClearFilterButton: function() {
-            return this._createGridButton(this.clearFilterButtonClass, this.clearFilterButtonTooltip, function(grid) {
-                grid.clearFilter();
-            });
-        },
-
-        _createInsertButton: function() {
-            return this._createGridButton(this.insertButtonClass, this.insertButtonTooltip, function(grid) {
-                grid.insertItem().done(function() {
-                    grid.clearInsert();
-                });
-            });
-        },
-
-        _createUpdateButton: function() {
-            return this._createGridButton(this.updateButtonClass, this.updateButtonTooltip, function(grid, e) {
-                grid.updateItem();
-                e.stopPropagation();
-            });
-        },
-
-        _createCancelEditButton: function() {
-            return this._createGridButton(this.cancelEditButtonClass, this.cancelEditButtonTooltip, function(grid, e) {
-                grid.cancelEdit();
-                e.stopPropagation();
-            });
-        },
-
-        _createGridButton: function(cls, tooltip, clickHandler) {
-            var grid = this._grid;
-
-            return $("<input>").addClass(this.buttonClass)
-                .addClass(cls)
-                .attr({
-                    type: "button",
-                    title: tooltip
-                })
-                .on("click", function(e) {
-                    clickHandler(grid, e);
-                });
-        },
-
-        editValue: function() {
-            return "";
-        }
-
-    });
-
-    jsGrid.fields.control = jsGrid.ControlField = ControlField;
-
-}(jsGrid, jQuery));

+ 0 - 41
src/api/static/js/jsgrid/src/fields/jsgrid.field.number.js

@@ -1,41 +0,0 @@
-(function(jsGrid, $, undefined) {
-
-    var TextField = jsGrid.TextField;
-
-    function NumberField(config) {
-        TextField.call(this, config);
-    }
-
-    NumberField.prototype = new TextField({
-
-        sorter: "number",
-        align: "right",
-		readOnly: false,
-
-        filterValue: function() {
-            return this.filterControl.val()
-                ? parseInt(this.filterControl.val() || 0, 10)
-                : undefined;
-        },
-
-        insertValue: function() {
-            return this.insertControl.val()
-                ? parseInt(this.insertControl.val() || 0, 10)
-                : undefined;
-        },
-
-        editValue: function() {
-            return this.editControl.val()
-                ? parseInt(this.editControl.val() || 0, 10)
-                : undefined;
-        },
-
-        _createTextBox: function() {
-			return $("<input>").attr("type", "number")
-                .prop("readonly", !!this.readOnly);
-        }
-    });
-
-    jsGrid.fields.number = jsGrid.NumberField = NumberField;
-
-}(jsGrid, jQuery));

+ 0 - 121
src/api/static/js/jsgrid/src/fields/jsgrid.field.select.js

@@ -1,121 +0,0 @@
-(function(jsGrid, $, undefined) {
-
-    var NumberField = jsGrid.NumberField;
-    var numberValueType = "number";
-    var stringValueType = "string";
-
-    function SelectField(config) {
-        this.items = [];
-        this.selectedIndex = -1;
-        this.valueField = "";
-        this.textField = "";
-
-        if(config.valueField && config.items.length) {
-            var firstItemValue = config.items[0][config.valueField];
-            this.valueType = (typeof firstItemValue) === numberValueType ? numberValueType : stringValueType;
-        }
-
-        this.sorter = this.valueType;
-
-        NumberField.call(this, config);
-    }
-
-    SelectField.prototype = new NumberField({
-
-        align: "center",
-        valueType: numberValueType,
-
-        itemTemplate: function(value) {
-            var items = this.items,
-                valueField = this.valueField,
-                textField = this.textField,
-                resultItem;
-
-            if(valueField) {
-                resultItem = $.grep(items, function(item, index) {
-                    return item[valueField] === value;
-                })[0] || {};
-            }
-            else {
-                resultItem = items[value];
-            }
-
-            var result = (textField ? resultItem[textField] : resultItem);
-
-            return (result === undefined || result === null) ? "" : result;
-        },
-
-        filterTemplate: function() {
-            if(!this.filtering)
-                return "";
-
-            var grid = this._grid,
-                $result = this.filterControl = this._createSelect();
-
-            if(this.autosearch) {
-                $result.on("change", function(e) {
-                    grid.search();
-                });
-            }
-
-            return $result;
-        },
-
-        insertTemplate: function() {
-            if(!this.inserting)
-                return "";
-
-            return this.insertControl = this._createSelect();
-        },
-
-        editTemplate: function(value) {
-            if(!this.editing)
-                return this.itemTemplate.apply(this, arguments);
-
-            var $result = this.editControl = this._createSelect();
-            (value !== undefined) && $result.val(value);
-            return $result;
-        },
-
-        filterValue: function() {
-            var val = this.filterControl.val();
-            return this.valueType === numberValueType ? parseInt(val || 0, 10) : val;
-        },
-
-        insertValue: function() {
-            var val = this.insertControl.val();
-            return this.valueType === numberValueType ? parseInt(val || 0, 10) : val;
-        },
-
-        editValue: function() {
-            var val = this.editControl.val();
-            return this.valueType === numberValueType ? parseInt(val || 0, 10) : val;
-        },
-
-        _createSelect: function() {
-            var $result = $("<select>"),
-                valueField = this.valueField,
-                textField = this.textField,
-                selectedIndex = this.selectedIndex;
-
-            $.each(this.items, function(index, item) {
-                var value = valueField ? item[valueField] : index,
-                    text = textField ? item[textField] : item;
-
-                var $option = $("<option>")
-                    .attr("value", value)
-                    .text(text)
-                    .appendTo($result);
-
-                $option.prop("selected", (selectedIndex === index));
-            });
-
-            $result.prop("disabled", !!this.readOnly);
-
-            return $result;
-        }
-    });
-
-    jsGrid.fields.select = jsGrid.SelectField = SelectField;
-
-}(jsGrid, jQuery));

+ 0 - 69
src/api/static/js/jsgrid/src/fields/jsgrid.field.text.js

@@ -1,69 +0,0 @@
-(function(jsGrid, $, undefined) {
-
-    var Field = jsGrid.Field;
-
-    function TextField(config) {
-        Field.call(this, config);
-    }
-
-    TextField.prototype = new Field({
-
-        autosearch: true,
-		readOnly: false,
-
-        filterTemplate: function() {
-            if(!this.filtering)
-                return "";
-
-            var grid = this._grid,
-                $result = this.filterControl = this._createTextBox();
-
-            if(this.autosearch) {
-                $result.on("keypress", function(e) {
-                    if(e.which === 13) {
-                        grid.search();
-                        e.preventDefault();
-                    }
-                });
-            }
-
-            return $result;
-        },
-
-        insertTemplate: function() {
-            if(!this.inserting)
-                return "";
-
-            return this.insertControl = this._createTextBox();
-        },
-
-        editTemplate: function(value) {
-            if(!this.editing)
-                return this.itemTemplate.apply(this, arguments);
-
-            var $result = this.editControl = this._createTextBox();
-            $result.val(value);
-            return $result;
-        },
-
-        filterValue: function() {
-            return this.filterControl.val();
-        },
-
-        insertValue: function() {
-            return this.insertControl.val();
-        },
-
-        editValue: function() {
-            return this.editControl.val();
-        },
-
-        _createTextBox: function() {
-            return $("<input>").attr("type", "text")
-                .prop("readonly", !!this.readOnly);
-        }
-    });
-
-    jsGrid.fields.text = jsGrid.TextField = TextField;
-
-}(jsGrid, jQuery));

+ 0 - 34
src/api/static/js/jsgrid/src/fields/jsgrid.field.textarea.js

@@ -1,34 +0,0 @@
-(function(jsGrid, $, undefined) {
-
-    var TextField = jsGrid.TextField;
-
-    function TextAreaField(config) {
-        TextField.call(this, config);
-    }
-
-    TextAreaField.prototype = new TextField({
-
-        insertTemplate: function() {
-            if(!this.inserting)
-                return "";
-
-            return this.insertControl = this._createTextArea();
-        },
-
-        editTemplate: function(value) {
-            if(!this.editing)
-                return this.itemTemplate.apply(this, arguments);
-
-            var $result = this.editControl = this._createTextArea();
-            $result.val(value);
-            return $result;
-        },
-
-        _createTextArea: function() {
-            return $("<textarea>").prop("readonly", !!this.readOnly);
-        }
-    });
-
-    jsGrid.fields.textarea = jsGrid.TextAreaField = TextAreaField;
-
-}(jsGrid, jQuery));

+ 0 - 46
src/api/static/js/jsgrid/src/i18n/de.js

@@ -1,46 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.de = {
-        grid: {
-            noDataContent: "Die Daten konnten nicht gefunden werden",
-            deleteConfirm: "Möchten Sie die Daten unwiederruflich löschen?",
-            pagerFormat: "Seiten: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} von {pageCount}",
-            pagePrevText: "<",
-            pageNextText: ">",
-            pageFirstText: "<<",
-            pageLastText: ">>",
-            loadMessage: "Bitte warten...",
-            invalidMessage: "Ihre Eingabe ist nicht zulässig!"
-        },
-
-        loadIndicator: {
-            message: "Lädt..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "Suche",
-                insertModeButtonTooltip: "Eintrag hinzufügen",
-                editButtonTooltip: "Bearbeiten",
-                deleteButtonTooltip: "Löschen",
-                searchButtonTooltip: "Eintrag finden",
-                clearFilterButtonTooltip: "Filter zurücksetzen",
-                insertButtonTooltip: "Hinzufügen",
-                updateButtonTooltip: "Speichern",
-                cancelEditButtonTooltip: "Abbrechen"
-            }
-        },
-
-        validators: {
-            required: { message: "Dies ist ein Pflichtfeld" },
-            rangeLength: { message: "Die Länge der Eingabe liegt außerhalb des zulässigen Bereichs" },
-            minLength: { message: "Die Eingabe ist zu kurz" },
-            maxLength: { message: "Die Eingabe ist zu lang" },
-            pattern: { message: "Die Eingabe entspricht nicht dem gewünschten Muster" },
-            range: { message: "Der eingegebene Wert liegt außerhalb des zulässigen Bereichs" },
-            min: { message: "Der eingegebene Wert ist zu niedrig" },
-            max: { message: "Der eingegebene Wert ist zu hoch" }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 46
src/api/static/js/jsgrid/src/i18n/es.js

@@ -1,46 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.es = {
-        grid: {
-            noDataContent: "No encontrado",
-            deleteConfirm: "¿Está seguro?",
-            pagerFormat: "Paginas: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} de {pageCount}",
-            pagePrevText: "Anterior",
-            pageNextText: "Siguiente",
-            pageFirstText: "Primero",
-            pageLastText: "Ultimo",
-            loadMessage: "Por favor, espere...",
-            invalidMessage: "¡Datos no válidos!"
-        },
-
-        loadIndicator: {
-            message: "Cargando..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "Cambiar a búsqueda",
-                insertModeButtonTooltip: "Cambiar a inserción",
-                editButtonTooltip: "Editar",
-                deleteButtonTooltip: "Suprimir",
-                searchButtonTooltip: "Buscar",
-                clearFilterButtonTooltip: "Borrar filtro",
-                insertButtonTooltip: "Insertar",
-                updateButtonTooltip: "Actualizar",
-                cancelEditButtonTooltip: "Cancelar edición"
-            }
-        },
-
-        validators: {
-            required: { message: "Campo requerido" },
-            rangeLength: { message: "La longitud del valor está fuera del intervalo definido" },
-            minLength: { message: "La longitud del valor es demasiado corta" },
-            maxLength: { message: "La longitud del valor es demasiado larga" },
-            pattern: { message: "El valor no se ajusta al patrón definido" },
-            range: { message: "Valor fuera del rango definido" },
-            min: { message: "Valor demasiado bajo" },
-            max: { message: "Valor demasiado alto" }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 47
src/api/static/js/jsgrid/src/i18n/fr.js

@@ -1,47 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.fr = {
-        grid: {
-            noDataContent: "Pas de données",
-            deleteConfirm: "Êtes-vous sûr ?",
-            pagerFormat: "Pages: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} de {pageCount}",
-            pagePrevText: "<",
-            pageNextText: ">",
-            pageFirstText: "<<",
-            pageLastText: ">>",
-            loadMessage: "Chargement en cours...",
-            invalidMessage: "Des données incorrectes sont entrés !"
-        },
-
-        loadIndicator: {
-            message: "Chargement en cours..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "Recherche",
-                insertModeButtonTooltip: "Ajouter une entrée",
-                editButtonTooltip: "Changer",
-                deleteButtonTooltip: "Effacer",
-                searchButtonTooltip: "Trouve",
-                clearFilterButtonTooltip: "Effacer",
-                insertButtonTooltip: "Ajouter",
-                updateButtonTooltip: "Sauvegarder",
-                cancelEditButtonTooltip: "Annuler"
-            }
-        },
-
-        validators: {
-            required: { message: "Champ requis" },
-            rangeLength: { message: "Longueur de la valeur du champ est hors de la plage définie" },
-            minLength: { message: "La valeur du champ est trop court" },
-            maxLength: { message: "La valeur du champ est trop long" },
-            pattern: { message: "La valeur du champ ne correspond pas à la configuration définie" },
-            range: { message: "La valeur du champ est hors de la plage définie" },
-            min: { message: "La valeur du champ est trop petit" },
-            max: { message: "La valeur du champ est trop grande" }
-        }
-    };
-
-}(jsGrid, jQuery));
-

+ 0 - 46
src/api/static/js/jsgrid/src/i18n/he.js

@@ -1,46 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.he = {
-        grid: {
-            noDataContent: "לא נמצא",
-            deleteConfirm: "האם אתה בטוח?",
-            pagerFormat: "עמודים: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} מתוך {pageCount}",
-            pagePrevText: "הקודם",
-            pageNextText: "הבא",
-            pageFirstText: "ראשון",
-            pageLastText: "אחרון",
-            loadMessage: "אנא המתן ...",
-            invalidMessage: "נתונים לא חוקיים!"
-        },
-
-        loadIndicator: {
-            message: "טוען..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "ביצוע חיפוש",
-                insertModeButtonTooltip: "ביצוע עריכת שורה",
-                editButtonTooltip: "עריכה",
-                deleteButtonTooltip: "מחיקה",
-                searchButtonTooltip: "חיפוש",
-                clearFilterButtonTooltip: "ניקוי מסנן",
-                insertButtonTooltip: "הכנסה",
-                updateButtonTooltip: "עדכון",
-                cancelEditButtonTooltip: "ביטול עריכה"
-            }
-        },
-
-        validators: {
-            required: { message: "שדה נדרש" },
-            rangeLength: { message: "אורכו של הערך הוא מחוץ לטווח המוגדר" },
-            minLength: { message: "אורכו של הערך קצר מדי" },
-            maxLength: { message: "אורכו של הערך ארוך מדי" },
-            pattern: { message: "אורכו של הערך ארוך מדי" },
-            range: { message: "ערך מחוץ לטווח" },
-            min: { message: "ערך נמוך מדי" },
-            max: { message: "גבוה מדי" }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 46
src/api/static/js/jsgrid/src/i18n/ja.js

@@ -1,46 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.ja = {
-        grid: {
-            noDataContent: "データが見つかりません。",
-            deleteConfirm: "削除しますよろしですか。",
-            pagerFormat: "頁: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; 【{pageIndex}/{pageCount}】",
-            pagePrevText: "前",
-            pageNextText: "次",
-            pageFirstText: "最初",
-            pageLastText: "最後",
-            loadMessage: "しばらくお待ちください…",
-            invalidMessage: "入力されたデータが不正です。"
-        },
-
-        loadIndicator: {
-            message: "処理中…"
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "検索モードへ",
-                insertModeButtonTooltip: "登録モードへ",
-                editButtonTooltip: "編集",
-                deleteButtonTooltip: "削除",
-                searchButtonTooltip: "フィルター",
-                clearFilterButtonTooltip: "クリア",
-                insertButtonTooltip: "登録",
-                updateButtonTooltip: "更新",
-                cancelEditButtonTooltip: "編集戻す"
-            }
-        },
-
-        validators: {
-            required: { message: "項目が必要です。" },
-            rangeLength: { message: "項目の桁数が範囲外です。" },
-            minLength: { message: "項目の桁数が超過しています。" },
-            maxLength: { message: "項目の桁数が不足しています。" },
-            pattern: { message: "項目の値がパターンに一致しません。" },
-            range: { message: "項目の値が範囲外です。" },
-            min: { message: "項目の値が超過しています。" },
-            max: { message: "項目の値が不足しています。" }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 46
src/api/static/js/jsgrid/src/i18n/ka.js

@@ -1,46 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.ka = {
-        grid: {
-            noDataContent: "მონაცემები ცარიელია.",
-            deleteConfirm: "ნამდვილად გსურთ ჩანაწერის წაშლა?",
-            pagerFormat: "გვერდები: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} - {pageCount} დან.",
-            pagePrevText: "<",
-            pageNextText: ">",
-            pageFirstText: "<<",
-            pageLastText: ">>",
-            loadMessage: "გთხოვთ დაიცადოთ...",
-            invalidMessage: "შეყვანილია არასწორი მონაცემები!"
-        },
-
-        loadIndicator: {
-            message: "მიმდინარეობს ჩატვირთვა..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "ძებნა",
-                insertModeButtonTooltip: "ჩანაწერის დამატება",
-                editButtonTooltip: "შესწორება",
-                deleteButtonTooltip: "წაშლა",
-                searchButtonTooltip: "ძებნა",
-                clearFilterButtonTooltip: "ფილტრის გასუფთავება",
-                insertButtonTooltip: "დამატება",
-                updateButtonTooltip: "შენახვა",
-                cancelEditButtonTooltip: "გაუქმება"
-            }
-        },
-
-        validators: {
-            required: { message: "ველი აუცილებელია შესავსებად." },
-            rangeLength: { message: "შეყვანილი ჩანაწერის ზომა არ ექვემდებარება დიაპაზონს." },
-            minLength: { message: "შეყვანილი ჩანაწერის ზომა საკმაოდ პატარა არის." },
-            maxLength: { message: "შეყვანილი ჩანაწერის ზომა საკმაოდ დიდი არის." },
-            pattern: { message: "შეყვანილი მნიშვნელობა არ ემთხვევა მითითებულ შაბლონს." },
-            range: { message: "შეყვანილი ინფორმაცია არ ჯდება დიაპაზონში." },
-            min: { message: "შეყვანილი ინფორმაციის ზომა საკმაოდ პატარა არის." },
-            max: { message: "შეყვანილი ინფორმაციის ზომა საკმაოდ დიდი არის." }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 62
src/api/static/js/jsgrid/src/i18n/pl.js

@@ -1,62 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales.pl = {
-        grid: {
-            noDataContent: "Nie znaleziono",
-            deleteConfirm: "Czy jesteś pewien?",
-            pagerFormat: "Strony: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} z {pageCount}",
-            pagePrevText: "Poprzednia",
-            pageNextText: "Następna",
-            pageFirstText: "Pierwsza",
-            pageLastText: "Ostatnia",
-            loadMessage: "Proszę czekać...",
-            invalidMessage: "Wprowadzono nieprawidłowe dane!"
-        },
-
-        loadIndicator: {
-            message: "Ładowanie..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "Wyszukiwanie",
-                insertModeButtonTooltip: "Dodawanie",
-                editButtonTooltip: "Edytuj",
-                deleteButtonTooltip: "Usuń",
-                searchButtonTooltip: "Szukaj",
-                clearFilterButtonTooltip: "Wyczyść filtr",
-                insertButtonTooltip: "Dodaj",
-                updateButtonTooltip: "Aktualizuj",
-                cancelEditButtonTooltip: "Anuluj edytowanie"
-            }
-        },
-
-        validators: {
-            required: {
-                message: "Pole jest wymagane"
-            },
-            rangeLength: {
-                message: "Długość wartości pola znajduje się poza zdefiniowanym zakresem"
-            },
-            minLength: {
-                message: "Wartość pola jest zbyt krótka"
-            },
-            maxLength: {
-                message: "Wartość pola jest zbyt długa"
-            },
-            pattern: {
-                message: "Wartość pola nie zgadza się ze zdefiniowanym wzorem"
-            },
-            range: {
-                message: "Wartość pola znajduje się poza zdefiniowanym zakresem"
-            },
-            min: {
-                message: "Wartość pola jest zbyt mała"
-            },
-            max: {
-                message: "Wartość pola jest zbyt duża"
-            }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 46
src/api/static/js/jsgrid/src/i18n/pt-br.js

@@ -1,46 +0,0 @@
-(function(jsGrid) {
-
-    jsGrid.locales["pt-br"] = {
-        grid: {
-            noDataContent: "Não encontrado",
-            deleteConfirm: "Você tem certeza que deseja remover este item?",
-            pagerFormat: "Páginas: {first} {prev} {pages} {next} {last} &nbsp;&nbsp; {pageIndex} de {pageCount}",
-            pagePrevText: "Anterior",
-            pageNextText: "Seguinte",
-            pageFirstText: "Primeira",
-            pageLastText: "Última",
-            loadMessage: "Por favor, espere...",
-            invalidMessage: "Dados inválidos!"
-        },
-
-        loadIndicator: {
-            message: "Carregando..."
-        },
-
-        fields: {
-            control: {
-                searchModeButtonTooltip: "Mudar para busca",
-                insertModeButtonTooltip: "Mudar para inserção",
-                editButtonTooltip: "Editar",
-                deleteButtonTooltip: "Remover",
-                searchButtonTooltip: "Buscar",
-                clearFilterButtonTooltip: "Remover filtro",
-                insertButtonTooltip: "Adicionar",
-                updateButtonTooltip: "Atualizar",
-                cancelEditButtonTooltip: "Cancelar Edição"
-            }
-        },
-
-        validators: {
-            required: { message: "Campo obrigatório" },
-            rangeLength: { message: "O valor esta fora do intervaldo definido" },
-            minLength: { message: "O comprimento do valor é muito curto" },
-            maxLength: { message: "O comprimento valor é muito longo" },
-            pattern: { message: "O valor informado não é compatível com o padrão" },
-            range: { message: "O valor informado esta fora do limite definido" },
-            min: { message: "O valor é muito curto" },
-            max: { message: "O valor é muito longo" }
-        }
-    };
-
-}(jsGrid, jQuery));

+ 0 - 0
src/api/static/js/jsgrid/src/i18n/pt.js


Some files were not shown because too many files changed in this diff