Skip to content

Instantly share code, notes, and snippets.

@web-zen
Created September 18, 2009 16:15
Show Gist options
  • Save web-zen/189143 to your computer and use it in GitHub Desktop.
Save web-zen/189143 to your computer and use it in GitHub Desktop.
YAHOO.util.Event.onDOMReady(function() {
YAHOO.namespace("techdocs"); // create namespace for Insert dialog
// Build Add a New Task pop up dialog
// Instantiate the Add a New Task pop up dialog
YAHOO.techdocs.dlgAddTask = new YAHOO.widget.Dialog("dlgAddTask",
{ fixedcenter : true, visible : false, constraintoviewport : true, close: false,
buttons : [ { text:"Submit", handler:function() {this.submit();}, isDefault:true },
{ text:"Cancel", handler:function() {this.cancel();} } ]
});
// Create the success and failure handlers for dlgAddTask
YAHOO.techdocs.dlgAddTask.callback = {
success: function(o) {
var response = o.responseText;
YAHOO.techdocs.myDataTable.getDataSource().sendRequest('',{ success: YAHOO.techdocs.myDataTable.onDataReturnInitializeTable,scope: YAHOO.techdocs.myDataTable});
},
failure: function(o) {alert("Submission failed: " + o.status);}
};
// Render the Add Task Dialog box to Insert a new task
YAHOO.techdocs.dlgAddTask.render();
YAHOO.util.Dom.addClass('divSysNum', 'hide');
// Show the Add a New Task dialog box
function dlgAddTaskUsers() { YAHOO.techdocs.dlgAddTask.show(); }
// Run dlgAddTaskUsers when btnAddTask is clicked
YAHOO.util.Event.addListener("btnAddTask", "click", dlgAddTaskUsers);
// Create SysNum
function createNewSysNum() { // Create a new System Number
var newSysNum = prompt("Enter the SysNum you would like to add", "")
// validate entry is positive Integer
if (!/\D/.test(newSysNum) && newSysNum!=""){ // if is a number and not empty string
} else {
alert('Only Integers allowed for folder names here, ex: 876');
return // is not a positive integer
}
// Ajax call to create directory
YAHOO.util.Connect.asyncRequest(
'GET',
'taskmanager_db.php?action=createSysNum&newSysNum='+ newSysNum,
{
success: function (o) {
if (o.statusText == 'OK') { //alert("Ok: " + o.statusText );
if (o.responseText){
if(o.responseText.indexOf('exists') != -1){ // check if dir already exists
alert(o.responseText);
return;
}
DocTypeonchange("System", function() { // if directory is created then repopulate select box
var myselect=document.getElementById("sysNum");
for (var i=0; i< myselect.options.length; i++) {
if (myselect[i].value == o.responseText) { // i is your index
myselect.selectedIndex = i;
}
}
document.getElementById('xmldocuri').value = '.\\documents\\system\\'+ o.responseText + '\\';
document.getElementById('xmldocfilename').value = 'D'+ o.responseText + '_';
});
}
} else {
alert(o.statusText );
}
},
failure: function (o) {
alert(o.statusText);
},
scope:this
}
);
}
// set options when Component or System selected
function DocTypeonchange(args, mycallback){
if (args=="Component"){ // set options for Component
YAHOO.util.Dom.addClass('divSysNum', 'hide');
document.getElementById('xmldocuri').value = '.\\documents\\component\\';
document.getElementById('xmldocfilename').value = 'DComp_';
}
if (args=="System"){ // set options for System
YAHOO.util.Dom.addClass('divSysNum', 'showBlock');
// choose an existing sysnum or add a sysnum folder
YAHOO.util.Connect.asyncRequest(
'GET',
'taskmanager_db.php?action=getSysNums',
{
success: function (o) {
if (o.statusText == 'OK') {
// clear entries from select box
var optSysNum = document.getElementById('sysNum');
while (optSysNum.options.length > 0) {
optSysNum.options[0] = null;
}
// get array from php and build select box
var sysNumList = [];
sysNumList = YAHOO.lang.JSON.parse(o.responseText);
function addOption(selectbox, text, value ){
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;
selectbox.options.add(optn);
}
for (x in sysNumList){
addOption(document.getElementById('sysNum'), sysNumList[x], sysNumList[x]);
}
if (mycallback){
mycallback();
}
} else {
alert(o.statusText );
}
},
failure: function (o) {
alert(o.statusText);
},
scope:this
}
);
//document.getElementById('divSysNum')..style.display = 'block';
//document.getElementById('divSysNum').setAttribute('style', 'display:block');
document.getElementById('xmldocuri').value = '.\\documents\\system\\';
document.getElementById('xmldocfilename').value = 'D';
}
}
// Update Datatable Records, User Dropdown, Delete tooltip, Dropdown custom formatter, Datatable, onCellClick
// Update Record Ajax Function
var updateRecord = function(fnCallback, oNewValue) {
if ( oNewValue === this.value ) {
fnCallback(true,oNewValue);
return;
}
var rec = this.getRecord();
var curXMLDocID = rec.getData("XMLDocID");
var curQueryString = "action=update&XMLDocID=" + encodeURIComponent(curXMLDocID) + "&Field=" + encodeURIComponent(column.key) + "&FieldValue=" + encodeURIComponent(oNewValue);
var cObj = YAHOO.util.Connect.asyncRequest(
'GET',
'taskmanager_db.php?' + curQueryString,
{
success: function (o) {
if (o.statusText == 'OK') {
// alert(o.responseText);
fnCallback(true,oNewValue);
} else {
alert(o.statusText );
}
},
failure: function (o) {
alert(o.statusText);
fnCallback(false,this.value);
},
scope:myEditor
}
);
};
// Update Record Ajax Function for Authors, Reviewers, Editors and Publishers
var updateUsers = function(fnCallback, oNewValue) {
// console.log("oNewValue: " + oNewValue);
var rec = this.getRecord();
var curXMLDocID = rec.getData("XMLDocID");
var myColumn = "";
switch(column.key)
{
case "Author":
var myColumn = "AuthorID";
break;
case "Editor":
var myColumn = "EditorID";
break;
case "Reviewer":
var myColumn = "ReviewerID";
break;
case "Publisher":
var myColumn = "PublisherID";
break;
default:
}
var curQueryString = "action=update-users&XMLDocID=" + encodeURIComponent(curXMLDocID) + "&Field=" + encodeURIComponent(myColumn) + "&FieldValue=" + encodeURIComponent(oNewValue);
var cObj = YAHOO.util.Connect.asyncRequest(
'GET',
'taskmanager_db.php?' + curQueryString,
{
success: function (o) {
if (o.statusText == 'OK') {
// alert(o.responseText);
fnCallback(true,oNewValue);
} else {
alert(o.statusText );
}
},
failure: function (o) {
alert(o.statusText);
fnCallback(false,this.value);
},
scope:myEditor
}
);
};
// Build dropdown for Author, Editor, Reviewer, Publisher
var users = [];
users.push({ value: "0", label: "" });
for (var k in jsUsers) {
if (jsUsers.hasOwnProperty(k)) {
users.push({ value: k, label: jsUsers[k] });
}
}
// Delete Record ToolTip
var delToolTip = function(el) {
el.title = 'Delete Record';
};
// User Dropdown Custom Formatter
YAHOO.widget.DataTable.Formatter.lookup = function(elCell, oRecord, oColumn, oData) {
var lookupTable = oColumn.lookupTable || (oColumn.editor instanceof YAHOO.widget.DropdownCellEditor) && oColumn.editor.dropdownOptions;
if (YAHOO.lang.isArray(lookupTable)) {
for (var i = 0; i < lookupTable.length; i++) {
if (lookupTable[i].value === oData) {
elCell.innerHTML = lookupTable[i].label;
return;
}
}
}
elCell.innerHTML = oData || ""; // if oData is null, show a blank.
};
// Define Editors for DataTable
var myEditor = new YAHOO.widget.TextboxCellEditor({disableBtns:false, asyncSubmitter: updateRecord});
var myDDEditor = new YAHOO.widget.DropdownCellEditor({dropdownOptions:users,disableBtns:true, asyncSubmitter: updateUsers});
//Columns actually displayed in myDataTable
YAHOO.techdocs.myColumnDefs = [
{key:"XMLDocID", isPrimaryKey:true, hidden:true},
{key:""},
{key:"Title", label: "Title", sortable: "true", editor: myEditor},
{key:"TaskDesc", label: "TaskDesc", minWidth: "200", maxAutoWidth: "200", editor: myEditor},
{key:"XMLDocURI", label: "XMLDocURI", minWidth: "200", editor: myEditor},
{key:"XMLDocFilename", label: "XMLDocFilename", maxAutoWidth: "200", editor: myEditor},
{key:"Author", label: "Author", minWidth: "100", maxAutoWidth: "150", formatter:'lookup', editor: myDDEditor},
{key:"Editor", label: "Editor", minWidth: "100", maxAutoWidth: "150", formatter:'lookup', editor: myDDEditor},
{key:"Reviewer", label: "Reviewer", minWidth: "100", maxAutoWidth: "150", formatter:'lookup', editor: myDDEditor},
{key:"Publisher", label: "Publisher", minWidth: "100", maxAutoWidth: "150", formatter:'lookup', editor: myDDEditor},
{key:"CreatedOn", label: "CreatedOn", sortable: "true", maxAutoWidth: "100"},
{key:"UpdatedOn", label: "UpdatedOn", maxAutoWidth: "100"},
{key:"Standard", label: "Standard", editor: myEditor},
{key:'delete', label:' ', className:'delete-button', action:'delete', formatter: delToolTip}
];
// Config variables for myDataTable
YAHOO.techdocs.myConfigs = {
paginator : new YAHOO.widget.Paginator({
rowsPerPage : 15,
selectionMode: "single"
}),
scrollable: "true",
sortedBy:{
key: 'Title',
dir: YAHOO.widget.DataTable.CLASS_ASC
}
};
// Populate datatable with ajax call
YAHOO.techdocs.myDataSource = new YAHOO.util.XHRDataSource('taskmanager_db.php?action=select-tasks');
YAHOO.techdocs.myDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON; //responseType expects JSON data
// responseSchema specifies the columns to pass into the datatable object
YAHOO.techdocs.myDataSource.responseSchema =
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment