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(){
}
});
// !!!
var hourGrid = Ext.create('Ext.grid.Panel', {
store: hourStore,
layout: 'fit',
region: 'center',
plugins: [rowEditing],
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',
flex: 1,
dataIndex: 'task_id',
dataIndex: 'project_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'
})
});
}
}, {
text: "Date",
xtype: 'datecolumn',
dataIndex: 'day',
renderer: Ext.util.Format.dateRenderer('Y-m-d'),
editor: {
xtype: 'datefield',
allowBlank: true,
startDay: @week_start_day@
}
}, {
text: "Note", flex: 1, dataIndex: 'note',
editor: { allowBlank: true }
}],
editor: {}
}, {
text: "Date",
xtype: 'datecolumn',
dataIndex: 'day',
renderer: Ext.util.Format.dateRenderer('Y-m-d'),
editor: {
xtype: 'datefield',
allowBlank: true,
startDay: @week_start_day@
}
}, {
text: "Hours", flex: 1, dataIndex: 'hours', editor: { xtype: 'numberfield', minValue: 0 }
}, {
text: "Note", flex: 1, dataIndex: 'note',
editor: { allowBlank: true }
}],
columnLines: true,
enableLocking: true,
collapsible: false,
......@@ -309,8 +290,6 @@ function launchTimesheetWeeklyLogging(){
},
/*
* Start logging the time, for entirely manual entries.
*/
......@@ -323,9 +302,12 @@ function launchTimesheetWeeklyLogging(){
buttonDeleteEntry.enable();
rowEditing.cancelEdit();
// !!!
var day = PO.Utilities.dateToPg(new Date());
var hour = new Ext.create('PO.model.timesheet.Hour', {
user_id: @current_user_id@,
project_id: @project_id@,
task_id: @project_id@,
day: day
});
......@@ -390,18 +372,22 @@ function launchTimesheetWeeklyLogging(){
},
onButtonDeleteEntry: function() {
var me = this;
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
if (1 == records.length) { // Exactly one record enabled
var record = records[0];
hourStore.remove(record);
record.destroy();
}
// Stop logging
this.loggingTask = null;
this.loggingStartDate = null;
}
},
/**
......@@ -573,7 +559,7 @@ Ext.onReady(function() {
});
// Load stores that need parameters
taskTreeStore.getProxy().extraParams = { project_id: 0 };
taskTreeStore.getProxy().extraParams = { project_id: @project_id@ };
taskTreeStore.load({
callback: function(records, operation, success) {
var me = this;
......@@ -591,7 +577,7 @@ Ext.onReady(function() {
});
// 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({
callback: function() {
console.log('PO.store.timesheet.HourStore: loaded');
......
......@@ -22,6 +22,9 @@ set left_navbar_html " "
set data_list {}
set project_id 45956
# Create a random ID for the task_editor
set task_editor_rand [expr round(rand() * 100000000.0)]
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