Veiled Threats (case file)
Mon 17 Jan 2005, 11:46 PM
by Ben Langhinrichs
by Mike Midas, Ace Developer
He had a voice like a snake's, low, threatening and venomous, and like a boa constrictor, he'd twist his words into coils you could never quite escape. His complaint, and he had more complaints than a camel has shin splints, was about tables. "Your Midas LSX" he started, spitting the words out like rancid bacon from a discarded BLT, "leaves something to be desired", with the strong implication that he desired some other product altogether.
My patience with his complaints was wearing thinner than the string bikinis on St. Croix, but my wallet had that echoing quality which left me willing to listen to a bit more. "Cut to the chase", I told him. "What are you trying to do?"
He hissed with irritation, but when you itch badly enough, even sandpaper looks appealing. I waited while he swallowed his bile, hoping he would choke on it, but he went on. "We need a table to show room scheduling information, we need it broken down to fifteen minutes segments and it needs to cover the whole day. We need this available for up to thirty rooms, and we need to merge cells so that any meeting can start and end whenever we want."
What I needed was a cigarette and a dame to light it for me, but he wasn't asking. "So, what's the problem? Midas will create the table and merge the cells."
"It's too damn slow", he snorted, and the way he said it you knew he enjoyed every word, the way a kid enjoys picking at a scab. "Even before you start merging the cells, it takes five minutes to open the document. After you merge a few cells, you can't open it at all." He threw down a picture of what he wanted like he wanted to get rid of it in a hurry, and I could see why.
I looked at the picture, considered his claims, and had to admit they made sense. It sometimes felt like Lotus Notes rendered tables the way Monet rendered landscapes, one dot at a time, and the number of rows and columns required for his application boggled a mind easily boggled by too many late nights and too much cheap booze.
"Besides, the cells don't stay the right size when you add a meeting", he continued, and if there were an Academy Award for gloating, he would have had Joan Rivers and the red carpet all to himself. He was enjoying seeing me squirm, and I hated giving him the satisfaction.
"What version of Notes are you using?", I asked, grasping at straws like a pack of greedy kids at a greasy burger joint. I relaxed a bit when he said that all the clients were on ND6.0.3. It wasn't quite Happy Hour, but it sure wasn't last call either. I had an idea, inspired by a hazy memory of a girl named Salomé with a predilection for shedding her clothes.
"Layers", I said tentatively, then with more assurance than I really felt, but enough to wipe the smirk from his herpetological face, "Layers!"
"Look, Mike, I'm not interested in ogres or donkeys, if that's what you are on about...", he started, but I was on a roll and wasn't having my dice taken away from me now. I explained that Notes 6 supported layers, and that you could use Midas to build the layers and then place additional layers on top for the scheduled events.
"Layers on layers?" he asked, and you could tell he thought I'd gone round the bend and wound up wearing orange pajamas at the funny farm, but I told him to shove off and come back in the morning, and after griping a bit about time being money, he left.
It wasn't quite as easy as I'd thought at first, and it took as many false starts as a high school math nerd with a reluctant cheerleader, but I finally put something together that looked like it would do the trick.
The meetings floated on top of the schedule, and if they had expanded past their allotted space the way a man's gut expands after thirty, they just took a bit of much deserved extra room, and no quarrels about the sheets either. The columns were more narrow than a table cell could be in Notes, and all in all, it seemed a good job. Adding a new meeting was as simple as:
layer_id = 'M6'
Call rtLayer.AppendLayer(top, left, height, width, 1, |LayerHTMLID='|+layer_id+|' BackgroundColor='Red' Text='Budget meeting' TextFont='8pt White Verdana'|, "Justify=Center")
"Of course I need to make those meeting titles hotspots to go to the meeting document.", the sly and slippery one added after seeing what I had done, hoping to throw a curve ball like a pitcher who doesn't recognize the Bambino.
"No problem.", I answered, and with barely a smirk at that. "Each layer was added with a layer_id, so I'll just throw in a little search for the layer, and add either a URL link or a link hotspot instead of the original text:"
Set sublayer = rtitem.FindNamedChunk(True, "Layer", layer_id, "Exact")
If Not (sublayer Is Nothing) Then
Call sublayer.ZoomIn("Text 1")
If Left(url, 4) = "http" Then
Call sublayer.AppendLink(linktext, url)
Call sublayer.AppendLink(linktext, repid, viewid, url)
"You can even add hide-when formulas on the layers, and action hotspots so you can make them appear and disappear at will.", I added as if it were the simplest thing in the world. Only my priest needed to know it really was that easy with Midas.
He was defeated, and he knew it. He slunk out of there like a new puppy after it gets into the diaper pail and spreads dirty nappies all over the baby's room and then gets caught. I can't say I minded, but it still wasn't as good as a stiff drink. I made a note, written because the mental ones tend to marinate poorly, to add layers to the Lotusphere sessions database, then took off to the Rusty Spigot to see if Salomé could be convinced to shed a few layers of her own.
Copyright © 2005 Genii Software Ltd.