Skip to content

Commit

Permalink
Collapse view, gantchart, fullcalendar
Browse files Browse the repository at this point in the history
  • Loading branch information
martbrugg committed Dec 11, 2013
1 parent 4af69a1 commit a549922
Show file tree
Hide file tree
Showing 923 changed files with 126,781 additions and 2,314 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
function getSampleData() {

return {
"data1": [
// Order is optional. If not specified it will be assigned automatically
{"id": "2f85dbeb-0845-404e-934e-218bf39750c0", "description": "Milestones", "order": 0, "tasks": [
// Dates can be specified as string, timestamp or javascript date object. The data attribute can be used to attach a custom object
{"id": "f55549b5-e449-4b0c-9f4b-8b33381f7d76", "subject": "Kickoff", "color": "#93C47D", "from": "2013-10-07T09:00:00", "to": 1381129200000, "data": "Can contain any custom data or object"},
{"id": "5e997eb3-4311-46b1-a1b4-7e8663ea8b0b", "subject": "Concept approval", "color": "#93C47D", "from": new Date(2013,9,18,18,0,0), "to": new Date(2013,9,18,18,0,0)},
{"id": "b6a1c25c-85ae-4991-8502-b2b5127bc47c", "subject": "Development finished", "color": "#93C47D", "from": new Date(2013,10,15,18,0,0), "to": new Date(2013,10,15,18,0,0)},
{"id": "6fdfd775-7b22-42ec-a12c-21a64c9e7a9e", "subject": "Shop is running", "color": "#93C47D", "from": new Date(2013,10,22,12,0,0), "to": new Date(2013,10,22,12,0,0)},
{"id": "c112ee80-82fc-49ba-b8de-f8efba41b5b4", "subject": "Go-live", "color": "#93C47D", "from": new Date(2013,10,29,16,0,0), "to": new Date(2013,10,29,16,0,0)}
], "data": "Can contain any custom data or object"},
{"id": "b8d10927-cf50-48bd-a056-3554decab824", "description": "Status meetings", "order": 1, "tasks": [
{"id": "301d781f-1ef0-4c35-8398-478b641c0658", "subject": "Demo", "color": "#9FC5F8", "from": new Date(2013,9,25,15,0,0), "to": new Date(2013,9,25,18,30,0)},
{"id": "0fbf344a-cb43-4b20-8003-a789ba803ad8", "subject": "Demo", "color": "#9FC5F8", "from": new Date(2013,10,1,15,0,0), "to": new Date(2013,10,1,18,0,0)},
{"id": "12af138c-ba21-4159-99b9-06d61b1299a2", "subject": "Demo", "color": "#9FC5F8", "from": new Date(2013,10,8,15,0,0), "to": new Date(2013,10,8,18,0,0)},
{"id": "73294eca-de4c-4f35-aa9b-ae25480967ba", "subject": "Demo", "color": "#9FC5F8", "from": new Date(2013,10,15,15,0,0), "to": new Date(2013,10,15,18,0,0)},
{"id": "75c3dc51-09c4-44fb-ac40-2f4548d0728e", "subject": "Demo", "color": "#9FC5F8", "from": new Date(2013,10,24,9,0,0), "to": new Date(2013,10,24,10,0,0)}
]},
{"id": "c65c2672-445d-4297-a7f2-30de241b3145", "description": "Kickoff", "order": 2, "tasks": [
{"id": "4e197e4d-02a4-490e-b920-4881c3ba8eb7", "subject": "Day 1", "color": "#9FC5F8", "from": new Date(2013,9,7,9,0,0), "to": new Date(2013,9,7,17,0,0)},
{"id": "451046c0-9b17-4eaf-aee0-4e17fcfce6ae", "subject": "Day 2", "color": "#9FC5F8", "from": new Date(2013,9,8,9,0,0), "to": new Date(2013,9,8,17,0,0)},
{"id": "fcc568c5-53b0-4046-8f19-265ebab34c0b", "subject": "Day 3", "color": "#9FC5F8", "from": new Date(2013,9,9,8,30,0), "to": new Date(2013,9,9,12,0,0)}
]},
{"id": "dd2e7a97-1622-4521-a807-f29960218785", "description": "Create concept", "order": 3, "tasks": [
{"id": "9c17a6c8-ce8c-4426-8693-a0965ff0fe69", "subject": "Create concept", "color": "#F1C232", "from": new Date(2013,9,10,8,0,0), "to": new Date(2013,9,16,18,0,0)}
]},
{"id": "eede0c9a-6777-4b55-9359-1eada309404e", "description": "Finalize concept", "order": 4, "tasks": [
{"id": "30b8f544-5a45-4357-9a72-dd0181fba49f", "subject": "Finalize concept", "color": "#F1C232", "from": new Date(2013,9,17,8,0,0), "to": new Date(2013,9,18,18,0,0)}
]},
{"id": "b5318fd9-5d70-4eb1-9c05-65647b9aefe6", "description": "Sprint 1", "order": 5, "tasks": [
{"id": "d1fdf100-534c-4198-afb9-7bcaef0696f0", "subject": "Product list view", "color": "#F1C232", "from": new Date(2013,9,21,8,0,0), "to": new Date(2013,9,25,15,0,0)}
]},
{"id": "cfb29cd5-1737-4027-9778-bb3058fbed9c", "description": "Sprint 2", "order": 6, "tasks": [
{"id": "57638ba3-dfff-476d-ab9a-30fda1e44b50", "subject": "Order basket", "color": "#F1C232", "from": new Date(2013,9,28,8,0,0), "to": new Date(2013,10,1,15,0,0)}
]},
{"id": "df9bb83f-e9de-4cbe-944e-36aec6db53cc", "description": "Sprint 3", "order": 7, "tasks": [
{"id": "192adc6e-ab17-4cd1-82d8-4a5e7525b169", "subject": "Checkout", "color": "#F1C232", "from": new Date(2013,10,4,8,0,0), "to": new Date(2013,10,8,15,0,0)}
]},
{"id": "48cbc052-1fd5-4262-a05f-97dad7337876", "description": "Sprint 4", "order": 8, "tasks": [
{"id": "431dc7be-b61b-49a0-b26d-7ab5dfcadd41", "subject": "Login&Singup and admin view", "color": "#F1C232", "from": new Date(2013,10,11,8,0,0), "to": new Date(2013,10,15,15,0,0)}
]},
{"id": "34473cc4-5ee5-4953-8289-98779172129e", "description": "Setup server", "order": 9, "tasks": [
{"id": "43eb6d19-6402-493c-a281-20e59a6fab6e", "subject": "HW", "color": "#F1C232", "from": new Date(2013,10,18,8,0,0), "to": new Date(2013,10,18,12,0,0)}
]},
{"id": "73cae585-5b2c-46b6-aeaf-8cf728c894f7", "description": "Config server", "order": 10, "tasks": [
{"id": "8dbfda29-e775-4fa3-87c1-103b085d52ee", "subject": "SW / DNS/ Backups", "color": "#F1C232", "from": new Date(2013,10,18,12,0,0), "to": new Date(2013,10,21,18,0,0)}
]},
{"id": "41cae585-ad2c-46b6-aeaf-8cf728c894f7", "description": "Deployment", "order": 11, "tasks": [
{"id": "2dbfda09-e775-4fa3-87c1-103b085d52ee", "subject": "Depl. & Final testing", "color": "#F1C232", "from": new Date(2013,10,21,8,0,0), "to": new Date(2013,10,22,12,0,0)}
]},
{"id": "33e1af55-52c6-4ccd-b261-1f4484ed5773", "description": "Workshop", "order": 12, "tasks": [
{"id": "656b9240-00da-42ff-bfbd-dfe7ba393528", "subject": "On-side education", "color": "#F1C232", "from": new Date(2013,10,24,9,0,0), "to": new Date(2013,10,25,15,0,0)}
]},
{"id": "bffa16c6-c134-4443-8e6e-b09410c37c9f", "description": "Content", "order": 13, "tasks": [
{"id": "2f4ec0f1-cd7a-441a-8288-e788ec112af9", "subject": "Supervise content creation", "color": "#F1C232", "from": new Date(2013,10,26,9,0,0), "to": new Date(2013,10,29,16,0,0)}
]},
{"id": "ec0c5e31-449f-42d0-9e81-45c66322b640", "description": "Documentation", "order": 14, "tasks": [
{"id": "edf2cece-2d17-436f-bead-691edbc7386b", "subject": "Technical/User documentation", "color": "#F1C232", "from": new Date(2013,10,26,8,0,0), "to": new Date(2013,10,28,18,0,0)}
]}
]};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
.gantt {
width: 100%;
line-height: 1;
}

.gantt-labels {
float: left;
border-right: 1px solid #dddddd;
}

.gantt-labels-header {
border-bottom: 1px solid #dddddd;
}

.gantt-labels-body {
overflow: hidden;
}

.gantt-header {
overflow: hidden;
border-bottom: 1px solid #dddddd;
}

.gantt-scrollable {
overflow-y: hidden;
overflow-x: scroll;
}

.gantt-header-height {
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
height: 2em;
}

.gantt-header-hour, .gantt-header-day, .gantt-header-week, .gantt-header-month {
white-space: nowrap;
}

.gantt-header-hour span, .gantt-header-day span, .gantt-header-week span, .gantt-header-month span {
position: absolute;
}

.gantt-header-month {
border-top: 1px solid #dddddd;
border-bottom: 1px solid #dddddd;
}

.gantt-header-row, .gant-labels-row {
cursor: pointer;
}

.gantt-labels-desc span, .gantt-header-row span, .gantt-labels-row span {
padding-left: 12px;
padding-right: 12px;
}

.gantt-labels-desc span, .gantt-header-hour span, .gantt-header-day span, .gantt-header-week span, .gantt-header-month span {
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
display: inline-block;
height: 2em;
text-align: center;
padding-top: 0.5em;
}

.gantt-header-row span, .gantt-labels-row span {
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
display: inline-block;
padding-top: 0.5em;
}

.gantt-header-hour span, .gantt-header-day span, .gantt-header-week span, .gantt-header-month span {
border-right: 1px solid #dddddd;
}

.gantt-body {
position: relative;
width: 100%;
}

.gantt-body-background {
position: absolute;
width: 100%;
}

.gantt-body-foreground {
position: absolute;
height: 100%;
}

.gantt-grid-foreground-col, .gantt-grid-foreground-col-weekend, .gantt-grid-foreground-col-nonworkhour {
box-sizing:border-box;
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
display: inline-block;
height: 100%;
border-right: 1px solid #dddddd;
}

.gantt-grid-foreground-col-weekend, .gantt-grid-foreground-col-nonworkhour {
background-color: rgba(200, 200, 200, 0.3);
}

.gantt-body-column {
position: absolute;
}


.gantt-grid-background-row, .gantt-grid-background-row-alt {

}

.gantt-grid-background-row-alt {
background-color: #EFEFEF;
}

.gantt-body-content {
}

.gantt-row {
position: relative;
}

.gantt-row-height {
height: 2em;
}

.gantt-task {
position: absolute;
margin: auto;
top: 0; bottom: 0;
height: 80%;
background-color: grey;
border-radius: 2px;
}

.gantt-task-milestone {
position: absolute;
margin: auto;
top: 0; bottom: 0;
width: 0.6em !important;
height: 80%;
background-color: grey;
border-radius: 0.3em;
}

.gantt-task-content {
margin-left: 5px;
margin-right: 5px;
margin-top: 0.3em;
overflow: hidden;
}

.gantt-task-content span {
display: inline-block;
white-space: nowrap;
/*text-overflow: ellipsis;*/
}

.gantt-task-info {
position: fixed;
background: #ffffff;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 4px;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
padding: 9px 12px;
opacity: 0;
z-index: 999;
}

.gantt-task-info-content {
line-height: 1.1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.gantt-task-infoArrow:before, .gantt-task-infoArrowR:before {
position: absolute;
top: 100%;
width: 0px; height: 0px;
border-top: 8px solid rgba(0, 0, 0, 0.1);
border-right: 8px solid transparent;
border-left: 8px solid transparent;
content: '';
}

.gantt-task-infoArrow:before {
left: 10px;
}

.gantt-task-infoArrowR:before {
right: 10px;
}

.gantt-task-infoArrow:after, .gantt-task-infoArrowR:after {
position: absolute;
top: 100%;
width: 0px; height: 0px;
border-top: 7px solid #ffffff;
border-right: 7px solid transparent;
border-left: 7px solid transparent;
content: '';
}

.gantt-task-infoArrow:after {
left: 11px;
}

.gantt-task-infoArrowR:after {
right: 11px;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<div class="gantt">
<div class="gantt-labels">
<div class="gantt-labels-header"
ng-show="gantt.columns.hours.length > 0">
<div class="gantt-labels-desc gantt-header-height"
ng-style="{'margin-top': (viewScale === 'hour' && (3*2) || (2*2))+'em'}">
<span>Description</span>
</div>
</div>
<div class="gantt-labels-body"
ng-style="(maxHeight > 0 && {'max-height': maxHeight+'px'} || {})"
ng-show="gantt.columns.hours.length > 0">
<div gantt-vertical-scroll-receiver
ng-style="{'position': 'relative'}">
<div class="gantt-labels-row gantt-row-height"
ng-class-odd="'gantt-grid-background-row'"
ng-class-even="'gantt-grid-background-row-alt'"
ng-repeat="row in gantt.rows">
<gantt-sortable swap="swapRows(a,b)" ng-model="row">
<span>{{ row.description }}</span>
</gantt-sortable>
</div>
</div>
</div>
</div>
<div class="gantt-header"
ng-show="gantt.columns.hours.length > 0">
<div gantt-horizontal-scroll-receiver
ng-style="{'position': 'relative', 'width': ganttInnerWidth+'em'}">
<div class="gantt-header-month gantt-header-height">
<span ng-style="{'width': c.width+'em', 'left': c.left+'em'}"
ng-repeat="c in gantt.columns.months | ganttColumnLimit:scroll_start:scroll_width">
{{ c.date | date:'MMMM yyyy' }}
</span>
</div>
<div class="gantt-header-week gantt-header-height">
<span ng-style="{'width': c.width+'em', 'left': c.left+'em'}"
ng-repeat="c in gantt.columns.weeks | ganttColumnLimit:scroll_start:scroll_width">
{{ c.date | ganttDateWeek }}
</span>
</div>
<div class="gantt-header-day gantt-header-height">
<span ng-style="{'width': c.width+'em', 'left': c.left+'em'}"
ng-repeat="c in gantt.columns.days | ganttColumnLimit:scroll_start:scroll_width">
{{ viewScale === "day" && (c.date | date:'dd') || (c.date | date:'dd EEEE') }}
</span>
</div>
<div class="gantt-header-hour gantt-header-height"
ng-show="viewScale === 'hour'">
<span ng-style="{'width': c.width+'em', 'left': c.left+'em'}"
ng-repeat="c in gantt.columns.hours | ganttColumnLimit:scroll_start:scroll_width:viewScale !== 'hour'">
{{ c.date | date:'HH' }}
</span>
</div>
</div>
</div>
<div class="gantt-scrollable"
gantt-scroll-sender
gantt-limit-updater
ng-style="(maxHeight > 0 && {'max-height': maxHeight+'px', 'overflow-y': 'scroll'} || {'overflow-y': 'hidden'})"
ng-style="{'overflow-x': (gantt.rows.length == 0 && 'hidden' || 'scroll')}">
<div class="gantt-body"
ng-style="{'width': ganttInnerWidth+'em'}">
<div class="gantt-body-background">
<div class="gantt-row-height"
ng-class-odd="'gantt-grid-background-row'"
ng-class-even="'gantt-grid-background-row-alt'"
ng-repeat="row in gantt.rows">
</div>
</div>
<div class="gantt-body-foreground">
<div class="gantt-body-column"
ng-class="(viewScale === 'hour' && !c.isWorkHour && 'gantt-grid-foreground-col-nonworkhour' || (c.isWeekend && 'gantt-grid-foreground-col-weekend' || 'gantt-grid-foreground-col'))"
ng-style="{'width': c.width+'em', 'left': c.left+'em'}"
ng-repeat="c in getBodyColumns() | ganttColumnLimit:scroll_start:scroll_width">
</div>
</div>
<div class="gantt-body-content">
<div class="gantt-row gantt-row-height"
ng-click="raiseRowClicked($event, row)"
ng-repeat="row in gantt.rows">
<!--a task will override the row event -->
<div ng-class="(task.to-task.from === 0 && 'gantt-task-milestone' || 'gantt-task')"
ng-style="{'left': (task.to-task.from === 0 && (task.left-0.3) || task.left)+'em', 'width': task.width+'em', 'background-color': task.color}"
ng-click="raiseTaskClicked($event, row, task)"
ng-repeat="task in row.tasks | ganttTaskLimit:scroll_start:scroll_width">
<gantt-tooltip ng-model="task">
<div class="gantt-task-content"><span>{{ (task.to-task.from === 0 && '&nbsp;' || task.subject) }}</span></div>
</gantt-tooltip>
</div>
</div>
</div>
</div>
</div>
</div>
Loading

0 comments on commit a549922

Please sign in to comment.