Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
dream
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
dream
Commits
193da8aa
Commit
193da8aa
authored
Jun 06, 2014
by
Romain Courteaud
Committed by
Jérome Perrin
Aug 11, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Publish build version.
parent
68409d9f
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
246 additions
and
2 deletions
+246
-2
dream/platform/static/dream/document_page_mixin.js
dream/platform/static/dream/document_page_mixin.js
+4
-1
dream/platform/static/dream/edit_table.js
dream/platform/static/dream/edit_table.js
+1
-1
dream/platform/static/dream/index.js
dream/platform/static/dream/index.js
+1
-0
dream/platform/static/dream/job_gantt.html
dream/platform/static/dream/job_gantt.html
+19
-0
dream/platform/static/dream/job_gantt.js
dream/platform/static/dream/job_gantt.js
+207
-0
dream/platform/static/dream/station_utilisation_graph.html
dream/platform/static/dream/station_utilisation_graph.html
+1
-0
dream/platform/static/lib/dhtmlxgantt.css
dream/platform/static/lib/dhtmlxgantt.css
+5
-0
dream/platform/static/lib/dhtmlxgantt.js
dream/platform/static/lib/dhtmlxgantt.js
+8
-0
No files found.
dream/platform/static/dream/document_page_mixin.js
View file @
193da8aa
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
var
key
=
this
.
props
.
jio_key
,
gadget
=
this
;
var
key
=
this
.
props
.
jio_key
,
gadget
=
this
;
return
new
RSVP
.
Queue
().
push
(
function
()
{
return
new
RSVP
.
Queue
().
push
(
function
()
{
// XXX Conditional simulation menu
// XXX Conditional simulation menu
return
RSVP
.
all
([
gadget
.
whoWantToDisplayThisDocumentPage
(
"
edit_table
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
run_simulation
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
manage_document
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
station_utilisation_graph
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
queue_stat_graph
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
exit_stat
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
debug_json
"
,
key
)
]);
return
RSVP
.
all
([
gadget
.
whoWantToDisplayThisDocumentPage
(
"
edit_table
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
run_simulation
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
manage_document
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
station_utilisation_graph
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
queue_stat_graph
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
exit_stat
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
job_gantt
"
,
key
),
gadget
.
whoWantToDisplayThisDocumentPage
(
"
debug_json
"
,
key
)
]);
}).
push
(
function
(
result_list
)
{
}).
push
(
function
(
result_list
)
{
return
[
{
return
[
{
link
:
result_list
[
0
],
link
:
result_list
[
0
],
...
@@ -28,6 +28,9 @@
...
@@ -28,6 +28,9 @@
title
:
"
Exit Statistics
"
title
:
"
Exit Statistics
"
},
{
},
{
link
:
result_list
[
6
],
link
:
result_list
[
6
],
title
:
"
Job Gantt
"
},
{
link
:
result_list
[
7
],
title
:
"
Debug JSON
"
title
:
"
Debug JSON
"
}
];
}
];
});
});
...
...
dream/platform/static/dream/edit_table.js
View file @
193da8aa
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
_attachment
:
"
body.json
"
_attachment
:
"
body.json
"
}),
gadget
.
getDeclaredGadget
(
"
tableeditor
"
)
]);
}),
gadget
.
getDeclaredGadget
(
"
tableeditor
"
)
]);
}).
push
(
function
(
result_list
)
{
}).
push
(
function
(
result_list
)
{
return
result_list
[
1
].
render
(
JSON
.
stringify
(
JSON
.
parse
(
result_list
[
0
]).
shif
t_spreadsheet
));
return
result_list
[
1
].
render
(
JSON
.
stringify
(
JSON
.
parse
(
result_list
[
0
]).
wip_par
t_spreadsheet
));
});
});
}).
declareMethod
(
"
startService
"
,
function
()
{
}).
declareMethod
(
"
startService
"
,
function
()
{
return
this
.
getDeclaredGadget
(
"
tableeditor
"
).
push
(
function
(
tableeditor
)
{
return
this
.
getDeclaredGadget
(
"
tableeditor
"
).
push
(
function
(
tableeditor
)
{
...
...
dream/platform/static/dream/index.js
View file @
193da8aa
...
@@ -93,6 +93,7 @@
...
@@ -93,6 +93,7 @@
}
}
}).
declareMethod
(
"
render
"
,
function
(
options
)
{
}).
declareMethod
(
"
render
"
,
function
(
options
)
{
var
gadget
=
this
,
page_gadget
,
element
=
gadget
.
props
.
element
.
getElementsByClassName
(
"
gadget_container
"
)[
0
];
var
gadget
=
this
,
page_gadget
,
element
=
gadget
.
props
.
element
.
getElementsByClassName
(
"
gadget_container
"
)[
0
];
options
.
configuration_dict
=
gadget
.
props
.
configuration_dict
;
if
(
options
.
page
===
undefined
)
{
if
(
options
.
page
===
undefined
)
{
// Redirect to the about page
// Redirect to the about page
return
gadget
.
aq_pleasePublishMyState
({
return
gadget
.
aq_pleasePublishMyState
({
...
...
dream/platform/static/dream/job_gantt.html
0 → 100644
View file @
193da8aa
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<title>
Job Gantt
</title>
<link
rel=
"stylesheet"
href=
"../lib/dhtmlxgantt.css"
>
<script
src=
"../lib/rsvp.min.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/renderjs.min.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/jquery.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/dhtmlxgantt.js"
type=
"text/javascript"
></script>
<script
src=
"document_page_mixin.js"
type=
"text/javascript"
></script>
<script
src=
"job_gantt.js"
type=
"text/javascript"
></script>
</head>
<body>
<div
class=
"gant_container"
style=
"height: 800px;"
></div>
</body>
</html>
dream/platform/static/dream/job_gantt.js
0 → 100644
View file @
193da8aa
/*global console, rJS, RSVP, initDocumentPageMixin, jQuery, gantt */
/*jslint nomen: true */
(
function
(
window
,
rJS
,
RSVP
,
initDocumentPageMixin
,
$
,
gantt
)
{
"
use strict
"
;
gantt
.
templates
.
task_class
=
function
(
start
,
end
,
obj
)
{
return
obj
.
parent
?
"
sub_task
"
:
""
;
};
function
job_gantt_widget
(
all_data
)
{
var
now
=
new
Date
(),
start_date
,
gantt_data
=
{
data
:
[
{
id
:
"
by_order
"
,
text
:
"
By Order
"
,
start_date
:
start_date
,
duration
:
0
,
project
:
1
,
open
:
true
},
{
id
:
"
by_station
"
,
text
:
"
By Station
"
,
start_date
:
start_date
,
duration
:
0
,
project
:
1
,
open
:
true
}
],
link
:
[]
},
input_data
=
all_data
.
input
,
output_data
=
all_data
.
result
;
// temporary hack
now
.
setHours
(
0
);
now
.
setMinutes
(
0
);
now
.
setSeconds
(
0
);
start_date
=
input_data
.
general
.
currentDate
;
if
(
start_date
!==
undefined
&&
start_date
!==
""
)
{
start_date
=
new
Date
(
start_date
);
}
else
{
start_date
=
new
Date
(
now
.
getTime
());
}
function
isVisibleStation
(
station
)
{
// we should be able to define in the backend which
// station is visible
return
input_data
.
nodes
[
station
].
_class
!==
"
Dream.QueueManagedJob
"
&&
input_data
.
nodes
[
station
].
_class
!==
"
Dream.OperatorManagedJob
"
&&
input_data
.
nodes
[
station
].
_class
!==
"
Dream.ExitJobShop
"
;
}
$
.
each
(
output_data
.
elementList
.
sort
(
function
(
a
,
b
)
{
return
a
.
id
<
b
.
id
?
-
1
:
1
;
}),
function
(
idx
,
obj
)
{
var
input_job
=
null
,
input_order
=
null
,
i
,
j
,
node
,
node_key
,
order
,
component
,
duration
,
seen_parts
=
{};
if
(
obj
.
_class
===
"
Dream.Job
"
)
{
// find the corresponding input
// find the input order and order component for this job
for
(
node_key
in
input_data
.
nodes
)
{
if
(
input_data
.
nodes
.
hasOwnProperty
(
node_key
))
{
node
=
input_data
.
nodes
[
node_key
];
if
(
node
.
wip
)
{
for
(
i
=
0
;
i
<
node
.
wip
.
length
;
i
+=
1
)
{
order
=
node
.
wip
[
i
];
if
(
order
.
id
===
obj
.
id
)
{
input_job
=
input_order
=
order
;
}
if
(
input_job
===
null
)
{
for
(
j
=
0
;
j
<
order
.
componentsList
.
length
;
j
+=
1
)
{
component
=
order
.
componentsList
[
j
];
if
(
component
.
id
===
obj
.
id
)
{
input_order
=
order
;
input_job
=
component
;
}
}
}
}
}
}
}
duration
=
0
;
if
(
input_job
===
input_order
)
{
// if we are on the order definition
gantt_data
.
data
.
push
({
id
:
input_order
.
id
,
text
:
input_order
.
name
,
project
:
1
,
open
:
false
,
parent
:
"
by_order
"
});
}
seen_parts
=
{};
$
.
each
(
obj
.
results
.
schedule
,
function
(
i
,
schedule
)
{
var
entrance_date
,
task_start_date
,
job_full_id
;
// Filter intermediate steps in part job shop
if
(
isVisibleStation
(
schedule
.
stationId
))
{
entrance_date
=
new
Date
(
start_date
.
getTime
());
entrance_date
.
setTime
(
entrance_date
.
getTime
()
+
schedule
.
entranceTime
*
1
e3
*
3600
);
if
(
obj
.
results
.
schedule
[
i
+
1
])
{
duration
=
obj
.
results
.
schedule
[
i
+
1
].
entranceTime
-
schedule
.
entranceTime
;
}
else
{
duration
=
obj
.
results
.
completionTime
-
schedule
.
entranceTime
;
}
if
(
duration
>
0
)
{
task_start_date
=
new
Date
(
start_date
.
getTime
());
// for simulation time unit as days
// task_start_date.setDate(task_start_date.getDate() +
// schedule['entranceTime']);
// for simulation time unit as days hours
task_start_date
.
setTime
(
task_start_date
.
getTime
()
+
schedule
.
entranceTime
*
1
e3
*
3600
);
job_full_id
=
input_job
.
id
+
"
.
"
+
input_order
.
id
;
if
(
seen_parts
[
job_full_id
]
===
undefined
)
{
gantt_data
.
data
.
push
({
id
:
job_full_id
,
text
:
input_job
.
name
,
parent
:
input_order
.
id
});
seen_parts
[
job_full_id
]
=
1
;
}
gantt_data
.
data
.
push
({
id
:
input_order
.
id
+
"
.
"
+
idx
+
"
_
"
+
i
,
text
:
schedule
.
stationId
,
start_date
:
task_start_date
,
duration
:
duration
,
parent
:
job_full_id
});
gantt_data
.
data
.
push
({
id
:
"
job.
"
+
obj
.
id
+
"
.
"
+
idx
+
"
_
"
+
i
,
text
:
input_order
.
name
+
"
-
"
+
input_job
.
name
,
start_date
:
task_start_date
,
duration
:
duration
,
parent
:
schedule
.
stationId
,
by_station
:
1
});
}
}
});
}
else
{
if
(
isVisibleStation
(
obj
.
id
))
{
gantt_data
.
data
.
push
({
id
:
obj
.
id
,
text
:
obj
.
id
,
project
:
1
,
open
:
false
,
parent
:
"
by_station
"
});
}
}
});
// gantt_output_height = 35 * (gantt_data.data.length + 1) + 1;
gantt_data
.
data
.
sort
(
function
(
a
,
b
)
{
// sort gantt data in a chronological order
var
result
;
if
(
a
.
start_date
===
undefined
&&
b
.
start_date
!==
undefined
)
{
result
=
1
;
}
else
if
(
a
.
start_date
!==
undefined
&&
b
.
start_date
===
undefined
)
{
result
=
-
1
;
}
else
if
(
a
.
start_date
===
undefined
&&
b
.
start_date
===
undefined
)
{
result
=
0
;
}
else
if
(
a
.
start_date
>
b
.
start_date
)
{
result
=
1
;
}
else
if
(
a
.
start_date
<
b
.
start_date
)
{
result
=
-
1
;
}
else
{
result
=
0
;
}
return
result
;
});
return
gantt_data
;
}
var
gadget_klass
=
rJS
(
window
);
initDocumentPageMixin
(
gadget_klass
);
gadget_klass
.
ready
(
function
(
g
)
{
g
.
props
=
{};
}).
ready
(
function
(
g
)
{
return
g
.
getElement
().
push
(
function
(
element
)
{
g
.
props
.
element
=
element
;
});
}).
declareAcquiredMethod
(
"
aq_getAttachment
"
,
"
jio_getAttachment
"
).
declareMethod
(
"
render
"
,
function
(
options
)
{
var
jio_key
=
options
.
id
,
gadget
=
this
;
gadget
.
props
.
jio_key
=
jio_key
;
return
gadget
.
aq_getAttachment
({
_id
:
gadget
.
props
.
jio_key
,
_attachment
:
"
simulation.json
"
}).
push
(
function
(
simulation_json
)
{
gadget
.
props
.
result
=
job_gantt_widget
(
// XXX Hardcoded result
JSON
.
parse
(
simulation_json
)[
0
]);
});
}).
declareMethod
(
"
startService
"
,
function
()
{
$
(
this
.
props
.
element
).
find
(
"
.gant_container
"
).
dhx_gantt
({
data
:
this
.
props
.
result
,
readonly
:
true
,
/* for days has simulation time unit
scale_unit: 'day',
step: 7
*/
// for hours has simulation time unit
scale_unit
:
"
day
"
,
duration_unit
:
60
*
60
*
1
e3
,
//date_grid: "%H:%i",
date_scale
:
"
%M/%d
"
,
step
:
1
,
subscales
:
[
{
unit
:
"
hour
"
,
step
:
4
,
date
:
"
%H:%i
"
}
]
});
return
new
RSVP
.
Queue
().
push
(
function
()
{
// Infinite wait, until cancelled
return
new
RSVP
.
defer
().
promise
;
}).
push
(
undefined
,
function
(
error
)
{
gantt
.
clearAll
();
throw
error
;
});
});
})(
window
,
rJS
,
RSVP
,
initDocumentPageMixin
,
jQuery
,
gantt
);
\ No newline at end of file
dream/platform/static/dream/station_utilisation_graph.html
View file @
193da8aa
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
<title>
Stations Utilization
</title>
<title>
Stations Utilization
</title>
<script
src=
"../lib/rsvp.min.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/rsvp.min.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/renderjs.min.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/renderjs.min.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/jquery.js"
type=
"text/javascript"
></script>
<script
src=
"../lib/jquery.flot.js"
></script>
<script
src=
"../lib/jquery.flot.js"
></script>
<script
src=
"../lib/jquery.flot.stack.js"
></script>
<script
src=
"../lib/jquery.flot.stack.js"
></script>
<script
src=
"document_page_mixin.js"
type=
"text/javascript"
></script>
<script
src=
"document_page_mixin.js"
type=
"text/javascript"
></script>
...
...
dream/platform/static/lib/dhtmlxgantt.css
0 → 100644
View file @
193da8aa
/*
This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
to use it in non-GPL project. Please contact sales@dhtmlx.com for details
*/
.gridHoverStyle
{
background-color
:
#fff3a1
}
.gridSelection
{
background-color
:
#fff3a1
}
.timelineSelection
{
background-color
:
#fff3a1
}
.gantt_grid_scale
.gantt_grid_head_cell
{
color
:
#a6a6a6
;
border-top
:
0
!important
;
border-right
:
0
!important
}
.gantt_grid_data
.gantt_cell
{
border-right
:
0
;
color
:
#454545
}
.gantt_task_link
.gantt_link_arrow_right
{
border-width
:
6px
;
margin-top
:
-3px
}
.gantt_task_link
.gantt_link_arrow_left
{
border-width
:
6px
;
margin-left
:
-6px
;
margin-top
:
-3px
}
.gantt_task_link
.gantt_link_arrow_top
{
border-width
:
6px
}
.gantt_task_link
.gantt_link_arrow_down
{
border-width
:
6px
}
.gantt_task_line
.gantt_task_progress_drag
{
bottom
:
-4px
;
height
:
16px
;
margin-left
:
-8px
;
width
:
16px
}
.chartHeaderBg
{
background-color
:
#fff
}
.gantt_task
.gantt_task_scale
.gantt_scale_cell
{
color
:
#a6a6a6
;
border-right
:
1px
solid
#ebebeb
}
.gantt_row.gantt_project
,
.gantt_row.odd.gantt_project
{
background-color
:
#edffef
}
.gantt_task_row.gantt_project
,
.gantt_task_row.odd.gantt_project
{
background-color
:
#f5fff6
}
.gantt_task_line.gantt_project
{
background-color
:
#65c16f
;
border
:
1px
solid
#3c9445
}
.gantt_task_line.gantt_project
.gantt_task_progress
{
background-color
:
#46ad51
}
.buttonBg
{
background
:
#fff
}
.dhx_cal_light
.dhx_btn_set
{
margin
:
5px
10px
}
.dhx_btn_set.dhx_cancel_btn_set
{
background
:
#fff
;
color
:
#454545
;
border
:
1px
solid
#cecece
}
.dhx_btn_set.dhx_save_btn_set
{
background
:
#3db9d3
;
text-shadow
:
0
-1px
0
#248a9f
;
color
:
#fff
}
.dhx_btn_set.dhx_delete_btn_set
{
text-shadow
:
0
-1px
0
#6f6f6f
;
background
:
#ec8e00
;
text-shadow
:
0
-1px
0
#a60
;
color
:
#fff
}
.dhx_delete_btn
{
margin-top
:
2px
;
width
:
20px
}
.dhx_cal_light_wide
{
padding-left
:
0
!important
;
padding-right
:
0
!important
}
.dhx_cal_light_wide
.dhx_cal_larea
{
border-left
:
0
!important
;
border-right
:
0
!important
}
.dhtmlx_popup_button.dhtmlx_ok_button
{
background
:
#3db9d3
;
text-shadow
:
0
-1px
0
#248a9f
;
color
:
#fff
;
font-weight
:
700
;
border-width
:
0
}
.dhtmlx_popup_button.dhtmlx_cancel_button
{
font-weight
:
700
;
color
:
#454544
}
.dhx_qi_big_icon.icon_edit
{
color
:
#454545
;
background
:
#fff
}
.dhx_qi_big_icon.icon_delete
{
text-shadow
:
0
-1px
0
#a60
;
background
:
#ec8e00
;
color
:
#fff
;
border-width
:
0
}
.gantt_container
{
font-family
:
Arial
;
font-size
:
13px
;
border
:
1px
solid
#cecece
;
position
:
relative
;
white-space
:
nowrap
}
.gantt_grid
{
border-right
:
1px
solid
#cecece
}
.gantt_task_scroll
{
overflow-x
:
scroll
}
.gantt_task
{
position
:
relative
}
.gantt_task
,
.gantt_grid
{
overflow-x
:
hidden
;
overflow-y
:
hidden
;
display
:
inline-block
;
vertical-align
:
top
}
.gantt_grid_scale
,
.gantt_task_scale
{
color
:
#6b6b6b
;
font-size
:
12px
;
border-bottom
:
1px
solid
#cecece
}
.gantt_grid_scale
{
background-color
:
#fff
}
.gantt_task_scale
{
background-color
:
#fff
}
.gantt_scale_line
{
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
border-top
:
1px
solid
#cecece
}
.gantt_scale_line
:first-child
{
border-top
:
0
}
.gantt_grid_head_cell
{
display
:
inline-block
;
vertical-align
:
top
;
border-right
:
1px
solid
#cecece
;
text-align
:
center
;
position
:
relative
;
cursor
:
default
;
height
:
100%
;
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
line-height
:
33px
;
-moz-user-select
:
-moz-none
;
-webkit-user-select
:
none
;
-user-select
:
none
}
.gantt_scale_line
{
clear
:
both
}
.gantt_grid_data
{
width
:
100%
;
overflow
:
hidden
}
.gantt_row
{
position
:
relative
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-moz-user-select
:
-moz-none
}
.gantt_add
,
.gantt_grid_head_add
{
width
:
100%
;
height
:
100%
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ3MjMyMENDNkI0MTFFMjk4MTI5QTg3MDhFNDVDQTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ3MjMyMERDNkI0MTFFMjk4MTI5QTg3MDhFNDVDQTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NDcyMzIwQUM2QjQxMUUyOTgxMjlBODcwOEU0NUNBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NDcyMzIwQkM2QjQxMUUyOTgxMjlBODcwOEU0NUNBOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PshZT8UAAABbSURBVHjaYrTdeZmBEsCER+4wEP+H4sPkGGCDg020ARR7gb4GIAcYDKMDdPnDyAbYkGG5DVW9cIQMvUdBBAuUY4vDz8iAcZinA2zgCHqAYQMseAywJcYFAAEGAM+UFGuohFczAAAAAElFTkSuQmCC)
;
background-position
:
center
center
;
background-repeat
:
no-repeat
;
cursor
:
pointer
;
position
:
relative
;
-moz-opacity
:
.3
;
opacity
:
.3
}
.gantt_grid_head_cell.gantt_grid_head_add
{
-moz-opacity
:
.6
;
opacity
:
.6
;
top
:
0
}
.gantt_grid_head_cell.gantt_grid_head_add
:hover
{
-moz-opacity
:
1
;
opacity
:
1
}
.gantt_grid_data
.gantt_row
:hover
,
.gantt_grid_data
.gantt_row.odd
:hover
{
background-color
:
#fff3a1
}
.gantt_grid_data
.gantt_row
:hover
.gantt_add
,
.gantt_grid_data
.gantt_row.odd
:hover
.gantt_add
{
-moz-opacity
:
1
;
opacity
:
1
}
.gantt_task_row
,
.gantt_row
{
border-bottom
:
1px
solid
#ebebeb
}
.gantt_row
,
.gantt_task_row
{
background-color
:
#fff
}
.gantt_row.odd
,
.gantt_task_row.odd
{
background-color
:
#fff
}
.gantt_row
,
.gantt_cell
,
.gantt_task_row
,
.gantt_task_cell
,
.gantt_grid_head_cell
,
.gantt_scale_cell
{
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
}
.gantt_grid_head_cell
,
.gantt_scale_cell
{
line-height
:
inherit
}
.gantt_cell
{
display
:
inline-block
;
vertical-align
:
top
;
border-right
:
1px
solid
#ebebeb
;
padding-left
:
6px
;
padding-right
:
6px
;
height
:
100%
;
overflow
:
hidden
;
white-space
:
nowrap
;
font-size
:
13px
}
.gantt_grid_scale
.gantt_last_cell
,
.gantt_grid_data
.gantt_last_cell
,
.gantt_task_scale
.gantt_last_cell
,
.gantt_task_bg
.gantt_last_cell
{
border-right-width
:
0
}
.gantt_task_bg
{
overflow
:
hidden
}
.gantt_scale_cell
{
display
:
inline-block
;
white-space
:
nowrap
;
overflow
:
hidden
;
border-right
:
1px
solid
#cecece
;
text-align
:
center
;
height
:
100%
}
.gantt_task_cell
{
display
:
inline-block
;
height
:
100%
;
border-right
:
1px
solid
#ebebeb
}
.gantt_ver_scroll
{
width
:
0
;
background-color
:
transparent
;
height
:
1px
;
overflow-x
:
hidden
;
overflow-y
:
scroll
;
display
:
none
;
position
:
absolute
;
right
:
0
}
.gantt_ver_scroll
>
div
{
width
:
1px
;
height
:
1px
}
.gantt_hor_scroll
{
height
:
0
;
background-color
:
transparent
;
width
:
100%
;
clear
:
both
;
overflow-x
:
scroll
;
overflow-y
:
hidden
;
display
:
none
}
.gantt_hor_scroll
>
div
{
width
:
5000px
;
height
:
1px
}
.gantt_tree_indent
{
width
:
15px
;
height
:
100%
;
display
:
inline-block
}
.gantt_tree_content
,
.gantt_tree_icon
{
vertical-align
:
top
}
.gantt_tree_icon
{
width
:
28px
;
height
:
100%
;
display
:
inline-block
;
background-repeat
:
no-repeat
;
background-position
:
center
center
}
.gantt_tree_content
{
height
:
100%
;
display
:
inline-block
}
.gantt_tree_icon.gantt_open
{
background-image
:
url(data:image/gif;base64,R0lGODlhEgASALMJAMrKyt3d3ejp6d7f3+/v75aWlvf39////wAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0I5RTczQjVDMDdBMTFFMTgxRjc4Mzk4M0Q3MjVFQzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0I5RTczQjZDMDdBMTFFMTgxRjc4Mzk4M0Q3MjVFQzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozQjlFNzNCM0MwN0ExMUUxODFGNzgzOTgzRDcyNUVDMCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozQjlFNzNCNEMwN0ExMUUxODFGNzgzOTgzRDcyNUVDMCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAkALAAAAAASABIAAARJMMlJq704661B+SAIXAVhnKhBFKSZnmuLImhslXPN3ibi+6pdBXc4IIpB2YkGE1IKAoL0ICUInJNCYMDtDgJYiScUGnHO6LQkAgA7)
;
width
:
18px
;
cursor
:
pointer
}
.gantt_tree_icon.gantt_close
{
background-image
:
url(data:image/gif;base64,R0lGODlhEgASALMJAMrKyt3d3ejp6d7f3+/v75aWlvf39wAAAP///////wAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzY0QzNGM0VDMDdBMTFFMUE3MDlCNUM2QjU1NDA5RjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzY0QzNGM0ZDMDdBMTFFMUE3MDlCNUM2QjU1NDA5RjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNjRDM0YzQ0MwN0ExMUUxQTcwOUI1QzZCNTU0MDlGOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNjRDM0YzREMwN0ExMUUxQTcwOUI1QzZCNTU0MDlGOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAkALAAAAAASABIAAARDMMlJq704661B+SAIXAVhnKhBFKSZnmv7wqxVzmpd3Uff5zKEUAi0uV4xm4DAbBIEOkohMKhaB4HoxBMKjTjgsFgSAQA7)
;
width
:
18px
;
cursor
:
pointer
}
.gantt_tree_icon.gantt_blank
{
width
:
18px
}
.gantt_tree_icon.gantt_folder_open
{
background-image
:
url(data:image/gif;base64,R0lGODlhEgASAJECAJeXl7Gvrf///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTdDRDM3QzVDMDZEMTFFMUJGMzhFMDhCN0RGRjBGQ0YiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTdDRDM3QzZDMDZEMTFFMUJGMzhFMDhCN0RGRjBGQ0YiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1N0NEMzdDM0MwNkQxMUUxQkYzOEUwOEI3REZGMEZDRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMzdDNEMwNkQxMUUxQkYzOEUwOEI3REZGMEZDRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAIALAAAAAASABIAAAIzlI+pywcPm3mhWgkCsjBOvVkimElG9ZlCBlXd+2XjjLKg5GqoeZXqvsOQXK/ijUZTKVUFADs=)
}
.gantt_tree_icon.gantt_folder_closed
{
background-image
:
url(data:image/gif;base64,R0lGODlhEgASAJECAJeXl7Gvrf///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTAyMTU1RTNDMDZEMTFFMUJGNzZCRThBRkFCRjg4MTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTAyMTU1RTRDMDZEMTFFMUJGNzZCRThBRkFCRjg4MTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MDIxNTVFMUMwNkQxMUUxQkY3NkJFOEFGQUJGODgxMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1MDIxNTVFMkMwNkQxMUUxQkY3NkJFOEFGQUJGODgxMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAIALAAAAAASABIAAAIwlI+pywcPm3mhWgkCsjBOvVkimElG9ZlCuYIY6TYs+6bmHDO4igfdD3GNhheV0VQAADs=)
}
.gantt_tree_icon.gantt_file
{
background-image
:
url(data:image/gif;base64,R0lGODlhEgASAJECAJeXl7Gvrf///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzkxQzI4RjZDMDZEMTFFMTgwRjhBQURDQzI3NDU3QUEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzkxQzI4RjdDMDZEMTFFMTgwRjhBQURDQzI3NDU3QUEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3OTFDMjhGNEMwNkQxMUUxODBGOEFBRENDMjc0NTdBQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3OTFDMjhGNUMwNkQxMUUxODBGOEFBRENDMjc0NTdBQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAIALAAAAAASABIAAAIylI+pwN16QJiUQiFThRlJm3RRFYSlR5qXMKmXaMDuuMoyOi8n/e6xn8NMHETgh5RaKQsAOw==)
}
.gantt_grid_head_cell
.gantt_sort
{
position
:
absolute
;
right
:
5px
;
top
:
8px
;
width
:
7px
;
height
:
13px
;
background-repeat
:
no-repeat
;
background-position
:
center
center
}
.gantt_grid_head_cell
.gantt_sort.gantt_asc
{
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR4nGNgQAKGxib/GbABkIS7b8B/DAUwCRiGK0CXwFBAb1DfP/U/LszwHwi2X7qFgUEArBtdAVwCBmAKMCSQFSDzAWXXaOHsXeqkAAAAAElFTkSuQmCC)
}
.gantt_grid_head_cell
.gantt_sort.gantt_desc
{
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAANCAYAAABlyXS1AAAARUlEQVR42mNgQAL1/VP/M2ADIIntF2/9x1AAlrh0C47hCmA60DFYwX88gIFGwNDY5D8uDFbg7hvwHx2jmIBTAlkB0e4BAEjlaNtBWJPnAAAAAElFTkSuQmCC)
}
.gantt_inserted
,
.gantt_updated
{
font-weight
:
700
}
.gantt_deleted
{
text-decoration
:
line-through
}
.gantt_invalid
{
background-color
:
FFE0E0
}
.gantt_error
{
color
:
red
}
.dhtmlx_message_area
{
position
:
fixed
;
right
:
5px
;
width
:
250px
;
z-index
:
1000
}
.dhtmlx-info
{
min-width
:
120px
;
padding
:
4px
4px
4px
20px
;
font-family
:
Arial
;
z-index
:
10000
;
margin
:
5px
;
margin-bottom
:
10px
;
-webkit-transition
:
all
.5s
ease
;
-moz-transition
:
all
.5s
ease
;
-o-transition
:
all
.5s
ease
;
transition
:
all
.5s
ease
}
.dhtmlx-info.hidden
{
height
:
0
;
padding
:
0
;
border-width
:
0
;
margin
:
0
;
overflow
:
hidden
}
.dhtmlx_modal_box
{
overflow
:
hidden
;
display
:
inline-block
;
min-width
:
250px
;
width
:
250px
;
text-align
:
center
;
position
:
fixed
;
z-index
:
20000
;
box-shadow
:
3px
3px
3px
rgba
(
0
,
0
,
0
,
.07
);
font-family
:
Arial
;
border-radius
:
6px
;
border
:
1px
solid
#cecece
;
background
:
#fff
}
.dhtmlx_popup_title
{
border-top-left-radius
:
6px
;
border-top-right-radius
:
6px
;
border-width
:
0
}
.dhtmlx_button
,
.dhtmlx_popup_button
{
border
:
1px
solid
#cecece
;
height
:
30px
;
line-height
:
30px
;
display
:
inline-block
;
margin
:
0
5px
;
border-radius
:
4px
;
background
:
#fff
}
.dhtmlx-info
,
.dhtmlx_popup_button
,
.dhtmlx_button
{
user-select
:
none
;
-webkit-user-select
:
none
;
-moz-user-select
:
-moz-none
;
cursor
:
pointer
}
.dhtmlx_popup_text
{
overflow
:
hidden
}
.dhtmlx_popup_controls
{
border-radius
:
6px
;
padding
:
10px
}
.dhtmlx_popup_button
{
min-width
:
100px
}
div
.dhx_modal_cover
{
background-color
:
#000
;
cursor
:
default
;
filter
:
alpha
(
opacity
=
20
);
opacity
:
.2
;
position
:
fixed
;
z-index
:
19999
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
border
:
0
;
zoom
:
1
}
.dhtmlx-info
img
,
.dhtmlx_modal_box
img
{
float
:
left
;
margin-right
:
20px
}
.dhtmlx-alert-error
,
.dhtmlx-confirm-error
{
border
:
1px
solid
red
}
.dhtmlx_button
input
,
.dhtmlx_popup_button
div
{
border-radius
:
4px
;
font-size
:
14px
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
padding
:
0
;
margin
:
0
;
vertical-align
:
top
}
.dhtmlx_popup_title
{
color
:
#fff
;
text-shadow
:
1px
1px
#000
;
height
:
40px
;
line-height
:
40px
;
font-size
:
20px
}
.dhtmlx_popup_text
{
margin
:
15px
15px
5px
;
font-size
:
14px
;
color
:
#000
;
min-height
:
30px
;
border-radius
:
6px
}
.dhtmlx-info
,
.dhtmlx-error
{
font-size
:
14px
;
color
:
#000
;
box-shadow
:
3px
3px
3px
rgba
(
0
,
0
,
0
,
.07
);
padding
:
0
;
background-color
:
#FFF
;
border-radius
:
3px
;
border
:
1px
solid
#fff
}
.dhtmlx-info
div
{
padding
:
5px
10px
;
background-color
:
#fff
;
border-radius
:
3px
;
border
:
1px
solid
#cecece
}
.dhtmlx-error
{
background-color
:
#d81b1b
;
border
:
1px
solid
#ff3c3c
;
box-shadow
:
3px
3px
3px
rgba
(
0
,
0
,
0
,
.07
)}
.dhtmlx-error
div
{
background-color
:
#d81b1b
;
border
:
1px
solid
#940000
;
color
:
#FFF
}
.gantt_grid
div
,
.gantt_data_area
div
{
-ms-touch-action
:
none
;
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
)}
.gantt_data_area
{
position
:
relative
;
overflow-x
:
hidden
;
overflow-y
:
hidden
;
-moz-user-select
:
-moz-none
;
-webkit-user-select
:
none
;
-user-select
:
none
}
.gantt_links_area
{
position
:
absolute
;
left
:
0
;
top
:
0
}
.gantt_task_content
,
.gantt_task_progress
,
.gantt_side_content
{
line-height
:
inherit
;
overflow
:
hidden
;
height
:
100%
}
.gantt_task_content
{
font-size
:
12px
;
color
:
#fff
;
position
:
absolute
;
white-space
:
nowrap
;
text-align
:
center
}
.gantt_task_progress
{
text-align
:
center
;
z-index
:
0
;
background
:
#299cb4
}
.gantt_task_line
{
-webkit-border-radius
:
2px
;
-moz-border-radius
:
2px
;
border-radius
:
2px
;
position
:
absolute
;
-moz-box-sizing
:
border-box
;
box-sizing
:
border-box
;
background-color
:
#3db9d3
;
border
:
1px
solid
#2898b0
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-moz-user-select
:
-moz-none
}
.gantt_task_line.gantt_drag_move
div
{
cursor
:
move
}
.gantt_side_content
{
position
:
absolute
;
white-space
:
nowrap
;
color
:
#6e6e6e
;
bottom
:
7px
;
font-size
:
11px
}
.gantt_side_content.gantt_left
{
right
:
100%
;
padding-right
:
15px
}
.gantt_side_content.gantt_right
{
left
:
100%
;
padding-left
:
15px
}
.gantt_side_content.gantt_link_crossing
{
bottom
:
8.75px
}
.gantt_task_link
.gantt_line_wrapper
,
.gantt_link_arrow
{
position
:
absolute
;
cursor
:
pointer
}
.gantt_line_wrapper
div
{
background-color
:
#ffa011
}
.gantt_task_link
:hover
.gantt_line_wrapper
div
{
box-shadow
:
0
0
5px
0
#ffa011
}
.gantt_task_link
div
.gantt_link_arrow
{
background-color
:
transparent
;
border-style
:
solid
;
width
:
0
;
height
:
0
}
.gantt_link_control
{
position
:
absolute
;
width
:
13px
;
top
:
0
}
.gantt_link_control
div
{
display
:
none
;
cursor
:
pointer
;
box-sizing
:
border-box
;
position
:
relative
;
top
:
50%
;
margin-top
:
-7.5px
;
vertical-align
:
middle
;
border
:
1px
solid
#929292
;
-webkit-border-radius
:
6.5px
;
-moz-border-radius
:
6.5px
;
border-radius
:
6.5px
;
height
:
13px
;
width
:
13px
;
background-color
:
#f0f0f0
}
.gantt_link_control
div
:hover
{
background-color
:
#fff
}
.gantt_link_control.task_left
{
left
:
-13px
}
.gantt_link_control.task_right
{
right
:
-13px
}
.gantt_task_line.gantt_selected
.gantt_link_control
div
,
.gantt_task_line
:hover
.gantt_link_control
div
{
display
:
block
}
.gantt_link_target
.gantt_link_control
div
{
display
:
block
}
.gantt_link_source
,
.gantt_link_target
{
box-shadow
:
0
0
3px
#3db9d3
}
.gantt_link_target.link_start_allow
,
.gantt_link_target.link_finish_allow
{
box-shadow
:
0
0
3px
#ffbf5e
}
.gantt_link_target.link_start_deny
,
.gantt_link_target.link_finish_deny
{
box-shadow
:
0
0
3px
#e87e7b
}
.link_start_allow
.gantt_link_control.task_left
div
,
.link_finish_allow
.gantt_link_control.task_right
div
{
background-color
:
#ffbf5e
;
border-color
:
#ffa011
}
.link_start_deny
.gantt_link_control.task_left
div
,
.link_finish_deny
.gantt_link_control.task_right
div
{
background-color
:
#e87e7b
;
border-color
:
#dd3e3a
}
.gantt_link_arrow_right
{
border-width
:
4px
0
4px
6px
;
border-color
:
transparent
transparent
transparent
#ffa011
;
margin-top
:
-1px
}
.gantt_link_arrow_left
{
border-width
:
4px
6px
4px
0
;
margin-top
:
-1px
;
border-color
:
transparent
#ffa011
transparent
transparent
}
.gantt_link_arrow_top
{
border-width
:
0
4px
6px
;
border-color
:
transparent
transparent
#ffa011
}
.gantt_link_arrow_down
{
border-width
:
4px
6px
0
4px
;
border-color
:
#ffa011
transparent
transparent
}
.gantt_task_drag
,
.gantt_task_progress_drag
{
cursor
:
w-resize
;
height
:
100%
;
display
:
none
;
position
:
absolute
}
.gantt_task_line.gantt_selected
.gantt_task_progress_drag
,
.gantt_task_line
:hover
.gantt_task_progress_drag
,
.gantt_task_line.gantt_selected
.gantt_task_drag
,
.gantt_task_line
:hover
.gantt_task_drag
{
display
:
block
}
.gantt_task_drag
{
width
:
6px
;
background
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAACCAYAAAB7Xa1eAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QYDDjkw3UJvAwAAABRJREFUCNdj/P//PwM2wASl/6PTAKrrBf4+lD8LAAAAAElFTkSuQmCC)
;
z-index
:
1
;
top
:
0
}
.gantt_task_drag.task_left
{
left
:
0
}
.gantt_task_drag.task_right
{
right
:
0
}
.gantt_task_progress_drag
{
height
:
8px
;
width
:
8px
;
bottom
:
-4px
;
margin-left
:
-4px
;
background-position
:
bottom
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAYAAAB24g05AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkY3Rjk0RUVDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkY3Rjk0RUZDMkYzMTFFMkI1OThEQTA3ODU0OTkzMEEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjdGOTRFQ0MyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRjdGOTRFREMyRjMxMUUyQjU5OERBMDc4NTQ5OTMwQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PobPBzIAAADkSURBVHjaYpk2bRoDDsAExL1QdjEQ/8OmiAWHZk4gXqymqhQM4ty6fU8OSMUA8XdiDBAB4k0a6iqWRga6EKcwMQXduHlnL5DpB8Rv0J2JDFSA+JiOtgZcMwiA2CAxkBxUDVYDLEAKgIpV9XQ0MZwFEgPJAZnHoWpRDAgC4n2W5saiQKfjClQGkBxQDciL+6B6wAbkA/EqJwdrTkUFOQZCAKQGpBbIXA3SCzJggo+XK7OEuBgDsQCkFqgHrBfsBT5eHgZSAUwP2IBfv36TbABMDygdtK1Zv6UESLORaAbIhG6AAAMAKN8wE24DXWcAAAAASUVORK5CYII=)
;
background-repeat
:
no-repeat
;
z-index
:
2
}
.gantt_link_tooltip
{
box-shadow
:
3px
3px
3px
#888
;
background-color
:
#fff
;
border-left
:
1px
dotted
#cecece
;
border-top
:
1px
dotted
#cecece
;
font-family
:
Tahoma
;
font-size
:
8pt
;
color
:
#444
;
padding
:
6px
;
line-height
:
20px
}
.gantt_link_direction
{
height
:
0
;
border
:
0
none
#ffa011
;
border-bottom-style
:
dashed
;
border-bottom-width
:
2px
;
transform-origin
:
0
0
;
-ms-transform-origin
:
0
0
;
-webkit-transform-origin
:
0
0
;
z-index
:
2
;
margin-left
:
1px
;
position
:
absolute
}
.gantt_grid_data
.gantt_row.gantt_selected
,
.gantt_grid_data
.gantt_row.odd.gantt_selected
{
background-color
:
#fff3a1
}
.gantt_task_row.gantt_selected
{
background-color
:
#fff3a1
}
.gantt_task_row.gantt_selected
.gantt_task_cell
{
border-right-color
:
#ffec6e
}
.gantt_task_line.gantt_selected
{
box-shadow
:
0
0
5px
#299cb4
}
.gantt_task_line.gantt_project.gantt_selected
{
box-shadow
:
0
0
5px
#46ad51
}
.dhx_unselectable
,
.dhx_unselectable
div
{
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-moz-user-select
:
-moz-none
}
.dhx_cal_light
{
-webkit-tap-highlight-color
:
transparent
;
background
:
#fff
;
border-radius
:
6px
;
font-family
:
Arial
;
font-size
:
13px
;
border
:
1px
solid
#cecece
;
color
:
#6b6b6b
;
font-size
:
12px
;
position
:
absolute
;
z-index
:
10001
;
width
:
550px
;
height
:
250px
;
box-shadow
:
3px
3px
3px
rgba
(
0
,
0
,
0
,
.07
)}
.dhx_cal_light_wide
{
width
:
650px
}
.dhx_cal_light
select
{
font-family
:
Arial
;
border
:
1px
solid
#cecece
;
font-size
:
13px
;
padding
:
2px
;
margin
:
0
}
.dhx_cal_ltitle
{
padding
:
7px
10px
;
overflow
:
hidden
;
white-space
:
nowrap
;
-webkit-border-top-left-radius
:
6px
;
-webkit-border-bottom-left-radius
:
0
;
-webkit-border-top-right-radius
:
6px
;
-webkit-border-bottom-right-radius
:
0
;
-moz-border-radius-topleft
:
6px
;
-moz-border-radius-bottomleft
:
0
;
-moz-border-radius-topright
:
6px
;
-moz-border-radius-bottomright
:
0
;
border-top-left-radius
:
6px
;
border-bottom-left-radius
:
0
;
border-top-right-radius
:
6px
;
border-bottom-right-radius
:
0
}
.dhx_cal_ltitle
span
{
white-space
:
nowrap
}
.dhx_cal_lsection
{
color
:
#727272
;
font-weight
:
700
;
padding
:
12px
0
5px
10px
}
.dhx_cal_lsection
.dhx_fullday
{
float
:
right
;
margin-right
:
5px
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
20px
;
vertical-align
:
top
;
cursor
:
pointer
}
.dhx_cal_lsection
{
font-size
:
13px
}
.dhx_cal_ltext
{
padding
:
2px
10px
;
overflow
:
hidden
}
.dhx_cal_ltext
textarea
{
overflow
:
auto
;
font-family
:
Arial
;
font-size
:
13px
;
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border
:
1px
solid
#cecece
;
height
:
100%
;
width
:
100%
;
outline
:
0
!important
;
resize
:
none
}
.dhx_time
{
font-weight
:
700
}
.dhx_cal_light
.dhx_title
{
padding-left
:
10px
}
.dhx_cal_larea
{
border
:
1px
solid
#cecece
;
border-left
:
0
;
border-right
:
0
;
background-color
:
#fff
;
overflow
:
hidden
;
height
:
1px
}
.dhx_btn_set
{
margin
:
10px
7px
5px
10px
;
padding
:
5px
15px
5px
10px
;
float
:
left
;
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
border-radius
:
4px
;
border-width
:
0
;
border-color
:
#cecece
;
border-style
:
solid
;
height
:
32px
;
font-weight
:
700
;
background
:
#fff
;
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
cursor
:
pointer
}
.dhx_btn_set
div
{
float
:
left
;
font-size
:
13px
;
height
:
22px
;
line-height
:
22px
;
background-repeat
:
no-repeat
;
vertical-align
:
middle
}
.dhx_save_btn
{
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTk1OUU5RDFDMzA0MTFFMkExMUZBQTdDNDAzOUE5RjMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTk1OUU5RDJDMzA0MTFFMkExMUZBQTdDNDAzOUE5RjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxOTU5RTlDRkMzMDQxMUUyQTExRkFBN0M0MDM5QTlGMyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxOTU5RTlEMEMzMDQxMUUyQTExRkFBN0M0MDM5QTlGMyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjDroXYAAAEXSURBVHjaYvz//z8DJYCRUgPIAUxAbAnEHiAHMIBcQCwGaRYXF3e6evXqoffv39/dv38/CymaGSUkJBzv3LlzCsj///fv3wdAihkkIQnEvkAshU8zLy+v7a1bt06ANP/79+87kDIAy505cybq06dPr3p7ezuwGQLTfOPGjWP/ESAZLg8kPKBO+g01RBJNszWyZqC6uSgWgIg/f/4shxnS2dnZBjMEqNkSFGBImi8CKTYMA4BYCGjIczRDHC5dunQQSfN7IKWI4UUkjjdMMdCwnw8ePLjwHxV4Yw1gZA5Q47z/2EELzhhCE+ABGvIQWSeQvwcU38QaAML2wHj+C/X3MyAlijeB4ZBoBOIPQGxJKIVSnBsBAgwABddBclWfcZUAAAAASUVORK5CYII=)
;
margin-top
:
2px
;
width
:
21px
}
.dhx_cancel_btn
{
margin-top
:
2px
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDkzMDA3MzlDMzA0MTFFMjg2QTVFMzFEQzgwRkJERDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDkzMDA3M0FDMzA0MTFFMjg2QTVFMzFEQzgwRkJERDYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowOTMwMDczN0MzMDQxMUUyODZBNUUzMURDODBGQkRENiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowOTMwMDczOEMzMDQxMUUyODZBNUUzMURDODBGQkRENiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmYuYOUAAAEdSURBVHjaYvz//z8DJYAFXWDlypU8QKoIiD2A2AwqfAqIdwBxX3h4+Bdk9YzILgBqtgdS84FYEYeF94E4EWjIQZgAE5LmQCB1AKoZZKMPEAtAMYh9GSp3AKjWD8UFQAEhIPshEIOc3wHENUBb/qJ57SyQMoJyPwKxElDNO1gYFEE17wMKVmIJlzNQzeegrjaA6qmBecEbSvfh0GwMxGeBhoPoemQ9MAO0kEIbl2YTqPAFKK2IbMB3AjabYIkRZmQD7kNpMyI0G0PpO8gGbIUFJj7NQDk2INWIrIcJKfBAKcwJqvkcDs0TgFgXGo19KCkRmpDWQdWDEk0NUoCBoq0FqhkE/IEWbKJKUmZEz43QzFSKIzN1481M5ACAAAMAlfl/lCwRpagAAAAASUVORK5CYII=)
;
width
:
20px
}
.dhx_delete_btn
{
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFENzI3NUNDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFENzI3NURDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMUQ3Mjc1QUMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMUQ3Mjc1QkMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmUD0gAAAABvSURBVHjaYvz//z8DIyMjAxYQicReji4J0ofKQNP8HwmgGQbXB8IsWGwDSSwDuioKjY9uBthVjFAXYHUGAQA2kYmBUoAUBpGk0LAwgBvwH+YX4mkwptgLowYMRgOITUyYKRFIN/wnDjQgJySAAAMApryKzL8wjfUAAAAASUVORK5CYII=)
;
margin-top
:
2px
;
width
:
20px
}
.dhx_cal_cover
{
width
:
100%
;
height
:
100%
;
position
:
absolute
;
z-index
:
10000
;
top
:
0
;
left
:
0
;
background-color
:
#000
;
opacity
:
.1
;
filter
:
alpha
(
opacity
=
10
)}
.dhx_custom_button
{
padding
:
0
3px
;
font-family
:
Arial
;
font-size
:
13px
;
font-weight
:
400
;
margin-right
:
5px
;
margin-top
:
0
;
cursor
:
pointer
}
.dhx_custom_button
div
{
cursor
:
pointer
;
float
:
left
;
height
:
21px
;
line-height
:
21px
;
vertical-align
:
middle
}
.dhx_cal_light_wide
{
width
:
580px
;
padding
:
2px
4px
}
.dhx_cal_light_wide
.dhx_cal_larea
{
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border
:
1px
solid
#cecece
}
.dhx_cal_light_wide
.dhx_cal_lsection
{
border
:
0
;
float
:
left
;
text-align
:
right
;
width
:
80px
;
height
:
20px
;
padding
:
5px
10px
0
0
}
.dhx_cal_light_wide
.dhx_wrap_section
{
position
:
relative
;
padding
:
10px
0
;
overflow
:
hidden
;
border-bottom
:
1px
solid
#ebebeb
}
.dhx_cal_light_wide
.dhx_section_time
{
overflow
:
hidden
;
padding-top
:
2px
!important
;
padding-right
:
0
;
height
:
20px
!important
}
.dhx_cal_light_wide
.dhx_cal_ltext
{
padding-right
:
0
}
.dhx_cal_light_wide
.dhx_cal_larea
{
padding
:
0
10px
;
width
:
100%
}
.dhx_cal_light_wide
.dhx_section_time
{
background
:
transparent
}
.dhx_cal_light_wide
.dhx_cal_checkbox
label
{
padding-left
:
0
}
.dhx_cal_light_wide
.dhx_cal_lsection
.dhx_fullday
{
float
:
none
;
margin-right
:
0
;
font-weight
:
700
;
cursor
:
pointer
}
.dhx_cal_light_wide
.dhx_custom_button
{
position
:
absolute
;
top
:
0
;
right
:
0
;
margin-top
:
2px
}
.dhx_cal_light_wide
.dhx_repeat_right
{
margin-right
:
55px
}
.dhx_cal_light_wide.dhx_cal_light_full
{
width
:
738px
}
.dhx_cal_wide_checkbox
input
{
margin-top
:
8px
;
margin-left
:
14px
}
.dhx_cal_light
input
{
font-size
:
13px
}
.dhx_custom_button
{
float
:
right
;
height
:
21px
;
width
:
90px
;
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
-ms-border-radius
:
4px
;
-o-border-radius
:
4px
;
border-radius
:
4px
}
.dhx_section_time
{
background-color
:
#fff
;
white-space
:
nowrap
;
padding
:
2px
10px
5px
;
padding-top
:
2px
!important
}
.dhx_section_time
.dhx_time_selects
{
float
:
left
;
height
:
25px
}
.dhx_section_time
.dhx_time_selects
select
{
height
:
23px
;
padding
:
2px
;
border
:
1px
solid
#cecece
}
.dhx_gantt_duration
{
width
:
100px
;
height
:
23px
;
float
:
left
;
white-space
:
nowrap
;
margin-left
:
20px
;
line-height
:
23px
}
.dhx_gantt_duration
.dhx_gantt_duration_value
,
.dhx_gantt_duration
.dhx_gantt_duration_dec
,
.dhx_gantt_duration
.dhx_gantt_duration_inc
{
-moz-box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
text-align
:
center
;
vertical-align
:
top
;
height
:
100%
;
border
:
1px
solid
#cecece
}
.dhx_gantt_duration
.dhx_gantt_duration_value
{
width
:
40px
;
padding
:
3px
4px
;
border-left-width
:
0
;
border-right-width
:
0
}
.dhx_gantt_duration
.dhx_gantt_duration_dec
,
.dhx_gantt_duration
.dhx_gantt_duration_inc
{
width
:
20px
;
padding
:
1px
;
padding-bottom
:
3px
;
background
:
#fff
}
.dhx_gantt_duration
.dhx_gantt_duration_dec
{
-moz-border-top-left-radius
:
4px
;
-moz-border-bottom-left-radius
:
4px
;
-webkit-border-top-left-radius
:
4px
;
-webkit-border-bottom-left-radius
:
4px
;
border-top-left-radius
:
4px
;
border-bottom-left-radius
:
4px
}
.dhx_gantt_duration
.dhx_gantt_duration_inc
{
margin-right
:
4px
;
-moz-border-top-right-radius
:
4px
;
-moz-border-bottom-right-radius
:
4px
;
-webkit-border-top-right-radius
:
4px
;
-webkit-border-bottom-right-radius
:
4px
;
border-top-right-radius
:
4px
;
border-bottom-right-radius
:
4px
}
.dhx_cal_quick_info
{
border
:
1px
solid
#cecece
;
border-radius
:
6px
;
position
:
absolute
;
z-index
:
300
;
box-shadow
:
3px
3px
3px
rgba
(
0
,
0
,
0
,
.07
);
background-color
:
#fff
;
width
:
300px
;
transition
:
left
.5s
ease
,
right
.5s
;
-moz-transition
:
left
.5s
ease
,
right
.5s
;
-webkit-transition
:
left
.5s
ease
,
right
.5s
;
-o-transition
:
left
.5s
ease
,
right
.5s
}
.dhx_no_animate
{
transition
:
none
;
-moz-transition
:
none
;
-webkit-transition
:
none
;
-o-transition
:
none
}
.dhx_cal_quick_info.dhx_qi_left
.dhx_qi_big_icon
{
float
:
right
}
.dhx_cal_qi_title
{
-webkit-border-top-left-radius
:
6px
;
-webkit-border-bottom-left-radius
:
0
;
-webkit-border-top-right-radius
:
6px
;
-webkit-border-bottom-right-radius
:
0
;
-moz-border-radius-topleft
:
6px
;
-moz-border-radius-bottomleft
:
0
;
-moz-border-radius-topright
:
6px
;
-moz-border-radius-bottomright
:
0
;
border-top-left-radius
:
6px
;
border-bottom-left-radius
:
0
;
border-top-right-radius
:
6px
;
border-bottom-right-radius
:
0
;
padding
:
5px
0
8px
12px
;
color
:
#454545
;
background-color
:
#fff
;
border-bottom
:
1px
solid
#cecece
}
.dhx_cal_qi_tdate
{
font-size
:
14px
;
font-weight
:
700
}
.dhx_cal_qi_tcontent
{
font-size
:
13px
}
.dhx_cal_qi_content
{
padding
:
16px
8px
;
font-size
:
13px
;
color
:
#454545
;
overflow
:
hidden
}
.dhx_cal_qi_controls
{
-webkit-border-top-left-radius
:
0
;
-webkit-border-bottom-left-radius
:
6px
;
-webkit-border-top-right-radius
:
0
;
-webkit-border-bottom-right-radius
:
6px
;
-moz-border-radius-topleft
:
0
;
-moz-border-radius-bottomleft
:
6px
;
-moz-border-radius-topright
:
0
;
-moz-border-radius-bottomright
:
6px
;
border-top-left-radius
:
0
;
border-bottom-left-radius
:
6px
;
border-top-right-radius
:
0
;
border-bottom-right-radius
:
6px
;
padding-left
:
7px
}
.dhx_cal_qi_controls
.dhx_menu_icon
{
margin-top
:
6px
;
background-repeat
:
no-repeat
}
.dhx_cal_qi_controls
.dhx_menu_icon.icon_edit
{
width
:
20px
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH3QYFCjI5ZQj5bAAAAFNJREFUOMvt0zEOACAIA0DkwTymH8bJTRTKZGJXyaWEKPKTCQAH4Ls37cItcDUzsxHNDLZNhCq7Gt1wh9ErV7EjyGAhyGLphlnsClWuS32rn0czAV+vNGrM/LBtAAAAAElFTkSuQmCC)
}
.dhx_cal_qi_controls
.dhx_menu_icon.icon_delete
{
width
:
20px
;
background-image
:
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjFENzI3NUNDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjFENzI3NURDMzA0MTFFMjhBNjJGQTc3MUIyQzYzNEYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMUQ3Mjc1QUMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyMUQ3Mjc1QkMzMDQxMUUyOEE2MkZBNzcxQjJDNjM0RiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmUD0gAAAABvSURBVHjaYvz//z8DIyMjAxYQicReji4J0ofKQNP8HwmgGQbXB8IsWGwDSSwDuioKjY9uBthVjFAXYHUGAQA2kYmBUoAUBpGk0LAwgBvwH+YX4mkwptgLowYMRgOITUyYKRFIN/wnDjQgJySAAAMApryKzL8wjfUAAAAASUVORK5CYII=)
}
.dhx_qi_big_icon
{
font-size
:
13px
;
border-radius
:
4px
;
font-weight
:
700
;
background
:
#fff
;
margin
:
5px
9px
8px
0
;
min-width
:
60px
;
line-height
:
32px
;
vertical-align
:
middle
;
padding
:
0
10px
0
5px
;
cursor
:
pointer
;
border
:
1px
solid
#cecece
}
.dhx_cal_qi_controls
div
{
float
:
left
;
height
:
32px
;
text-align
:
center
;
line-height
:
32px
}
.gantt_tooltip
{
box-shadow
:
3px
3px
3px
rgba
(
0
,
0
,
0
,
.07
);
background-color
:
#fff
;
border-left
:
1px
solid
rgba
(
0
,
0
,
0
,
.07
);
border-top
:
1px
solid
rgba
(
0
,
0
,
0
,
.07
);
font-family
:
Arial
;
font-size
:
8pt
;
color
:
#454545
;
padding
:
10px
;
position
:
absolute
;
z-index
:
500
}
.gantt_noselect
{
-moz-user-select
:
-moz-none
;
-webkit-user-select
:
none
;
-user-select
:
none
}
.gantt_drag_marker
{
position
:
absolute
;
font-family
:
Arial
;
font-size
:
13px
}
.gantt_drag_marker
.gantt_tree_indent
,
.gantt_drag_marker
.gantt_tree_icon.gantt_blank
,
.gantt_drag_marker
.gantt_tree_icon.gantt_open
,
.gantt_drag_marker
.gantt_tree_icon.gantt_close
{
display
:
none
}
.gantt_drag_marker
,
.gantt_drag_marker
.gantt_row.odd
{
background-color
:
#fff
}
.gantt_drag_marker
.gantt_row
{
border-left
:
1px
solid
#d2d2d2
;
border-top
:
1px
solid
#d2d2d2
}
.gantt_drag_marker
.gantt_cell
{
border-color
:
#d2d2d2
}
.gantt_row.gantt_over
,
.gantt_task_row.gantt_over
{
background-color
:
#0070fe
}
.gantt_row.gantt_transparent
.gantt_cell
{
opacity
:
.7
}
.gantt_task_row.gantt_transparent
{
background-color
:
#f8fdfd
}
.dhtmlx_popup_button.dhtmlx_delete_button
{
background
:
#3db9d3
;
text-shadow
:
0
-1px
0
#248a9f
;
color
:
#fff
;
font-weight
:
700
;
border-width
:
0
}
\ No newline at end of file
dream/platform/static/lib/dhtmlxgantt.js
0 → 100644
View file @
193da8aa
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment