初始化
This commit is contained in:
BIN
WebUI/wwwroot/OT/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
Normal file
BIN
WebUI/wwwroot/OT/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
Normal file
Binary file not shown.
BIN
WebUI/wwwroot/OT/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
Normal file
BIN
WebUI/wwwroot/OT/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
Normal file
Binary file not shown.
BIN
WebUI/wwwroot/OT/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
Normal file
BIN
WebUI/wwwroot/OT/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
Normal file
Binary file not shown.
7
WebUI/wwwroot/OT/Chart.min.js
vendored
Normal file
7
WebUI/wwwroot/OT/Chart.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
13
WebUI/wwwroot/OT/OverlayScrollbars.min.css
vendored
Normal file
13
WebUI/wwwroot/OT/OverlayScrollbars.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
3069
WebUI/wwwroot/OT/adminlte.js
Normal file
3069
WebUI/wwwroot/OT/adminlte.js
Normal file
File diff suppressed because it is too large
Load Diff
12
WebUI/wwwroot/OT/adminlte.min.css
vendored
Normal file
12
WebUI/wwwroot/OT/adminlte.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
5
WebUI/wwwroot/OT/all.min.css
vendored
Normal file
5
WebUI/wwwroot/OT/all.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
7
WebUI/wwwroot/OT/bootstrap.bundle.min.js
vendored
Normal file
7
WebUI/wwwroot/OT/bootstrap.bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
267
WebUI/wwwroot/OT/dashboard.js
Normal file
267
WebUI/wwwroot/OT/dashboard.js
Normal file
@@ -0,0 +1,267 @@
|
||||
/*
|
||||
* Author: Abdullah A Almsaeed
|
||||
* Date: 2014-01-04
|
||||
* Description:
|
||||
* 该文件仅用于主仪表盘的演示 (index.html)
|
||||
**/
|
||||
|
||||
/* global moment:false, Chart:false, Sparkline:false */
|
||||
|
||||
$(function () {
|
||||
'use strict'
|
||||
|
||||
// 使用 jQuery UI 使仪表盘小部件可排序
|
||||
$('.connectedSortable').sortable({
|
||||
placeholder: 'sort-highlight',
|
||||
connectWith: '.connectedSortable',
|
||||
handle: '.card-header, .nav-tabs',
|
||||
forcePlaceholderSize: true,
|
||||
zIndex: 999999
|
||||
})
|
||||
$('.connectedSortable .card-header').css('cursor', 'move')
|
||||
|
||||
// jQuery UI 可排序待办事项列表
|
||||
$('.todo-list').sortable({
|
||||
placeholder: 'sort-highlight',
|
||||
handle: '.handle',
|
||||
forcePlaceholderSize: true,
|
||||
zIndex: 999999
|
||||
})
|
||||
|
||||
// bootstrap WYSIHTML5 - 文本编辑器
|
||||
$('.textarea').summernote()
|
||||
|
||||
$('.daterange').daterangepicker({locale:{applyLabel: '确定',cancelLabel: '取消',customRangeLabel: '自定义范围',},locale:{applyLabel: '确定',cancelLabel: '取消',customRangeLabel: '自定义范围',},
|
||||
ranges: {
|
||||
'今天': [moment(), moment()],
|
||||
'昨天': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'最近7天': [moment().subtract(6, 'days'), moment()],
|
||||
'最近30天': [moment().subtract(29, 'days'), moment()],
|
||||
'本月': [moment().startOf('month'), moment().endOf('month')],
|
||||
'上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
||||
},
|
||||
startDate: moment().subtract(29, 'days'),
|
||||
endDate: moment()
|
||||
}, function (start, end) {
|
||||
// eslint-disable-next-line no-alert
|
||||
alert('你选择了: ' + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'))
|
||||
})
|
||||
|
||||
/* jQueryKnob */
|
||||
$('.knob').knob()
|
||||
|
||||
// jvectormap 数据
|
||||
var visitorsData = {
|
||||
US: 398, // 美国
|
||||
SA: 400, // 沙特阿拉伯
|
||||
CA: 1000, // 加拿大
|
||||
DE: 500, // 德国
|
||||
FR: 760, // 法国
|
||||
CN: 300, // 中国
|
||||
AU: 700, // 澳大利亚
|
||||
BR: 600, // 巴西
|
||||
IN: 800, // 印度
|
||||
GB: 320, // 大不列颠
|
||||
RU: 3000 // 俄罗斯
|
||||
}
|
||||
// jvectormap 世界地图
|
||||
$('#world-map').vectorMap({
|
||||
map: 'usa_en',
|
||||
backgroundColor: 'transparent',
|
||||
regionStyle: {
|
||||
initial: {
|
||||
fill: 'rgba(255, 255, 255, 0.7)',
|
||||
'fill-opacity': 1,
|
||||
stroke: 'rgba(0,0,0,.2)',
|
||||
'stroke-width': 1,
|
||||
'stroke-opacity': 1
|
||||
}
|
||||
},
|
||||
series: {
|
||||
regions: [{
|
||||
values: visitorsData,
|
||||
scale: ['#ffffff', '#0154ad'],
|
||||
normalizeFunction: 'polynomial'
|
||||
}]
|
||||
},
|
||||
onRegionLabelShow: function (e, el, code) {
|
||||
if (typeof visitorsData[code] !== 'undefined') {
|
||||
el.html(el.html() + ': ' + visitorsData[code] + ' 新访客')
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// Sparkline 图表
|
||||
var sparkline1 = new Sparkline($('#sparkline-1')[0], { width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9' })
|
||||
var sparkline2 = new Sparkline($('#sparkline-2')[0], { width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9' })
|
||||
var sparkline3 = new Sparkline($('#sparkline-3')[0], { width: 80, height: 50, lineColor: '#92c1dc', endColor: '#ebf4f9' })
|
||||
|
||||
sparkline1.draw([1000, 1200, 920, 927, 931, 1027, 819, 930, 1021])
|
||||
sparkline2.draw([515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921])
|
||||
sparkline3.draw([15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21])
|
||||
|
||||
// 日历
|
||||
$('#calendar').datetimepicker({
|
||||
format: 'L',
|
||||
inline: true
|
||||
})
|
||||
|
||||
// SLIMSCROLL 聊天小工具
|
||||
$('#chat-box').overlayScrollbars({
|
||||
height: '250px'
|
||||
})
|
||||
|
||||
/* Chart.js Charts */
|
||||
// 销售图表
|
||||
var salesChartCanvas = document.getElementById('revenue-chart-canvas').getContext('2d')
|
||||
// $('#revenue-chart').get(0).getContext('2d');
|
||||
|
||||
var salesChartData = {
|
||||
labels: ['一月', '二月', '三月', '四月', '五月', '六月', '七月'],
|
||||
datasets: [
|
||||
{
|
||||
label: '数字商品',
|
||||
backgroundColor: 'rgba(60,141,188,0.9)',
|
||||
borderColor: 'rgba(60,141,188,0.8)',
|
||||
pointRadius: false,
|
||||
pointColor: '#3b8bba',
|
||||
pointStrokeColor: 'rgba(60,141,188,1)',
|
||||
pointHighlightFill: '#fff',
|
||||
pointHighlightStroke: 'rgba(60,141,188,1)',
|
||||
data: [28, 48, 40, 19, 86, 27, 90]
|
||||
},
|
||||
{
|
||||
label: '电子产品',
|
||||
backgroundColor: 'rgba(210, 214, 222, 1)',
|
||||
borderColor: 'rgba(210, 214, 222, 1)',
|
||||
pointRadius: false,
|
||||
pointColor: 'rgba(210, 214, 222, 1)',
|
||||
pointStrokeColor: '#c1c7d1',
|
||||
pointHighlightFill: '#fff',
|
||||
pointHighlightStroke: 'rgba(220,220,220,1)',
|
||||
data: [65, 59, 80, 81, 56, 55, 40]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
var salesChartOptions = {
|
||||
maintainAspectRatio: false,
|
||||
responsive: true,
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
gridLines: {
|
||||
display: false
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
gridLines: {
|
||||
display: false
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
// 这将获取 jQuery 中的第一个返回的节点。
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
var salesChart = new Chart(salesChartCanvas, { // lgtm[js/unused-local-variable]
|
||||
type: 'line',
|
||||
data: salesChartData,
|
||||
options: salesChartOptions
|
||||
})
|
||||
|
||||
// 环形图
|
||||
var pieChartCanvas = $('#sales-chart-canvas').get(0).getContext('2d')
|
||||
var pieData = {
|
||||
labels: [
|
||||
'店内销售',
|
||||
'下载销售',
|
||||
'邮购销售'
|
||||
],
|
||||
datasets: [
|
||||
{
|
||||
data: [30, 12, 20],
|
||||
backgroundColor: ['#f56954', '#00a65a', '#f39c12']
|
||||
}
|
||||
]
|
||||
}
|
||||
var pieOptions = {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
maintainAspectRatio: false,
|
||||
responsive: true
|
||||
}
|
||||
// 创建饼形图或环形图
|
||||
// 你可以使用以下方法在此之间进行切换。
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
var pieChart = new Chart(pieChartCanvas, { // lgtm[js/unused-local-variable]
|
||||
type: 'doughnut',
|
||||
data: pieData,
|
||||
options: pieOptions
|
||||
})
|
||||
|
||||
// 销售图表
|
||||
var salesGraphChartCanvas = $('#line-chart').get(0).getContext('2d')
|
||||
// $('#revenue-chart').get(0).getContext('2d');
|
||||
|
||||
var salesGraphChartData = {
|
||||
labels: ['2011 一季度', '2011 二季度', '2011 三季度', '2011 四季度', '2012 一季度', '2012 二季度', '2012 三季度', '2012 四季度', '2013 一季度', '2013 二季度'],
|
||||
datasets: [
|
||||
{
|
||||
label: '数字商品',
|
||||
fill: false,
|
||||
borderWidth: 2,
|
||||
lineTension: 0,
|
||||
spanGaps: true,
|
||||
borderColor: '#efefef',
|
||||
pointRadius: 3,
|
||||
pointHoverRadius: 7,
|
||||
pointColor: '#efefef',
|
||||
pointBackgroundColor: '#efefef',
|
||||
data: [2666, 2778, 4912, 3767, 6810, 5670, 4820, 15073, 10687, 8432]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
var salesGraphChartOptions = {
|
||||
maintainAspectRatio: false,
|
||||
responsive: true,
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
ticks: {
|
||||
fontColor: '#efefef'
|
||||
},
|
||||
gridLines: {
|
||||
display: false,
|
||||
color: '#efefef',
|
||||
drawBorder: false
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
stepSize: 5000,
|
||||
fontColor: '#efefef'
|
||||
},
|
||||
gridLines: {
|
||||
display: true,
|
||||
color: '#efefef',
|
||||
drawBorder: false
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
// 这将获取 jQuery 中的第一个返回的节点。
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
var salesGraphChart = new Chart(salesGraphChartCanvas, { // lgtm[js/unused-local-variable]
|
||||
type: 'line',
|
||||
data: salesGraphChartData,
|
||||
options: salesGraphChartOptions
|
||||
})
|
||||
})
|
||||
410
WebUI/wwwroot/OT/daterangepicker.css
Normal file
410
WebUI/wwwroot/OT/daterangepicker.css
Normal file
@@ -0,0 +1,410 @@
|
||||
.daterangepicker {
|
||||
position: absolute;
|
||||
color: inherit;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #ddd;
|
||||
width: 278px;
|
||||
max-width: none;
|
||||
padding: 0;
|
||||
margin-top: 7px;
|
||||
top: 100px;
|
||||
left: 20px;
|
||||
z-index: 3001;
|
||||
display: none;
|
||||
font-family: arial;
|
||||
font-size: 15px;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.daterangepicker:before, .daterangepicker:after {
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
content: '';
|
||||
}
|
||||
|
||||
.daterangepicker:before {
|
||||
top: -7px;
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
}
|
||||
|
||||
.daterangepicker:after {
|
||||
top: -6px;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-left: 6px solid transparent;
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft:before {
|
||||
right: 9px;
|
||||
}
|
||||
|
||||
.daterangepicker.opensleft:after {
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.daterangepicker.openscenter:before {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.daterangepicker.openscenter:after {
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.daterangepicker.opensright:before {
|
||||
left: 9px;
|
||||
}
|
||||
|
||||
.daterangepicker.opensright:after {
|
||||
left: 10px;
|
||||
}
|
||||
|
||||
.daterangepicker.drop-up {
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
.daterangepicker.drop-up:before {
|
||||
top: initial;
|
||||
bottom: -7px;
|
||||
border-bottom: initial;
|
||||
border-top: 7px solid #ccc;
|
||||
}
|
||||
|
||||
.daterangepicker.drop-up:after {
|
||||
top: initial;
|
||||
bottom: -6px;
|
||||
border-bottom: initial;
|
||||
border-top: 6px solid #fff;
|
||||
}
|
||||
|
||||
.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.daterangepicker.single .drp-selected {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.daterangepicker.show-calendar .drp-calendar {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.daterangepicker.show-calendar .drp-buttons {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.daterangepicker.auto-apply .drp-buttons {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar {
|
||||
display: none;
|
||||
max-width: 270px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.left {
|
||||
padding: 8px 0 8px 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.right {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.single .calendar-table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span {
|
||||
color: #fff;
|
||||
border: solid black;
|
||||
border-width: 0 2px 2px 0;
|
||||
border-radius: 0;
|
||||
display: inline-block;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table .next span {
|
||||
transform: rotate(-45deg);
|
||||
-webkit-transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table .prev span {
|
||||
transform: rotate(135deg);
|
||||
-webkit-transform: rotate(135deg);
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table th, .daterangepicker .calendar-table td {
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
min-width: 32px;
|
||||
width: 32px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
font-size: 12px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid transparent;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table {
|
||||
border: 1px solid #fff;
|
||||
border-radius: 4px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-table table {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
|
||||
background-color: #eee;
|
||||
border-color: transparent;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.daterangepicker td.week, .daterangepicker th.week {
|
||||
font-size: 80%;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
|
||||
background-color: #fff;
|
||||
border-color: transparent;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.daterangepicker td.in-range {
|
||||
background-color: #ebf4f8;
|
||||
border-color: transparent;
|
||||
color: #000;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.daterangepicker td.start-date {
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
|
||||
.daterangepicker td.end-date {
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
|
||||
.daterangepicker td.start-date.end-date {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.daterangepicker td.active, .daterangepicker td.active:hover {
|
||||
background-color: #357ebd;
|
||||
border-color: transparent;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.daterangepicker th.month {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.daterangepicker td.disabled, .daterangepicker option.disabled {
|
||||
color: #999;
|
||||
cursor: not-allowed;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
|
||||
font-size: 12px;
|
||||
padding: 1px;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.daterangepicker select.monthselect {
|
||||
margin-right: 2%;
|
||||
width: 56%;
|
||||
}
|
||||
|
||||
.daterangepicker select.yearselect {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
|
||||
width: 50px;
|
||||
margin: 0 auto;
|
||||
background: #eee;
|
||||
border: 1px solid #eee;
|
||||
padding: 2px;
|
||||
outline: 0;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-time {
|
||||
text-align: center;
|
||||
margin: 4px auto 0 auto;
|
||||
line-height: 30px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.daterangepicker .calendar-time select.disabled {
|
||||
color: #ccc;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-buttons {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
padding: 8px;
|
||||
border-top: 1px solid #ddd;
|
||||
display: none;
|
||||
line-height: 12px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-selected {
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-buttons .btn {
|
||||
margin-left: 8px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
.daterangepicker.show-ranges.single.rtl .drp-calendar.left {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.daterangepicker.show-ranges.single.ltr .drp-calendar.left {
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.daterangepicker.show-ranges.rtl .drp-calendar.right {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.daterangepicker.show-ranges.ltr .drp-calendar.left {
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges {
|
||||
float: none;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.daterangepicker.show-calendar .ranges {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges ul {
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li {
|
||||
font-size: 12px;
|
||||
padding: 8px 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li:hover {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges li.active {
|
||||
background-color: #08c;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* Larger Screen Styling */
|
||||
@media (min-width: 564px) {
|
||||
.daterangepicker {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges ul {
|
||||
width: 140px;
|
||||
}
|
||||
|
||||
.daterangepicker.single .ranges ul {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.daterangepicker.single .drp-calendar.left {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.daterangepicker.single .ranges, .daterangepicker.single .drp-calendar {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.daterangepicker {
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.left {
|
||||
clear: left;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.left .calendar-table {
|
||||
border-right: none;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.right {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.right .calendar-table {
|
||||
border-left: none;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.left .calendar-table {
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges, .daterangepicker .drp-calendar {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 730px) {
|
||||
.daterangepicker .ranges {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.daterangepicker .ranges {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.daterangepicker.rtl .ranges {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.daterangepicker .drp-calendar.left {
|
||||
clear: none !important;
|
||||
}
|
||||
}
|
||||
1578
WebUI/wwwroot/OT/daterangepicker.js
Normal file
1578
WebUI/wwwroot/OT/daterangepicker.js
Normal file
File diff suppressed because it is too large
Load Diff
1
WebUI/wwwroot/OT/dropzone.min.js
vendored
Normal file
1
WebUI/wwwroot/OT/dropzone.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
252
WebUI/wwwroot/OT/google.css
Normal file
252
WebUI/wwwroot/OT/google.css
Normal file
@@ -0,0 +1,252 @@
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: fallback;
|
||||
src: url(6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* cyrillic-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||
}
|
||||
/* cyrillic */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||
}
|
||||
/* greek-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2) format('woff2');
|
||||
unicode-range: U+1F00-1FFF;
|
||||
}
|
||||
/* greek */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0370-03FF;
|
||||
}
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2) format('woff2');
|
||||
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: fallback;
|
||||
src: url(6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
5
WebUI/wwwroot/OT/icheck-bootstrap.min.css
vendored
Normal file
5
WebUI/wwwroot/OT/icheck-bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
11
WebUI/wwwroot/OT/ionicons.min.css
vendored
Normal file
11
WebUI/wwwroot/OT/ionicons.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
6
WebUI/wwwroot/OT/jquery-ui.min.js
vendored
Normal file
6
WebUI/wwwroot/OT/jquery-ui.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
WebUI/wwwroot/OT/jquery.knob.min.js
vendored
Normal file
1
WebUI/wwwroot/OT/jquery.knob.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
WebUI/wwwroot/OT/jquery.min.js
vendored
Normal file
2
WebUI/wwwroot/OT/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
13
WebUI/wwwroot/OT/jquery.overlayScrollbars.min.js
vendored
Normal file
13
WebUI/wwwroot/OT/jquery.overlayScrollbars.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
WebUI/wwwroot/OT/jquery.vmap.min.js
vendored
Normal file
10
WebUI/wwwroot/OT/jquery.vmap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
WebUI/wwwroot/OT/jquery.vmap.usa.js
Normal file
2
WebUI/wwwroot/OT/jquery.vmap.usa.js
Normal file
File diff suppressed because one or more lines are too long
1
WebUI/wwwroot/OT/jqvmap.min.css
vendored
Normal file
1
WebUI/wwwroot/OT/jqvmap.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.jqvmap-label,.jqvmap-pin{pointer-events:none}.jqvmap-label{position:absolute;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jqvmap-zoomin,.jqvmap-zoomout{position:absolute;left:10px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background:#000;padding:3px;color:#fff;width:10px;height:10px;cursor:pointer;line-height:10px;text-align:center}.jqvmap-zoomin{top:10px}.jqvmap-zoomout{top:30px}.jqvmap-region{cursor:pointer}.jqvmap-ajax_response{width:100%;height:500px}
|
||||
1
WebUI/wwwroot/OT/js-sdk-pro.min.js
vendored
Normal file
1
WebUI/wwwroot/OT/js-sdk-pro.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
WebUI/wwwroot/OT/moment.min.js
vendored
Normal file
2
WebUI/wwwroot/OT/moment.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
210
WebUI/wwwroot/OT/sparkline.js
Normal file
210
WebUI/wwwroot/OT/sparkline.js
Normal file
@@ -0,0 +1,210 @@
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
// Node. Does not work with strict CommonJS, but
|
||||
// only CommonJS-like enviroments that support module.exports,
|
||||
// like Node.
|
||||
module.exports = factory();
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
root.Sparkline = factory();
|
||||
}
|
||||
}(window, function () {
|
||||
function extend(specific, general) {
|
||||
var obj = {};
|
||||
for (var key in general) {
|
||||
obj[key] = key in specific ? specific[key] : general[key];
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
function Sparkline(element, options) {
|
||||
this.element = element;
|
||||
this.options = extend(options || {}, Sparkline.options);
|
||||
|
||||
init: {
|
||||
this.element.innerHTML = "<canvas></canvas>";
|
||||
this.canvas = this.element.firstChild;
|
||||
this.context = this.canvas.getContext("2d");
|
||||
this.ratio = window.devicePixelRatio || 1;
|
||||
|
||||
if (this.options.tooltip) {
|
||||
this.canvas.style.position = "relative";
|
||||
this.canvas.onmousemove = showTooltip.bind(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Sparkline.options = {
|
||||
width: 100,
|
||||
height: null,
|
||||
lineColor: "black",
|
||||
lineWidth: 1.5,
|
||||
startColor: "transparent",
|
||||
endColor: "black",
|
||||
maxColor: "transparent",
|
||||
minColor: "transparent",
|
||||
minValue: null,
|
||||
maxValue: null,
|
||||
minMaxValue: null,
|
||||
maxMinValue: null,
|
||||
dotRadius: 2.5,
|
||||
tooltip: null,
|
||||
fillBelow: true,
|
||||
fillLighten: 0.5,
|
||||
startLine: false,
|
||||
endLine: false,
|
||||
minLine: false,
|
||||
maxLine: false,
|
||||
bottomLine: false,
|
||||
topLine: false,
|
||||
averageLine: false
|
||||
};
|
||||
|
||||
Sparkline.init = function (element, options) {
|
||||
return new Sparkline(element, options);
|
||||
};
|
||||
|
||||
Sparkline.draw = function (element, points, options) {
|
||||
var sparkline = new Sparkline(element, options);
|
||||
sparkline.draw(points);
|
||||
return sparkline;
|
||||
}
|
||||
|
||||
function getY(minValue, maxValue, offsetY, height, index) {
|
||||
var range = maxValue - minValue;
|
||||
if (range == 0) {
|
||||
return offsetY + height / 2;
|
||||
} else {
|
||||
return (offsetY + height) - ((this[index] - minValue) / range) * height;
|
||||
}
|
||||
}
|
||||
|
||||
function drawDot(radius, x1, x2, color, line, x, y) {
|
||||
this.context.beginPath();
|
||||
this.context.fillStyle = color;
|
||||
this.context.arc(x, y, radius, 0, Math.PI * 2, false);
|
||||
this.context.fill();
|
||||
drawLine.call(this, x1, x2, line, x, y);
|
||||
}
|
||||
|
||||
function drawLine(x1, x2, style, x, y){
|
||||
if(!style) return;
|
||||
|
||||
this.context.save();
|
||||
this.context.strokeStyle = style.color || 'black';
|
||||
this.context.lineWidth = (style.width || 1) * this.ratio;
|
||||
this.context.globalAlpha = style.alpha || 1;
|
||||
this.context.beginPath();
|
||||
this.context.moveTo(style.direction != 'right' ? x1 : x, y);
|
||||
this.context.lineTo(style.direction != 'left' ? x2 : x, y);
|
||||
this.context.stroke();
|
||||
this.context.restore();
|
||||
}
|
||||
|
||||
function showTooltip(e) {
|
||||
var x = e.offsetX || e.layerX || 0;
|
||||
var delta = ((this.options.width - this.options.dotRadius * 2) / (this.points.length - 1));
|
||||
var index = minmax(0, Math.round((x - this.options.dotRadius) / delta), this.points.length - 1);
|
||||
|
||||
this.canvas.title = this.options.tooltip(this.points[index], index, this.points);
|
||||
}
|
||||
|
||||
Sparkline.prototype.draw = function (points) {
|
||||
|
||||
points = points || [];
|
||||
this.points = points;
|
||||
|
||||
this.canvas.width = this.options.width * this.ratio;
|
||||
this.canvas.style.width = this.options.width + 'px';
|
||||
|
||||
var pxHeight = this.options.height || this.element.offsetHeight;
|
||||
this.canvas.height = pxHeight * this.ratio;
|
||||
this.canvas.style.height = pxHeight + 'px';
|
||||
|
||||
var lineWidth = this.options.lineWidth * this.ratio;
|
||||
var offsetX = Math.max(this.options.dotRadius * this.ratio, lineWidth/2);
|
||||
var offsetY = Math.max(this.options.dotRadius * this.ratio, lineWidth/2);
|
||||
var width = this.canvas.width - offsetX * 2;
|
||||
var height = this.canvas.height - offsetY * 2;
|
||||
|
||||
var minValue = Math.min.apply(Math, points);
|
||||
var maxValue = Math.max.apply(Math, points);
|
||||
var bottomValue = this.options.minValue != undefined ? this.options.minValue : Math.min(minValue, this.options.maxMinValue != undefined ? this.options.maxMinValue : minValue);
|
||||
var topValue = this.options.maxValue != undefined ? this.options.maxValue : Math.max(maxValue, this.options.minMaxValue != undefined ? this.options.minMaxValue : maxValue);
|
||||
var minX = offsetX;
|
||||
var maxX = offsetX;
|
||||
|
||||
var x = offsetX;
|
||||
var y = getY.bind(points, bottomValue, topValue, offsetY, height);
|
||||
var delta = width / (points.length - 1);
|
||||
|
||||
var dot = drawDot.bind(this, this.options.dotRadius * this.ratio, offsetX, width + offsetX);
|
||||
var line = drawLine.bind(this, offsetX, width + offsetX);
|
||||
|
||||
this.context.save();
|
||||
|
||||
this.context.strokeStyle = this.options.lineColor;
|
||||
this.context.fillStyle = this.options.lineColor;
|
||||
this.context.lineWidth = lineWidth;
|
||||
this.context.lineCap = 'round';
|
||||
this.context.lineJoin = 'round';
|
||||
|
||||
if(this.options.fillBelow && points.length > 1){
|
||||
this.context.save();
|
||||
this.context.beginPath();
|
||||
this.context.moveTo(x, y(0));
|
||||
for (var i = 1; i < points.length; i++) {
|
||||
x += delta;
|
||||
|
||||
minX = points[i] == minValue ? x : minX;
|
||||
maxX = points[i] == maxValue ? x : maxX;
|
||||
|
||||
this.context.lineTo(x, y(i));
|
||||
}
|
||||
this.context.lineTo(width+offsetX, height + offsetY + lineWidth/2);
|
||||
this.context.lineTo(offsetX, height + offsetY + lineWidth/2);
|
||||
this.context.fill();
|
||||
if(this.options.fillLighten > 0){
|
||||
this.context.fillStyle = 'white';
|
||||
this.context.globalAlpha = this.options.fillLighten;
|
||||
this.context.fill();
|
||||
this.context.globalAlpha = 1;
|
||||
}else if(this.options.fillLighten < 0){
|
||||
this.context.fillStyle = 'black';
|
||||
this.context.globalAlpha = -this.options.fillLighten;
|
||||
this.context.fill();
|
||||
}
|
||||
this.context.restore();
|
||||
}
|
||||
|
||||
x = offsetX;
|
||||
this.context.beginPath();
|
||||
this.context.moveTo(x, y(0));
|
||||
for (var i = 1; i < points.length; i++) {
|
||||
x += delta;
|
||||
this.context.lineTo(x, y(i));
|
||||
}
|
||||
this.context.stroke();
|
||||
|
||||
this.context.restore();
|
||||
|
||||
line(this.options.bottomLine, 0, offsetY);
|
||||
line(this.options.topLine, 0, height + offsetY+lineWidth/2);
|
||||
|
||||
dot(this.options.startColor, this.options.startLine, offsetX + (points.length == 1 ? width / 2 : 0), y(0));
|
||||
dot(this.options.endColor, this.options.endLine, offsetX + (points.length == 1 ? width / 2 : width), y(points.length-1));
|
||||
dot(this.options.minColor, this.options.minLine, minX + (points.length == 1 ? width / 2 : 0), y(points.indexOf(minValue)));
|
||||
dot(this.options.maxColor, this.options.maxLine, maxX + (points.length == 1 ? width / 2 : 0), y(points.indexOf(maxValue)));
|
||||
|
||||
//line(this.options.averageLine, )
|
||||
}
|
||||
|
||||
function minmax(a, b, c) {
|
||||
return Math.max(a, Math.min(b, c));
|
||||
}
|
||||
|
||||
return Sparkline;
|
||||
}));
|
||||
1
WebUI/wwwroot/OT/summernote-bs4.min.css
vendored
Normal file
1
WebUI/wwwroot/OT/summernote-bs4.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2
WebUI/wwwroot/OT/summernote-bs4.min.js
vendored
Normal file
2
WebUI/wwwroot/OT/summernote-bs4.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
WebUI/wwwroot/OT/sweetalert2@8.js
Normal file
2
WebUI/wwwroot/OT/sweetalert2@8.js
Normal file
File diff suppressed because one or more lines are too long
5
WebUI/wwwroot/OT/tempusdominus-bootstrap-4.min.css
vendored
Normal file
5
WebUI/wwwroot/OT/tempusdominus-bootstrap-4.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
6
WebUI/wwwroot/OT/tempusdominus-bootstrap-4.min.js
vendored
Normal file
6
WebUI/wwwroot/OT/tempusdominus-bootstrap-4.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
WebUI/wwwroot/OT/toastr.min.css
vendored
Normal file
1
WebUI/wwwroot/OT/toastr.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2
WebUI/wwwroot/OT/toastr.min.js
vendored
Normal file
2
WebUI/wwwroot/OT/toastr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
131
WebUI/wwwroot/OT/zh-cn.js
Normal file
131
WebUI/wwwroot/OT/zh-cn.js
Normal file
@@ -0,0 +1,131 @@
|
||||
//! moment.js locale configuration
|
||||
//! locale : Chinese (China) [zh-cn]
|
||||
//! author : suupic : https://github.com/suupic
|
||||
//! author : Zeno Zeng : https://github.com/zenozeng
|
||||
//! author : uu109 : https://github.com/uu109
|
||||
|
||||
;(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined'
|
||||
&& typeof require === 'function' ? factory(require('../moment')) :
|
||||
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
|
||||
factory(global.moment)
|
||||
}(this, (function (moment) { 'use strict';
|
||||
|
||||
//! moment.js locale configuration
|
||||
|
||||
var zhCn = moment.defineLocale('zh-cn', {
|
||||
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
|
||||
'_'
|
||||
),
|
||||
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
|
||||
'_'
|
||||
),
|
||||
weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
|
||||
weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
|
||||
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
|
||||
longDateFormat: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'YYYY/MM/DD',
|
||||
LL: 'YYYY年M月D日',
|
||||
LLL: 'YYYY年M月D日Ah点mm分',
|
||||
LLLL: 'YYYY年M月D日ddddAh点mm分',
|
||||
l: 'YYYY/M/D',
|
||||
ll: 'YYYY年M月D日',
|
||||
lll: 'YYYY年M月D日 HH:mm',
|
||||
llll: 'YYYY年M月D日dddd HH:mm',
|
||||
},
|
||||
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
|
||||
meridiemHour: function (hour, meridiem) {
|
||||
if (hour === 12) {
|
||||
hour = 0;
|
||||
}
|
||||
if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
|
||||
return hour;
|
||||
} else if (meridiem === '下午' || meridiem === '晚上') {
|
||||
return hour + 12;
|
||||
} else {
|
||||
// '中午'
|
||||
return hour >= 11 ? hour : hour + 12;
|
||||
}
|
||||
},
|
||||
meridiem: function (hour, minute, isLower) {
|
||||
var hm = hour * 100 + minute;
|
||||
if (hm < 600) {
|
||||
return '凌晨';
|
||||
} else if (hm < 900) {
|
||||
return '早上';
|
||||
} else if (hm < 1130) {
|
||||
return '上午';
|
||||
} else if (hm < 1230) {
|
||||
return '中午';
|
||||
} else if (hm < 1800) {
|
||||
return '下午';
|
||||
} else {
|
||||
return '晚上';
|
||||
}
|
||||
},
|
||||
calendar: {
|
||||
sameDay: '[今天]LT',
|
||||
nextDay: '[明天]LT',
|
||||
nextWeek: function (now) {
|
||||
if (now.week() !== this.week()) {
|
||||
return '[下]dddLT';
|
||||
} else {
|
||||
return '[本]dddLT';
|
||||
}
|
||||
},
|
||||
lastDay: '[昨天]LT',
|
||||
lastWeek: function (now) {
|
||||
if (this.week() !== now.week()) {
|
||||
return '[上]dddLT';
|
||||
} else {
|
||||
return '[本]dddLT';
|
||||
}
|
||||
},
|
||||
sameElse: 'L',
|
||||
},
|
||||
dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
|
||||
ordinal: function (number, period) {
|
||||
switch (period) {
|
||||
case 'd':
|
||||
case 'D':
|
||||
case 'DDD':
|
||||
return number + '日';
|
||||
case 'M':
|
||||
return number + '月';
|
||||
case 'w':
|
||||
case 'W':
|
||||
return number + '周';
|
||||
default:
|
||||
return number;
|
||||
}
|
||||
},
|
||||
relativeTime: {
|
||||
future: '%s后',
|
||||
past: '%s前',
|
||||
s: '几秒',
|
||||
ss: '%d 秒',
|
||||
m: '1 分钟',
|
||||
mm: '%d 分钟',
|
||||
h: '1 小时',
|
||||
hh: '%d 小时',
|
||||
d: '1 天',
|
||||
dd: '%d 天',
|
||||
w: '1 周',
|
||||
ww: '%d 周',
|
||||
M: '1 个月',
|
||||
MM: '%d 个月',
|
||||
y: '1 年',
|
||||
yy: '%d 年',
|
||||
},
|
||||
week: {
|
||||
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
|
||||
dow: 1, // Monday is the first day of the week.
|
||||
doy: 4, // The week that contains Jan 4th is the first week of the year.
|
||||
},
|
||||
});
|
||||
|
||||
return zhCn;
|
||||
|
||||
})));
|
||||
Reference in New Issue
Block a user