Skip to content

Commit

Permalink
Merge pull request #37 from CometVisu/textify_widgets
Browse files Browse the repository at this point in the history
Textify widgets
  • Loading branch information
ChristianMayer committed Feb 20, 2015
2 parents a688d4d + d0c40d2 commit 2c47c1c
Show file tree
Hide file tree
Showing 11 changed files with 186 additions and 124 deletions.
2 changes: 1 addition & 1 deletion src/cometvisu.appcache
@@ -1,5 +1,5 @@
CACHE MANIFEST
# Version SVN:20150218-2207
# Version SVN:20150218-2236

CACHE:
index.html
Expand Down
1 change: 1 addition & 0 deletions src/index.html
Expand Up @@ -66,6 +66,7 @@
.loading { display: none; }
</style>
<style type="text/css" id="pageSize"></style>
<style type="text/css" id="rowspanStyle"></style>
</head>
<body>
<div id="top" class="loading">
Expand Down
69 changes: 42 additions & 27 deletions src/lib/templateengine.js
Expand Up @@ -778,31 +778,35 @@ function TemplateEngine( undefined ) {
thisTemplateEngine.applyColumnWidths();
}
}
};

this.rowspanClass = function(rowspan) {
var className = 'rowspan rowspan' + rowspan;
var styleId = className.replace(" ", "_") + 'Style';
if (!$('#' + styleId).get(0)) {
var dummyDiv = $(
'<div class="clearfix" id="calcrowspan"><div id="containerDiv" class="widget_container"><div class="widget clearfix text" id="innerDiv" /></div></div>')
.appendTo(document.body).show();

var singleHeight = $('#containerDiv').outerHeight(false);
var singleHeightMargin = $('#containerDiv').outerHeight(true);

$('#calcrowspan').remove();

// append css style
$('head').append(
'<style id="' + styleId + '">.rowspan.rowspan' + rowspan

var
dummyDiv = $(
'<div class="clearfix" id="calcrowspan"><div id="containerDiv" class="widget_container"><div class="widget clearfix text" id="innerDiv" /></div></div>')
.appendTo(document.body).show(),
singleHeight = $('#containerDiv').outerHeight(false),
singleHeightMargin = $('#containerDiv').outerHeight(true),
styles = '';

for( rowspan in usedRowspans )
{
styles += '.rowspan.rowspan' + rowspan
+ ' { height: '
+ ((rowspan - 1) * singleHeightMargin + singleHeight)
+ 'px;} </style>').data(className, 1);
+ "px;}\n";
}
return className;
};

$('#calcrowspan').remove();

// set css style
$('#rowspanStyle').text( styles );
};

var usedRowspans = {};
this.rowspanClass = function(rowspan) {
usedRowspans[ rowspan ] = true;
return 'rowspan rowspan' + rowspan;
};

var pluginsToLoadCount = 0;
var xml;
this.parseXML = function(loaded_xml) {
Expand Down Expand Up @@ -1094,6 +1098,11 @@ function TemplateEngine( undefined ) {
});
};

/**
* Array with all functions that need to be called once the DOM tree was set
* up.
*/
this.postDOMSetupFns = [];

