Work on refactoring measurements out of Lesion Tracker package

- Removed AssociatedStudies Collection
- Measurement API is generated from configuration files
- Data exchange methods are defined in configuration
This commit is contained in:
Erik Ziegler committed 2016-11-15 08:21:46 +01:00
1 parent c511edd419
commit ab4d4c9008
537 files changed
+5122 -3545

No files matched your search

@@ -0,0 +1,24 @@
<template name="roundedButtonGroup">
<div class="{{class}} roundedButtonGroup clearfix center-table">
{{#each item in this.options}}
<a class="roundedButtonWrapper noselect {{#if eq getValue item.value}}active{{/if}}" data-value="{{item.value}}">
<div class="roundedButton">
{{#if item.svgLink}}
<svg style="width: {{item.svgWidth}}px; height: {{item.svgHeight}}px">
<use xlink:href="{{item.svgLink}}"></use>
</svg>
{{/if}}
{{#if item.text}}
<span>{{item.text}}</span>
{{/if}}
{{#if item.iconClasses}}
<i class="{{item.iconClasses}}"></i>
{{/if}}
</div>
{{#if item.bottomLabel}}
<div class="bottomLabel">{{item.bottomLabel}}</div>
{{/if}}
</a>
{{/each}}
</div>
</template>
@@ -0,0 +1,40 @@
Template.roundedButtonGroup.onCreated(() => {
const instance = Template.instance();
const reactiveValue = instance.data.value;
// Get the value for ReactiveVar or ReactiveDict objects
instance.getValue = () => {
return reactiveValue.get(instance.data.key);
};
// Set the value for ReactiveVar or ReactiveDict objects
instance.setValue = value => {
const args = [value];
if (reactiveValue instanceof ReactiveDict) {
args.unshift(instance.data.key);
}
reactiveValue.set(...args);
};
// Initialize the value with the first option if there's no value set and options are not toggleable
if (!instance.getValue() && !instance.data.toggleable) {
instance.setValue(instance.data.options[0].value);
}
});
Template.roundedButtonGroup.events({
'click [data-value]'(event, instance) {
event.preventDefault();
const $target = $(event.currentTarget);
const nullValue = $target.hasClass('active') && instance.data.toggleable;
const value = nullValue ? null : $target.attr('data-value');
instance.setValue(value);
}
});
Template.roundedButtonGroup.helpers({
getValue() {
return Template.instance().getValue();
}
});
@@ -0,0 +1,73 @@
@import "{design}/app"
$height = 25px
$textColorButtonActive = #2D2D2D
.roundedButtonGroup
.roundedButtonWrapper
cursor: pointer
display: inline-block
float: left
margin-left: -1px
text-decoration: none
text-align: center
.roundedButton
align-items: center
theme('background-color', '$uiGrayDark')
theme('border', '2px solid $uiBorderColorDark')
theme('color', '$textSecondaryColor')
display: flex
font-size: 11px
font-weight: 500
justify-content: center
height: $height
line-height: $height
padding: 0 22px
text-transform: uppercase
transition: transition($sidebarTransition)
svg
theme('fill', '$defaultColor')
theme('stroke', '$defaultColor')
svg
span
margin: 0 2px
i
line-height: 15px
font-size: 15px
.bottomLabel
theme('color', '$textSecondaryColor')
font-size: 12px
font-weight: 500
line-height: 12px
margin-top: 8px
&:first-child
margin-left: 0
.roundedButton
border-bottom-left-radius: $height
border-top-left-radius: $height
&:last-child .roundedButton
border-bottom-right-radius: $height
border-top-right-radius: $height
&:hover .roundedButton
theme('color', '$uiGrayDark')
theme('background-color', '$boxBackgroundColor')
&.active .roundedButton
theme('background-color', '$activeColor')
theme('border-color', '$uiBorderColorActive')
color: $textColorButtonActive
&:hover .roundedButton
&.active .roundedButton
svg
theme('fill', '$uiGrayDark')
theme('stroke', '$uiGrayDark')