Skip to content

Instantly share code, notes, and snippets.

@ebbnormal
Created December 13, 2015 22:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ebbnormal/81841bcc8cf32ac54234 to your computer and use it in GitHub Desktop.
Save ebbnormal/81841bcc8cf32ac54234 to your computer and use it in GitHub Desktop.
function ConfirmationSheet(confPrinterRef){
var GO = go.GraphObject.make;
var ConfirmationPrinterRef = confPrinterRef;
var confSheetDiagramRef;
var barCode_txt;
var barCodeDup_txt;
var eventTitle_txt;
var eventTitleDup_txt;
var eventDate_txt;
var MyEventID_txt;
var PrintReceipt;
var venueName_txt;
var host_txt;
var address_txt;
var price_txt;
var section_txt;
var rowTable_txt;
var purchaseTime_txt;
var ticketCount_txt;
var OrganizerNote1_label;
var OrganizerNote2_label;
var conditionHeader_txt;
var conditionContent_txt;
var IsLast;
var imsCR_txt;
var separator_mc;
var PassedIntime_str;
var SavedTicketInfo_str = "";
var DivForDiagram= null;
var NUM_ITEMS_ON_RES_ARRAY = 31;
var PrinterWindowRef = null;
var ConfInfo;
var indexIntoResArray = 0;
var ticketCount = 0;
var IsBoxOffice;
var EventID;
var IsGeneralAdmission;
var MAX_STRING_LEN = 120;
var MAX_ORG_NOTE_LINE_LEN = 135;
var IMS_CR_BOX_OFFICE_LOCATION = 235;
var TicketPrintLayout;
var Reservation_array;
var PrintAllFlag = false;
var NumConfirmations = null;
var LogTicketPrintObj = null;
var PrintPrice = null;
this.initConfirmationSheet = function initConfirmationSheet(divForDiagram){
setUpGUI();
MyEventID_txt= "";
var Reservation_array = findValue(ConfInfo, "Reservation_array");
displayHostName(Reservation_array[indexIntoResArray+19]);
displayBarCode(Reservation_array[indexIntoResArray+9]);
displayVenueInfo(Reservation_array[indexIntoResArray+20]);
EventID = Reservation_array[indexIntoResArray];
MyEventID_txt= "EID " + String(EventID);
address_txt = Reservation_array[indexIntoResArray+21] + " " +
Reservation_array[indexIntoResArray+22] + ", " +
Reservation_array[indexIntoResArray+23] + " " +
Reservation_array[indexIntoResArray+24];
IsGeneralAdmission = Number(Reservation_array[indexIntoResArray+29]) == 1;
parseSeatInfo(Reservation_array);
var Trans_time = findValue(ConfInfo, "TransTime");
purchaseTime_txt = "Trans: " + Trans_time;
ticketCount_txt = ticketCount + " of " + Reservation_array.length/NUM_ITEMS_ON_RES_ARRAY;
createNodesForEachStyleEntry();
}
this.setInfo = function setInfo(confInfo, isBoxOffice, passedInTime_str, ticketPrintLayout, isLast, printPrice, printReceipt) {
ConfInfo = confInfo;
PrintReceipt = printReceipt;
IsBoxOffice = isBoxOffice;
PassedIntime_str = passedInTime_str;
TicketPrintLayout = ticketPrintLayout;
Reservation_array = findValue(ConfInfo, "Reservation_array");
var divRef = '#SWFPrintArea';
DivForDiagram = divRef;
IsLast = isLast;
PrintPrice = printPrice;
}
this.setReservationIndex = function setReservationIndex(index, count){
ticketCount = count;
indexIntoResArray = index;
}
this.printAllConfirmations = function printAllConfirmations(parentDiv, numberConfirmations, logTicketPrintObj){
NumConfirmations = numberConfirmations;
this.setReservationIndex(0, 1);
PrintAllFlag = true;
this.initConfirmationSheet(parentDiv);
}
function printIfLast(){
if (IsLast){
window.opener.TicketPrintingRef.TixInteractionPanel.hide();
window.print();
var OpeningWindowRef = window.opener;
OpeningWindowRef.TicketPrintingRef.closePrintWindow();
}
}
function setSectionText() {
var region_str = Reservation_array[indexIntoResArray + 12];
var section_str = Reservation_array[indexIntoResArray + 7];
var price_str = " $" + Reservation_array[indexIntoResArray + 8];
if (PrintPrice != "1"){
price_str = "";
}
section_txt = region_str + ", " + section_str + price_str;
}
function displayEventTime(){
if(PassedIntime_str != ""){
eventDate_txt = PassedIntime_str;
return;
}
eventDate_txt = Reservation_array[indexIntoResArray + 17];
}
function displayTitle(title_str) {
var title_array= title_str.split("|", 2);
var eventMainTitle = title_array[0];
var eventSubTitle = "";
if(title_array.length > 1) {
eventSubTitle = title_array[1];
}
if(eventMainTitle.length > MAX_STRING_LEN) {
eventMainTitle = eventMainTitle.substring(0, MAX_STRING_LEN) + "...";
}
if(eventSubTitle.length > MAX_STRING_LEN) {
eventSubTitle = eventSubTitle.substring(0, MAX_STRING_LEN) + "...";
}
eventTitleDup_txt = eventDate_txt + " \n" + eventMainTitle;
if(eventSubTitle != "") {
eventMainTitle = eventMainTitle + " \n" + eventSubTitle;
}
eventTitle_txt = eventMainTitle;
}
function parseSeatInfo(res_array) {
displayEventTime();
displayTitle(res_array[indexIntoResArray + 16]);
var table_str = res_array[indexIntoResArray + 4];
var row_str = res_array[indexIntoResArray + 5];
var seat_str = res_array[indexIntoResArray + 6];
var ticketType_str = res_array[indexIntoResArray + 9];
var promoCode_str = res_array[indexIntoResArray + 10];
var transCategory = Number(ConfInfo.TransType);
if(ticketType_str == "FullPrice") {
ticketType_str = "";
}
if(transCategory == 5) {
promoCode_str = "Complimentary";
}
setSectionText();
if(ticketType_str != promoCode_str && promoCode_str != "") {
if(ticketType_str != "") {
price_txt = ticketType_str + " " + promoCode_str;
}
else {
price_txt = promoCode_str;
}
}
else {
price_txt = ticketType_str;
}
rowTable_txt = "";
if(table_str != "") {
rowTable_txt = "Table: " + table_str;
}
else if(row_str != "") {
rowTable_txt = "Row: " + row_str;
}
if(rowTable_txt.length > 0) {
rowTable_txt += " ";
}
if(!IsGeneralAdmission){
if(table_str == "") {
rowTable_txt += "Seat: " + seat_str;
}
}
else {
rowTable_txt = "General Admission";
}
}
function displayHostName(host_str){
if(host_str.length > MAX_STRING_LEN) {
host_str = host_str.substring(0, MAX_STRING_LEN) + "...";
}
if(host_str.length > 0) {
var presentKeyWord_str= "Proudly Presents:";
var hostSearc_str = host_str.toLowerCase();
if(hostSearc_str.indexOf("&") > 0 || hostSearc_str.indexOf("and") > 0) {
presentKeyWord_str = "Proudly Present:";
}
host_txt= host_str + " \n" + presentKeyWord_str;
}
else {
host_txt = "";
}
}
function displayBarCode(ticketType_str){
if(ticketType_str == "AllAccess") {
barCode_txt = "*A" + Number(Reservation_array[indexIntoResArray + 0]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 1]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 2]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 3]) + "*";
barCodeDup_txt = "A" + Number(Reservation_array[indexIntoResArray + 0]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 1]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 2]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 3]);
}
else {
barCode_txt = "*" + Number(Reservation_array[indexIntoResArray + 1]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 2]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 3]) + "*";
barCodeDup_txt = Number(Reservation_array[indexIntoResArray + 1]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 2]).toString() + "-" +
Number(Reservation_array[indexIntoResArray + 3]);
}
}
function displayVenueInfo(venName_str){
if(venName_str.length > MAX_STRING_LEN) {
venName_str = venName_str.substring(0, MAX_STRING_LEN) + "...";
}
venueName_txt = venName_str;
}
function createGoJSFontString(fontSize, fontName, fontStyle){
var cssFontWeight = ""
var cssFontStyle= ""
if (fontStyle == "Bold"){
cssFontWeight = "Bold ";
}
if (fontStyle =="Italic"){
cssFontStyle = "Italic ";
}
fontSize = fontSize + "pt ";
var returnString = "";
returnString = cssFontStyle + cssFontWeight + fontSize + fontName;
return returnString;
}
function createNodesForEachStyleEntry(){
var tempNodeArray = new Array();
for (var j =0; j < TicketPrintLayout.length; j+=13){
var textValue = "";
var imageSource = "";
switch(TicketPrintLayout[j]){
case "host_txt":
textValue=host_txt;
break;
case "venueName_txt":
textValue=venueName_txt;
break;
case "barCode_txt":
textValue = barCode_txt;
break;
case "barCodeDup_txt":
textValue = barCodeDup_txt;
break;
case "eventTitle_txt":
textValue = eventTitle_txt;
break;
case "eventDate_txt":
textValue = eventDate_txt;
break;
case "eventTitleDup_txt":
textValue = eventTitleDup_txt;
break;
case "myEventID_txt":
textValue = MyEventID_txt;
break;
case "section_txt":
textValue = section_txt;
break;
case "rowTable_txt":
textValue = rowTable_txt;
break;
case "purchaseTime_txt":
textValue = purchaseTime_txt;
break;
case "ticketCount_txt":
textValue = ticketCount_txt;
break;
case "price_txt":
textValue = price_txt;
break;
case "address_txt":
textValue = address_txt;
break;
default:
}
var fontProperty = createGoJSFontString(TicketPrintLayout[j+ 5],TicketPrintLayout[j+6], TicketPrintLayout[j+ 7]);
var category = null;
if ( TicketPrintLayout[j+11]=="Text"){
category ="text";
}
else{
category = "image";
}
if (category=="image"){
var nextShape = { key:TicketPrintLayout[j],
shapePosition:new go.Point(Number(TicketPrintLayout[j+1]), Number(TicketPrintLayout[j+2])),
width:Number(TicketPrintLayout[j+3]),
height:Number(TicketPrintLayout[j+4]),
rotation:Number(TicketPrintLayout[j+8]),
maxWidth:TicketPrintLayout[j+9],
maxHeight:TicketPrintLayout[j+10],
text: imageSource,
fontType:fontProperty,
bounds: new go.Size(Number(TicketPrintLayout[j+9]), Number(TicketPrintLayout[j+10])),
category:"image"};
}
else{
var textLign = null;
if (TicketPrintLayout[j+12]=="Left"){
textLign = "left"
}
else if (TicketPrintLayout[j+12]=="Right"){
textLign = "right"
}
else{
textLign = "center"
}
if (TicketPrintLayout[j] == "barCode_txt"){
var nextShape = { key:TicketPrintLayout[j],
shapePosition:new go.Point(Number(TicketPrintLayout[j+1]), Number(TicketPrintLayout[j+2])),
width:Number(TicketPrintLayout[j+3]),
height:Number(TicketPrintLayout[j+4]),
rotation:Number(TicketPrintLayout[j+8]),
fontType:fontProperty,
category:"text",
layer:"scan",
textAlign:textLign,
text:textValue};
}
else{
var nextShape = { key:TicketPrintLayout[j],
shapePosition:new go.Point(Number(TicketPrintLayout[j+1]), Number(TicketPrintLayout[j+2])),
width:Number(TicketPrintLayout[j+3]),
height:Number(TicketPrintLayout[j+4]),
textWidth:Number(TicketPrintLayout[j+3]),
textHeight:Number(TicketPrintLayout[j+4]),
rotation:Number(TicketPrintLayout[j+8]),
fontType:fontProperty,
category:"text",
layer:"bg",
textAlign:textLign,
text:textValue};
}
}
tempNodeArray.push(nextShape);
}
var forelayer = confSheetDiagramRef.findLayer("Foreground");
confSheetDiagramRef.addLayerBefore(GO(go.Layer, { name: "bg" }), forelayer);
confSheetDiagramRef.addLayerBefore(GO(go.Layer, { name: "scan" }), forelayer);
confSheetDiagramRef.model.nodeDataArray = tempNodeArray;
}
////////////////////////////////////////////////////////////////////////////
// setUpGUI()
////////////////////////////////////////////////////////////////////////////
function setUpGUI() {
var myDiv = document.getElementById(DivForDiagram);
myDiv.innerHTML = "";
confSheetDiagramRef = GO(go.Diagram, DivForDiagram,
{
initialContentAlignment: go.Spot.Center,
initialAutoScale:go.Diagram.Uniform,
"toolManager.mouseWheelBehavior": go.ToolManager.WheelZoom
});
confSheetDiagramRef.initialContentAlignment = go.Spot.Center;
confSheetDiagramRef.undoManager.isEnabled = true;
confSheetDiagramRef.isReadOnly = true;
var texttemplate = GO(go.Node, "Horizontal",
GO(go.TextBlock,
new go.Binding("text", "text"),
new go.Binding("font", "fontType"),
new go.Binding("textAlign", "textAlign"),
new go.Binding("width", "textWidth"),
new go.Binding("height", "textHeight")
),
new go.Binding("location", "shapePosition"),
new go.Binding("angle", "rotation"),
new go.Binding("width", "width"),
new go.Binding("height", "height"),
new go.Binding("layerName", "layer")
)
var imagetemplate = GO(go.Node, "Horizontal",
GO(go.Picture,
new go.Binding("text", "text"),
new go.Binding("font", "fontType"),
new go.Binding("location", "position"),
new go.Binding("angle", "rotation"),
new go.Binding("width", "width"),
new go.Binding("source", "text"),
new go.Binding("height", "height"),
new go.Binding("maxSize", "bounds")
)
)
var templmap = new go.Map("string", go.Node);
templmap.add("text", texttemplate);
templmap.add("image", imagetemplate);
confSheetDiagramRef.nodeTemplateMap = templmap;
confSheetDiagramRef.addDiagramListener('InitialLayoutCompleted', function(e){
if (PrintAllFlag){
}
generateImages(600,300);
})
}
function generateImages(width, height) {
width = parseInt(width);
height = parseInt(height);
if (isNaN(width)) width = 100;
if (isNaN(height)) height = 100;
// Give a minimum size of 50x50
width = Math.max(width, 50);
height = Math.max(height, 50);
var imgDiv = document.getElementById('myImages');
var db = confSheetDiagramRef.documentBounds.copy();
var boundswidth = db.width;
var boundsheight = db.height;
var imgWidth = width;
var imgHeight = height;
var p = db.position.copy();
for (var i = 0; i < boundsheight; i += imgHeight) {
for (var j = 0; j < boundswidth; j += imgWidth) {
/* img = confSheetDiagramRef.makeImage({
scale: 1,
details: 1,
position: new go.Point(p.x + j, p.y + i),
size: new go.Size(imgWidth, imgHeight)
});*/
img = confSheetDiagramRef.makeSvg({
scale: 1,
details: 1,
position: new go.Point(p.x + j, p.y + i),
size: new go.Size(imgWidth, imgHeight)
});
img.className = 'images';
imgDiv.appendChild(img);
imgDiv.appendChild(document.createElement('br'));
}
}
//disassociate the DIV with the diagram
//confSheetDiagramRef.div = null;
printIfLast();
//alert(PrintAllFlag);
if (PrintAllFlag){
if ((indexIntoResArray /NUM_ITEMS_ON_RES_ARRAY) == (NumConfirmations - 1)){
// Organizer SErvice logTicketPrint()
/* alert("eventID: " + LogTicketPrintObj["eventID"]);
alert("dataSource: " + LogTicketPrintObj["dataSource"]);
alert("transID: " + LogTicketPrintObj["transactionID"]);
alert("Reservation ID: " + LogTicketPrintObj["reservationID"]);
alert("subIDID: " + LogTicketPrintObj["resSubID"]);
alert("orgUserID: " + LogTicketPrintObj["orgUserID"]);
DWREngine._execute("../../../../Server/IMSOrganizerService.cfc"+IMSCFSessionToken, null, 'logTicketPrint',
LogTicketPrintObj["eventID"],
LogTicketPrintObj["dataSource"],
LogTicketPrintObj["transactionID"],
LogTicketPrintObj["reservationID"],
LogTicketPrintObj["resSubID"],
LogTicketPrintObj["orgUserID"],
logTicketComplete); */
if (PrintReceipt=="1"){
alert("in Print REceipt Being True");
nextConf = new TicketReceiptSheet(this);
confSheetDiagramRef.div =null;
nextConf.setInfo(ConfInfo, true, false, EventID, true, '#SWFPrintArea');
nextConf.initTicketReceiptSheet();
}
else{
IsLast=true;
printIfLast();
}
}
else{
var divRef = '#SWFPrintArea';
DivForDiagram = divRef;
indexIntoResArray += 1*NUM_ITEMS_ON_RES_ARRAY;
confSheetDiagramRef.div =null;
setUpGUI();
MyEventID_txt= "";
var Reservation_array = findValue(ConfInfo, "Reservation_array");
console.log(Reservation_array);
displayHostName(Reservation_array[indexIntoResArray+19]);
displayBarCode(Reservation_array[indexIntoResArray+9]); //Pass the ticket type
//displayPurchaseName(ConfInfo.BLName + "," + ConfInfo.BFName);
displayVenueInfo(Reservation_array[indexIntoResArray+20]);
EventID = Reservation_array[indexIntoResArray];
MyEventID_txt= "EID " + String(EventID);
address_txt = Reservation_array[indexIntoResArray+21] + " " +
Reservation_array[indexIntoResArray+22] + ", " +
Reservation_array[indexIntoResArray+23] + " " +
Reservation_array[indexIntoResArray+24];
IsGeneralAdmission = Number(Reservation_array[indexIntoResArray+29]) == 1;
parseSeatInfo(Reservation_array);
var Trans_time = findValue(ConfInfo, "TransTime");
purchaseTime_txt = "Trans: " + Trans_time;
ticketCount += 1;
ticketCount_txt = ticketCount + " of " + Reservation_array.length/NUM_ITEMS_ON_RES_ARRAY;
createNodesForEachStyleEntry();
saveTicketInfo();
if(IsBoxOffice) {
// updateLegalNotes();
}
//setUpRestrictions();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment