<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn3.devexpress.com/jslib/22.1.6/js/dx.all.js"></script> <link rel="stylesheet" href="https://cdn3.devexpress.com/jslib/22.1.6/css/dx.common.css"> <link rel="stylesheet" href="https://cdn3.devexpress.com/jslib/22.1.6/css/dx.light.css"> <div class="dx-viewport cal-container" id="month-data"> <div id="scheduler"></div> <div class="options"> <div class="caption">Filter Events:</div> <div class="option"> <div id="resources-selector"></div> </div> </div> </div> <div class="back"> <a href="{{ request.path }}" class="back-cal"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" aria-hidden="true"><g id="chevron-left1_layer"><path d="M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"></path></g></svg> Back to Calendar</a> </div> <div class="dx-viewport tree-container" id="tree-data"> <div id="tasks"></div> </div> <script> /*$(() => { const scheduler = $('#scheduler').dxScheduler({ timeZone: 'America/Los_Angeles', dataSource: data, views: ['month'], currentView: 'month', currentDate: new Date(2021, 1, 1), startDayHour: 9, endDayHour: 19, resources: [ { fieldExpr: 'roomId', dataSource: rooms, label: 'Room', }, { fieldExpr: 'priorityId', dataSource: priorities, label: 'Priority', }, { fieldExpr: 'assigneeId', allowMultiple: true, dataSource: assignees, label: 'Assignee', }], height: 600, }).dxScheduler('instance'); $('#resources-selector').dxRadioGroup({ items: resourcesList, value: resourcesList[0], layout: 'horizontal', onValueChanged(e) { const resources = scheduler.option('resources'); for (let i = 0; i < resources.length; i += 1) { resources[i].useColorAsDefault = resources[i].label === e.value; } scheduler.repaint(); }, }); }); const resourcesList = ['Assignee', 'Room', 'Priority']; const data = [ { text: 'Website Re-Design Plan', assigneeId: 4, roomId: 1, priorityId: [2], startDate: new Date('2021-04-26T16:30:00.000Z'), endDate: new Date('2021-04-26T18:30:00.000Z'), }, { text: 'Book Flights to San Fran for Sales Trip', assigneeId: 2, roomId: 2, priorityId: [1], startDate: new Date('2021-04-26T19:00:00.000Z'), endDate: new Date('2021-04-26T20:00:00.000Z'), allDay: true, }, { text: 'Install New Router in Dev Room', assigneeId: 1, roomId: 1, priorityId: [2], startDate: new Date('2021-04-26T21:30:00.000Z'), endDate: new Date('2021-04-26T22:30:00.000Z'), }, { text: 'Approve Personal Computer Upgrade Plan', assigneeId: 3, roomId: 2, priorityId: [2], startDate: new Date('2021-04-27T17:00:00.000Z'), endDate: new Date('2021-04-27T18:00:00.000Z'), }, { text: 'Final Budget Review', assigneeId: 1, roomId: 1, priorityId: [1], startDate: new Date('2021-04-27T19:00:00.000Z'), endDate: new Date('2021-04-27T20:35:00.000Z'), }, { text: 'New Brochures', assigneeId: 4, roomId: 3, priorityId: [2], startDate: new Date('2021-04-27T21:30:00.000Z'), endDate: new Date('2021-04-27T22:45:00.000Z'), }, { text: 'Install New Database', assigneeId: 2, roomId: 3, priorityId: [1], startDate: new Date('2021-04-28T16:45:00.000Z'), endDate: new Date('2021-04-28T18:15:00.000Z'), }, { text: 'Approve New Online Marketing Strategy', assigneeId: 4, roomId: 2, priorityId: [1], startDate: new Date('2021-04-28T19:00:00.000Z'), endDate: new Date('2021-04-28T21:00:00.000Z'), }, { text: 'Upgrade Personal Computers', assigneeId: 2, roomId: 2, priorityId: [2], startDate: new Date('2021-04-28T22:15:00.000Z'), endDate: new Date('2021-04-28T23:30:00.000Z'), }, { text: 'Customer Workshop', assigneeId: 3, roomId: 3, priorityId: [1], startDate: new Date('2021-04-29T18:00:00.000Z'), endDate: new Date('2021-04-29T19:00:00.000Z'), allDay: true, }, { text: 'Prepare 2021 Marketing Plan', assigneeId: 1, roomId: 1, priorityId: [2], startDate: new Date('2021-04-29T18:00:00.000Z'), endDate: new Date('2021-04-29T20:30:00.000Z'), }, { text: 'Brochure Design Review', assigneeId: 4, roomId: 1, priorityId: [1], startDate: new Date('2021-04-29T21:00:00.000Z'), endDate: new Date('2021-04-29T22:30:00.000Z'), }, { text: 'Create Icons for Website', assigneeId: 3, roomId: 3, priorityId: [1], startDate: new Date('2021-04-30T17:00:00.000Z'), endDate: new Date('2021-04-30T18:30:00.000Z'), }, { text: 'Upgrade Server Hardware', assigneeId: 4, roomId: 2, priorityId: [2], startDate: new Date('2021-04-30T21:30:00.000Z'), endDate: new Date('2021-04-30T23:00:00.000Z'), }, { text: 'Submit New Website Design', assigneeId: 1, roomId: 1, priorityId: [2], startDate: new Date('2021-04-30T23:30:00.000Z'), endDate: new Date('2021-05-01T01:00:00.000Z'), }, { text: 'Launch New Website', assigneeId: 2, roomId: 3, priorityId: [1], startDate: new Date('2021-04-30T19:20:00.000Z'), endDate: new Date('2021-04-30T21:00:00.000Z'), }, ]; const assignees = [ { text: 'Samantha Bright', id: 1, color: '#727bd2', }, { text: 'John Heart', id: 2, color: '#32c9ed', }, { text: 'Todd Hoffman', id: 3, color: '#2a7ee4', }, { text: 'Sandra Johnson', id: 4, color: '#7b49d3', }, ]; const rooms = [ { text: 'Room 1', id: 1, color: '#00af2c', }, { text: 'Room 2', id: 2, color: '#56ca85', }, { text: 'Room 3', id: 3, color: '#8ecd3c', }, ]; const priorities = [ { text: 'High', id: 1, color: '#cc5c53', }, { text: 'Low', id: 2, color: '#ff9747', }, ]; function OnHyperLinkClicked(dateString) { clientScheduler.PerformCallback(dateString); } */ $(() => { const scheduler = $('#scheduler').dxScheduler({ timeZone: 'America/Los_Angeles', dataSource: data, views: [ 'month'], currentView: 'month', currentDate: new Date(), startDayHour: 9, endDayHour: 19, editing: { allowUpdating: false, allowAdding: false, }, //groups: ["function_venue"], resources: [ { fieldExpr: 'function_venue', dataSource: function_venue, label: 'Event Venue', }, { fieldExpr: 'event_statusId', dataSource: event_status, label: 'Status', }], height: 600, onAppointmentClick(e) { //var text = e.targetedAppointmentData.text; var date = e.targetedAppointmentData.startDate; var evnt_name = e.targetedAppointmentData.function_venue; //console.log('redirect to editAppointment/' + text); //console.log(date+' '+evnt_name); new_url = '?time='+date+'&event='+evnt_name; window.location.href = window.location.href+new_url; e.cancel = true; }, onAppointmentDblClick: function(e) { //var text = e.targetedAppointmentData.text; var date = e.targetedAppointmentData.startDate; var evnt_name = e.targetedAppointmentData.function_venue; //console.log('redirect to editAppointment/' + text); //console.log(date+' '+evnt_name); new_url = '?time='+date+'&event='+evnt_name; window.location.href = window.location.href+new_url; e.cancel = true; }, onCellClick: function(e) { if (e.event.isDefaultPrevented()) { return true } // e.event.preventDefault() // get_cell_date = e.cellData.startDate.toISOString(); // new_url = '?time='+get_cell_date+'&event=All'; // window.location.href = window.location.href+new_url; e.cancel = true; }, onAppointmentTooltipShowing : function(e) { get_cell_date = e.appointments['0'].appointmentData.startDate; new_url = '?time='+get_cell_date+'&event=All'; window.location.href = window.location.href+new_url; e.cancel = true; }, }).dxScheduler('instance'); // var selectbox = $("#selectbox").dxSelectBox({ // dataSource: function_venue, // displayExpr: "text", // onValueChanged: function(e){ // console.log(function_venue.find(ele=>ele.id == e.value.id)); // scheduler.option("resources[0].dataSource", [function_venue.find(ele=>ele.id == e.value.id)]) // } // }).dxSelectBox("instance"); $('#resources-selector').dxRadioGroup({ items: resourcesList, value: resourcesList[0], layout: 'horizontal', onValueChanged(e) { const resources = scheduler.option('resources'); for (let i = 0; i < resources.length; i += 1) { resources[i].useColorAsDefault = resources[i].label === e.value; } scheduler.repaint(); }, }); }); const resourcesList = ['Status', 'Event Venue']; const data = [ {% for row in hubdb_table_rows(5570711, '') %} { text: " {{ row.name }}", startDate: new Date('{{ row.start_date|datetimeformat('%Y-%m-%e') }}').toISOString(), endDate: new Date("{{ row.end_date|datetimeformat('%Y-%m-%e') }}").toISOString(), function_venue: "{% for location_ids in row.event_location %}{{ location_ids.hs_id }}{% endfor %}", max_capacity: {% if row.max_capacity %} {{ row.max_capacity }} {% else %} 0 {% endif %}, min_capacity: {% if row.min_capacity %} {{ row.min_capacity }} {% else %} 0 {% endif %}, allocation_quantity: {% if row.allocation_quantity %} {{ row.allocation_quantity }} {% else %} 0 {% endif %}, allocation_used: {% if row.allocation_used %} {{ row.allocation_used }} {% else %} 0 {% endif %}, allocation_remaining: {% if row.allocation_remaining %} {{ row.allocation_remaining }} {% else %} 0 {% endif %}, event_statusId : ({{ row.max_capacity }}>100) ? 1 : 3, function_name : '{{ row.function_name }}', disabled: true , filter_date : new Date('{{ row.start_date|datetimeformat('%Y-%m-%e') }}').toISOString().split('T')[0], }, {% endfor %} ]; const function_venue = [ {% for row2 in hubdb_table_rows(5569414, '') %} { text: '{{ row2.name }}', id: '{{ row2.hs_id }}', color: '{{ row2.color }}', }, {% endfor %} ]; const event_status = [ { text: 'Available', id: 1, color: '#00FF00', }, { text: 'On Hold', id: 2, color: '#FFFF00', }, { text: 'Sold', id: 3, color: '#FF0000', }, ]; //Tree Data let searchParams = new URLSearchParams(window.location.search) if(searchParams.has('time') && searchParams.has('event')){ //let time = searchParams.get('time'); let time = new Date(searchParams.get('time')); time = time.toISOString().substring(0, 10); console.log(time); let event = searchParams.get('event'); var newData = data.filter(function (el){ return el.filter_date == time; } ); $(() => { // const treeListData = $.map(tasks, (task) => { // task.Task_Assigned_Employee = null; // $.each(employees, (_, employee) => { // if (employee.ID === task.Task_Assigned_Employee_ID) { // task.Task_Assigned_Employee = employee; // } // }); // return task; // }); $('#tree-data').dxTreeList({ dataSource: newData, keyExpr: 'function_venue', // parentIdExpr: 'event_statusId', columnAutoWidth: true, wordWrapEnabled: true, showBorders: true, expandedRowKeys: [1, 2], selectedRowKeys: [1, 29, 42], searchPanel: { visible: true, width: 250, }, headerFilter: { visible: true, }, selection: { mode: 'multiple', }, // columnChooser: { // enabled: true, // }, columns: [ // { // dataField: 'Task_Subject', // width: 300, // }, { // dataField: 'Task_Assigned_Employee_ID', // caption: 'Assigned', // allowSorting: false, // minWidth: 200, // cellTemplate(container, options) { // const currentEmployee = options.data.Task_Assigned_Employee; // if (currentEmployee) { // container // .append($('<div>', { class: 'img', style: `background-image:url(${currentEmployee.Picture});` })) // .append('\n') // .append($('<span>', { class: 'name', text: currentEmployee.Name })); // } // }, // lookup: { // dataSource: function_venue, // valueExpr: 'id', // displayExpr: 'text', // }, // }, { dataField: 'function_venue', caption: 'Event Location', lookup: { dataSource: function_venue, valueExpr: 'id', displayExpr: 'text', }, //visible: false, },{ dataField: 'text', caption: 'Venue', dataType: 'text', }, { dataField: 'function_name', caption: 'Function Name', dataType: 'text', }, /* { dataField: 'event_statusId', caption: 'Status', lookup: { dataSource: event_status, valueExpr: 'id', displayExpr: 'text', }, //visible: false, }, { dataField: 'startDate', caption: 'Start Date', dataType: 'datetime', }, { dataField: 'endDate', caption: 'Due Date', dataType: 'datetime', },*/ { dataField: 'max_capacity', caption: 'Maximum Capacity', dataType: 'text', }, { dataField: 'min_capacity', caption: 'Minimum Capacity', dataType: 'text', }, { dataField: 'allocation_quantity', caption: 'Allocation Quantity', dataType: 'text', }, { dataField: 'allocation_used', caption: 'Allocation Used', dataType: 'text', }, { dataField: 'allocation_remaining', caption: 'Allocation Remaining', dataType: 'text', } ], }); }); $('#tree-data, .back').show(); $('#month-data').hide(); }else{ $('#tree-data, .back').hide(); $('#month-data').show(); } </script>
admin Asked question December 14, 2022