function setup_page() {
// and now setup the pages
Expand All @@ -1115,6 +1124,11 @@ function TemplateEngine( undefined ) {
thisTemplateEngine.create_pages(page, 'id');
profileCV( 'setup_page created pages' );

thisTemplateEngine.postDOMSetupFns.forEach( function( thisFn ){
thisFn();
});
profileCV( 'setup_page finished postDOMSetupFns' );

var startpage = 'id_';
if ($.getUrlVar('startpage')) {
startpage = $.getUrlVar('startpage');
Expand Down Expand Up @@ -1410,16 +1424,17 @@ function TemplateEngine( undefined ) {
}
};

this.setupRefreshAction = function() {
var refresh = $(this).data('refresh');
this.setupRefreshAction = function( path, refresh ) {
if (refresh && refresh > 0) {
var target = $('img', $(this))[0] || $('iframe', $(this))[0];
var src = target.src;
var
element = $( '#' + path ),
target = $('img', element)[0] || $('iframe', element)[0],
src = target.src;
if (src.indexOf('?') < 0)
src += '?';
$(this).data('interval', setInterval(function() {
thisTemplateEngine.widgetDataGet( path ).internal = setInterval(function() {
thisTemplateEngine.refreshAction(target, src);
}, refresh));
}, refresh);
}
};

Expand Down
27 changes: 8 additions & 19 deletions src/structure/pure/group.js
Expand Up @@ -33,37 +33,26 @@ design.basicdesign.addCreator('group', {
if( $e.attr('align') ) hstyle += 'text-align:' + $e.attr('align') + ';';
if( hstyle != '' ) hstyle = 'style="' + hstyle + '"';
var childs = $e.children().not('layout');
var container = $( '<div class="clearfix"/>' );
if( $e.attr('name') ) container.append( '<h2 ' + hstyle + '>' + $e.attr('name') + '</h2>' );
var container = '<div class="clearfix">';
if( $e.attr('name') ) container += '<h2 ' + hstyle + '>' + $e.attr('name') + '</h2>';

var collector = '';
$( childs ).each( function(i){
var subelement = templateEngine.create_pages( childs[i], path + '_' + i, flavour );
if( 'string' === typeof subelement )
collector += subelement;
container += subelement;
else
{
if( '' !== collector )
container.append( collector );
container.append( subelement );
collector = '';
}
container += subelement[0].outerHTML;
} );
if( '' !== collector )
container.append( collector );
container += '</div>';

var ret_val = $('<div class="' + classes + '" />');
if ( $e.attr('target') ) {
var target = $e.attr('target') ? $e.attr('target') : '0';
ret_val.addClass('clickable');
var target = $e.attr('target') ;
classes += ' clickable';
var data = templateEngine.widgetDataInsert( path, {
'target' : target
} );
templateEngine.setWidgetStyling(ret_val, target, data.styling );
}

ret_val.append( container );
return ret_val;
return '<div class="' + classes + '">' + container + '</div>';
},
action: function( path, actor, isCaneled ) {
var data = templateEngine.widgetDataGet( path );
Expand Down
14 changes: 7 additions & 7 deletions src/structure/pure/image.js
Expand Up @@ -23,13 +23,13 @@ design.basicdesign.addCreator('image', {
var $e = $(element);

// create the main structure
var ret_val = $( basicdesign.createDefaultWidget('image', $e, path, flavour, type) + '</div>' );
var ret_val = basicdesign.createDefaultWidget('image', $e, path, flavour, type);
// and fill in widget specific data
var data = templateEngine.widgetDataInsert( path, {
'width' : $e.attr('width'),
'height' : $e.attr('height'),
'src' : $e.attr('src'),
'refresh': $e.attr('refresh')
'refresh': $e.attr('refresh') ? $e.attr('refresh') * 1000 : 0
});

// create the actor
Expand All @@ -43,15 +43,15 @@ design.basicdesign.addCreator('image', {
if (data.height) {
imgStyle += 'height:' + data.height + ';';
}
var $actor = $('<div class="actor"><img src="' + data.src + '" style="' + imgStyle + '" /></div>');
ret_val.append($actor);
var actor = '<div class="actor"><img src="' + data.src + '" style="' + imgStyle + '" /></div>';

if (data.refresh) {
data['refresh'] = data.refresh * 1000;
$actor.each(templateEngine.setupRefreshAction); // abuse "each" to call in context...
templateEngine.postDOMSetupFns.push( function(){
templateEngine.setupRefreshAction( path, data.refresh );
});
}

return ret_val;
return ret_val + actor + '</div>';
}
});

Expand Down
21 changes: 13 additions & 8 deletions src/structure/pure/imagetrigger.js
Expand Up @@ -22,13 +22,13 @@ design.basicdesign.addCreator('imagetrigger', {
create: function( element, path, flavour, type ) {
var
$e = $(element),
classes = basicdesign.setWidgetLayout( $e, path ),
ret_val = $('<div class="widget clearfix image '+(classes?classes:'')+'" />');
ret_val.addClass ('imagetrigger');
classes = basicdesign.setWidgetLayout( $e, path );
classes += ' imagetrigger';
if( $e.attr('flavour') ) flavour = $e.attr('flavour');// sub design choice
if( flavour ) ret_val.addClass( 'flavour_' + flavour );
if( flavour ) classes += ' flavour_' + flavour;
var ret_val = '<div class="widget clearfix image '+(classes?classes:'')+'">';
var value = $e.attr('value') ? $e.attr('value') : 0;
ret_val.append( basicdesign.extractLabel( $e.find('label')[0], flavour ) );
ret_val += basicdesign.extractLabel( $e.find('label')[0], flavour );
var address = basicdesign.makeAddressList($e);
var layout = $e.children('layout')[0];
var style = layout ? 'style="' + basicdesign.extractLayout( layout, type, {width:'100%'} ) + '"' : '';
Expand All @@ -42,16 +42,21 @@ design.basicdesign.addCreator('imagetrigger', {

actor += '</div>';
var refresh = $e.attr('refresh') ? $e.attr('refresh')*1000 : 0;
var $actor = $(actor).each(templateEngine.setupRefreshAction); // abuse "each" to call in context... refresh is broken with select right now
var data = templateEngine.widgetDataInsert( path, {
'address': address,
'refresh': refresh,
'src': $e.attr('src'),
'suffix': $e.attr('suffix'),
'sendValue': $e.attr('sendValue') || ""
} );
ret_val.append( $actor );
return ret_val;

if (data.refresh) {
templateEngine.postDOMSetupFns.push( function(){
templateEngine.setupRefreshAction( path, data.refresh );
});
}

return ret_val + actor + '</div>';
},
update: function( ga, d ) {
var data = templateEngine.widgetDataGetByElement( element );
Expand Down
49 changes: 37 additions & 12 deletions src/structure/pure/navbar.js
Expand Up @@ -16,7 +16,15 @@
*/

define( ['_common'], function( design ) {
var basicdesign = design.basicdesign;
var
basicdesign = design.basicdesign,
isNotSubscribed = true,
navbarTop = '',
navbarLeft = '',
navbarRight = '',
navbarBottom = '',
$navbarLeftSize = $( '#navbarLeft' ).data('size'),
$navbarRightSize = $( '#navbarRight' ).data('size');

design.basicdesign.addCreator('navbar', {
create: function( navbar, path, flavour, type ) {
Expand All @@ -25,41 +33,58 @@ design.basicdesign.addCreator('navbar', {
var id = path.split('_'); id.pop();
var position = $n.attr('position') || 'left';
var scope = $n.attr('scope') || -1;
var container = $( '<div class="navbar clearfix" id="' + id.join('_')+'_'+ position + '_navbar" />' );
if( $n.attr('name') ) container.append( '<h2>' + $n.attr('name') + '</h2>' );
if( $n.attr('flavour') ) flavour = $n.attr('flavour');// sub design choice
var flavourClass = flavour ? ( ' flavour_' + flavour ) : '';
var container = '<div class="navbar clearfix' + flavourClass + '" id="' + id.join('_')+'_'+ position + '_navbar">';
if( $n.attr('name') ) container += '<h2>' + $n.attr('name') + '</h2>';
$( childs ).each( function(i){
container.append( templateEngine.create_pages( childs[i], path + '_' + i, flavour ) );
var subelement = templateEngine.create_pages( childs[i], path + '_' + i, flavour );
if( 'string' === typeof subelement )
container += subelement;
else
container += subelement[0].outerHTML;
} );
container.data('scope',scope);
//$container.data('scope',scope); ???

if( flavour ) container.addClass( 'flavour_' + flavour );
var dynamic = $n.attr('dynamic') == 'true' ? true : false;

var size = $n.attr('width') || 300;
switch( position )
{
case 'top':
$('#navbarTop').append( container );
navbarTop += container;
break;

case 'left':
$('#navbarLeft').append( container );
var thisSize = $('#navbarLeft').data('size') || size; // FIXME - only a temporal solution
navbarLeft += container;
var thisSize = $navbarLeftSize || size; // FIXME - only a temporal solution
if( dynamic ) templateEngine.pagePartsHandler.navbarSetSize( 'left', thisSize );
break;

case 'right':
$('#navbarRight').append( container );
var thisSize = $('#navbarRight').data('size') || size; // FIXME - only a temporal solution
navbarRight += container;
var thisSize = $navbarRightSize || size; // FIXME - only a temporal solution
if( dynamic ) templateEngine.pagePartsHandler.navbarSetSize( 'right', thisSize );
break;

case 'bottom':
$('#navbarBottom').append( container );
navbarBottom += container;
break;
}
templateEngine.pagePartsHandler.navbars[position].dynamic |= dynamic;

if( isNotSubscribed )
{
isNotSubscribed = false;
templateEngine.postDOMSetupFns.push( function(){
if( navbarTop ) $( '#navbarTop' ).append( navbarTop );
if( navbarLeft ) $( '#navbarLeft' ).append( navbarLeft );
if( navbarRight ) $( '#navbarRight' ).append( navbarRight );
if( navbarBottom ) $( '#navbarBottom' ).append( navbarBottom );
});
}

return '';
}
});

Expand Down

0 comments on commit 2c47c1c

Please sign in to comment.