Commit b005ca28 authored by Project Open's avatar Project Open

- WIP - now with "Task" column, but without editor

parent f8196f61
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.
text: "Project",
flex: 1,
dataIndex: 'project_id',
renderer: hourGridProjectRenderer,
editor: {
xtype: 'treecombo',
store: taskTreeStore,
rootVisible: false,
displayField: 'project_name',
valueField: 'id',
allowBlank: false
}
}, {
{text: 'Task Match', coltype: 'config', flex: 1, dataIndex: 'match_task_id', sortable: true,
renderer: function(task_id) { var taskModel = taskTreeStore.getById(task_id); if (!taskModel) return ""; return taskModel.get('project_name'); },
getEditor: function(record, defaultField) {
var objectType = record.get('object_type'); if ("im_budget_item" !== objectType) return false;
return Ext.create('Ext.grid.CellEditor', {
field: Ext.create('PO.view.field.POComboTree', {
queryMode: 'local', store: taskTreeStore, displayField: 'project_name', valueField: 'id'
})
});
}
},
text: 'Task',
flex: 1,
dataIndex: 'task_id',
renderer: function(task_id) {
var taskModel = taskTreeStore.getById(task_id);
if (!taskModel) return "";
return taskModel.get('project_name');
},
getEditor: function(record, defaultField) {
if (!record) return;
var objectType = record.get('object_type');
if ("im_hour" !== objectType) return false;
return Ext.create('Ext.grid.CellEditor', {
field: Ext.create('PO.view.field.POComboTree', {
queryMode: 'local', store: taskTreeStore, displayField: 'project_name', valueField: 'id'
})
});
}
}, {
renderer: function(task_id) {
var taskModel = taskTreeStore.getById(task_id);
if (!taskModel) return "";
return taskModel.get('project_name');
},
getEditor: function(record, defaultField) {
if (!record) return;
var objectType = record.get('object_type');
if ("im_hour" !== objectType) return false;
return Ext.create('Ext.grid.CellEditor', {
field: Ext.create('PO.view.field.POComboTree', {
queryMode: 'local', store: taskTreeStore, displayField: 'project_name', valueField: 'id'
})
});
}
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.
text: "Project",
flex: 1,
dataIndex: 'project_id',
renderer: hourGridProjectRenderer,
editor: {
xtype: 'treecombo',
store: taskTreeStore,
rootVisible: false,
displayField: 'project_name',
valueField: 'id',
allowBlank: false
}
}, {
text: 'Task',
flex: 1,
dataIndex: 'task_id',
renderer: function(task_id) {
var taskModel = taskTreeStore.getById(task_id);
if (!taskModel) return "";
return taskModel.get('project_name');
},
getEditor: function(record, defaultField) {
if (!record) return;
var objectType = record.get('object_type');
if ("im_hour" !== objectType) return false;
return Ext.create('Ext.grid.CellEditor', {
field: Ext.create('PO.view.field.POComboTree', {
queryMode: 'local', store: taskTreeStore, displayField: 'project_name', valueField: 'id'
})
});
}
}, {
...@@ -64,58 +64,39 @@ function launchTimesheetWeeklyLogging(){ ...@@ -64,58 +64,39 @@ function launchTimesheetWeeklyLogging(){
} }
}); });
// !!!
var hourGrid = Ext.create('Ext.grid.Panel', { var hourGrid = Ext.create('Ext.grid.Panel', {
store: hourStore, store: hourStore,
layout: 'fit', layout: 'fit',
region: 'center', region: 'center',
plugins: [rowEditing], plugins: [rowEditing],
columns: [ columns: [
{ {
text: "Project",
flex: 1,
dataIndex: 'project_id',
renderer: hourGridProjectRenderer,
editor: {
xtype: 'treecombo',
store: taskTreeStore,
rootVisible: false,
displayField: 'project_name',
valueField: 'id',
allowBlank: false
}
}, {
text: 'Task', text: 'Task',
flex: 1, flex: 1,
dataIndex: 'task_id', dataIndex: 'project_id',
renderer: function(task_id) { renderer: function(task_id) {
var taskModel = taskTreeStore.getById(task_id); var taskModel = taskTreeStore.getById(task_id);
if (!taskModel) return ""; if (!taskModel) return "";
return taskModel.get('project_name'); return taskModel.get('project_name');
}, },
getEditor: function(record, defaultField) { editor: {}
if (!record) return; }, {
var objectType = record.get('object_type'); text: "Date",
if ("im_hour" !== objectType) return false; xtype: 'datecolumn',
return Ext.create('Ext.grid.CellEditor', { dataIndex: 'day',
field: Ext.create('PO.view.field.POComboTree', { renderer: Ext.util.Format.dateRenderer('Y-m-d'),
queryMode: 'local', store: taskTreeStore, displayField: 'project_name', valueField: 'id' editor: {
}) xtype: 'datefield',
}); allowBlank: true,
} startDay: @week_start_day@
}, { }
text: "Date", }, {
xtype: 'datecolumn', text: "Hours", flex: 1, dataIndex: 'hours', editor: { xtype: 'numberfield', minValue: 0 }
dataIndex: 'day', }, {
renderer: Ext.util.Format.dateRenderer('Y-m-d'), text: "Note", flex: 1, dataIndex: 'note',
editor: { editor: { allowBlank: true }
xtype: 'datefield', }],
allowBlank: true,
startDay: @week_start_day@
}
}, {
text: "Note", flex: 1, dataIndex: 'note',
editor: { allowBlank: true }
}],
columnLines: true, columnLines: true,
enableLocking: true, enableLocking: true,
collapsible: false, collapsible: false,
...@@ -309,8 +290,6 @@ function launchTimesheetWeeklyLogging(){ ...@@ -309,8 +290,6 @@ function launchTimesheetWeeklyLogging(){
}, },
/* /*
* Start logging the time, for entirely manual entries. * Start logging the time, for entirely manual entries.
*/ */
...@@ -323,9 +302,12 @@ function launchTimesheetWeeklyLogging(){ ...@@ -323,9 +302,12 @@ function launchTimesheetWeeklyLogging(){
buttonDeleteEntry.enable(); buttonDeleteEntry.enable();
rowEditing.cancelEdit(); rowEditing.cancelEdit();
// !!!
var day = PO.Utilities.dateToPg(new Date()); var day = PO.Utilities.dateToPg(new Date());
var hour = new Ext.create('PO.model.timesheet.Hour', { var hour = new Ext.create('PO.model.timesheet.Hour', {
user_id: @current_user_id@, user_id: @current_user_id@,
project_id: @project_id@,
task_id: @project_id@,
day: day day: day
}); });
...@@ -390,18 +372,22 @@ function launchTimesheetWeeklyLogging(){ ...@@ -390,18 +372,22 @@ function launchTimesheetWeeklyLogging(){
}, },
onButtonDeleteEntry: function() { onButtonDeleteEntry: function() {
var me = this;
console.log('GanttButtonController.ButtonDeleteLogging'); console.log('GanttButtonController.ButtonDeleteLogging');
var records = hourGrid.getSelectionModel().getSelection();
var buttonAddEntry = Ext.getCmp('buttonAddEntry');
// var buttonDeleteEntry = Ext.getCmp('buttonDeleteEntry');
buttonAddEntry.enable();
// buttonDeleteEntry.enable();
rowEditing.cancelEdit();
var records = hourGrid.getSelectionModel().getSelection();
// Not logging already - enable the "start" button // Not logging already - enable the "start" button
if (1 == records.length) { // Exactly one record enabled if (1 == records.length) { // Exactly one record enabled
var record = records[0]; var record = records[0];
hourStore.remove(record); hourStore.remove(record);
record.destroy(); record.destroy();
} }
// Stop logging
this.loggingTask = null;
this.loggingStartDate = null;
}, },
/** /**
...@@ -573,7 +559,7 @@ Ext.onReady(function() { ...@@ -573,7 +559,7 @@ Ext.onReady(function() {
}); });
// Load stores that need parameters // Load stores that need parameters
taskTreeStore.getProxy().extraParams = { project_id: 0 }; taskTreeStore.getProxy().extraParams = { project_id: @project_id@ };
taskTreeStore.load({ taskTreeStore.load({
callback: function(records, operation, success) { callback: function(records, operation, success) {
var me = this; var me = this;
...@@ -591,7 +577,7 @@ Ext.onReady(function() { ...@@ -591,7 +577,7 @@ Ext.onReady(function() {
}); });
// Load stores that need parameters // Load stores that need parameters
hourStore.getProxy().extraParams = { project_id: 45956, user_id: @current_user_id@, format: 'json' }; hourStore.getProxy().extraParams = { project_id: @project_id@, user_id: @current_user_id@, format: 'json' };
hourStore.load({ hourStore.load({
callback: function() { callback: function() {
console.log('PO.store.timesheet.HourStore: loaded'); console.log('PO.store.timesheet.HourStore: loaded');
......
...@@ -22,6 +22,9 @@ set left_navbar_html " " ...@@ -22,6 +22,9 @@ set left_navbar_html " "
set data_list {} set data_list {}
set project_id 45956
# Create a random ID for the task_editor # Create a random ID for the task_editor
set task_editor_rand [expr round(rand() * 100000000.0)] set task_editor_rand [expr round(rand() * 100000000.0)]
set task_editor_id "task_editor_$task_editor_rand" set task_editor_id "task_editor_$task_editor_rand"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment