Initial Upload
This commit is contained in:
3
ui/src/templates/actions-button-template.hbs
Normal file
3
ui/src/templates/actions-button-template.hbs
Normal file
@@ -0,0 +1,3 @@
|
||||
<button class="btn btn-success XiboFormButton d-none action-button-add" type="button" data-title="{{trans.button.description}}" href="{{addUrl}}">
|
||||
<i class="fa fa-plus-circle" aria-hidden="true"></i> {{trans.button.name}}
|
||||
</button>
|
||||
93
ui/src/templates/actions-form-action-edit-template.hbs
Normal file
93
ui/src/templates/actions-form-action-edit-template.hbs
Normal file
@@ -0,0 +1,93 @@
|
||||
<form class="action-edit-form">
|
||||
{{> forms/inputs/hidden value=actionType id="actionType"}}
|
||||
{{> forms/inputs/dropdown value=actionTypeHelper title=trans.actionType id="actionTypeHelper" customClass="action-form-input" options=actionTypeOptions optionsTitle="title" optionsValue="name"}}
|
||||
|
||||
{{> forms/inputs/dropdown id="triggerType" value=triggerType title=trans.triggerType customClass="action-edit-form-trigger action-form-input" options=(arr (obj name="touch" title=trans.touch) (obj name="webhook" title=trans.webhook) (obj name="keyPress" title=trans.keyPress)) optionsTitle="title" optionsValue="name" helpText=trans.triggerTypeHelpText }}
|
||||
{{> forms/inputs/text id="triggerCode" value=triggerCode title=trans.triggerCode customClass="action-form-input" helpText=trans.triggerCodeHelpText visibility='{ "field": "triggerType", "type": "eq", "value": "webhook" }' }}
|
||||
{{> forms/inputs/keyCapture id="triggerKey" target="triggerCode" title=trans.triggerKey customClass="action-form-input" helpText=trans.triggerKeyHelpText visibility='{ "field": "triggerType", "type": "eq", "value": "keyPress" }' }}
|
||||
|
||||
{{> forms/inputs/hidden id="source" value=source }}
|
||||
{{> forms/inputs/dropdown id="sourceId" value=sourceId title=trans.triggerTarget customClass='action-edit-form-trigger action-form-input' options=(arr (obj name="" title="")) optionsTitle="title" optionsValue="name" helpText=trans.triggerTargetHelpText }}
|
||||
|
||||
{{!-- Set layout name as screen --}}
|
||||
{{#eq target "layout"}}
|
||||
{{set "targetValue" "screen"}}
|
||||
{{else}}
|
||||
{{set "targetValue" target}}
|
||||
{{/eq}}
|
||||
|
||||
{{> forms/inputs/hidden id="target" value=targetValue customClass="action-form-input" }}
|
||||
{{> forms/inputs/dropdown id="targetId" value=targetId title=trans.target customClass="action-edit-form-target action-form-input" options=(arr (obj name="" title="")) optionsTitle="title" optionsValue="name" helpText=trans.targetHelpText }}
|
||||
|
||||
{{!-- For nav widget only --}}
|
||||
<div class="form-group action-target-widget-component">
|
||||
<label class="control-label action-target-widget-edit-label"><strong>{{trans.widgetToLoad}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{>forms/inputs/add-ons/helpText helpText=trans.widgetToLoadHelpText}}
|
||||
</div>
|
||||
{{> forms/inputs/hidden id="widgetId" value=widgetId customClass="action-target-widget-id" }}
|
||||
{{#if widgetId}}
|
||||
<div class="action-target-widget-edit-container">
|
||||
<div class="action-target-widget-edit-name" title="[{{widgetId}}] {{widgetName}}">
|
||||
{{#if widgetName}}
|
||||
"{{widgetName}}"
|
||||
{{else}}
|
||||
{{widgetId}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="action-target-widget-dropdown-button">
|
||||
<i class="fa fa-ellipsis"></i>
|
||||
|
||||
<div class="action-target-widget-dropdown-container">
|
||||
<div class="action-edit-widget-btn" data-action="delete-widget">
|
||||
{{trans.deleteActionTargetWidget}}
|
||||
</div>
|
||||
<div class="action-edit-widget-btn" data-action="edit-widget">
|
||||
{{trans.editActionTargetWidget}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="action-target-widget-add-container">
|
||||
<div class="action-edit-widget-btn" data-action="add-widget">
|
||||
{{trans.createActionTargetWidget}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{!-- For nav layout only --}}
|
||||
{{> forms/inputs/dropdown id="layoutCode" value=layoutCode title=trans.layoutCode customClass="action-form-input" selectType="pagedSelect"
|
||||
options=(arr (obj name="" title="")) optionsTitle="title" optionsValue="name"
|
||||
visibility='{ "field": "actionTypeHelper", "type": "eq", "value": "navLayout" }'
|
||||
customData=(arr
|
||||
(obj name="width" value="100%")
|
||||
(obj name="search-url" value=layoutCodeSearchURL)
|
||||
(obj name="search-term" value="code")
|
||||
(obj name="id-property" value="code")
|
||||
(obj name="text-property" value="code")
|
||||
(obj name='initial-value' value=layoutCode)
|
||||
(obj name='initial-key' value="code")
|
||||
)
|
||||
helpText=trans.layoutCodeHelpText
|
||||
}}
|
||||
|
||||
<div class="alert alert-danger error-message w-100"></div>
|
||||
|
||||
<div class="action-btn-container">
|
||||
<div class="right-buttons">
|
||||
<div class="action-btn" data-action="close">
|
||||
{{trans.cancelAction}}
|
||||
</div>
|
||||
<div class="action-btn" data-action="save">
|
||||
{{trans.saveAction}}
|
||||
</div>
|
||||
</div>
|
||||
{{#unless newAction}}
|
||||
<div class="action-btn" data-action="delete">
|
||||
{{trans.deleteAction}}
|
||||
</div>
|
||||
{{/unless}}
|
||||
</div>
|
||||
</form>
|
||||
94
ui/src/templates/actions-form-action-view-template.hbs
Normal file
94
ui/src/templates/actions-form-action-view-template.hbs
Normal file
@@ -0,0 +1,94 @@
|
||||
<div class="action-view">
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.actionType}}</div>
|
||||
<div class="action-value">{{lookup trans actionTypeName}}</div>
|
||||
</div>
|
||||
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.triggerType}}</div>
|
||||
<div class="action-value">{{lookup trans triggerType}}</div>
|
||||
</div>
|
||||
|
||||
{{#eq triggerType "webhook"}}
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.triggerCode}}</div>
|
||||
<div class="action-value">{{triggerCode}}</div>
|
||||
</div>
|
||||
{{/eq}}
|
||||
|
||||
{{#eq triggerType "keyPress"}}
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.triggerKey}}</div>
|
||||
<div class="action-value">{{triggerCodeFormatted}}</div>
|
||||
</div>
|
||||
{{/eq}}
|
||||
|
||||
{{#if sourceId}}
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.triggerTarget}}</div>
|
||||
<div class="action-value">
|
||||
{{#if sourceName}}
|
||||
"{{sourceName}}"
|
||||
{{else}}
|
||||
{{sourceId}}
|
||||
{{/if}}
|
||||
({{lookup trans.targetsAndSources source}})
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if showTarget}}
|
||||
{{#if targetId}}
|
||||
{{!-- Set layout name as screen --}}
|
||||
{{#eq target "layout"}}
|
||||
{{set "targetValue" "screen"}}
|
||||
{{else}}
|
||||
{{set "targetValue" target}}
|
||||
{{/eq}}
|
||||
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.target}}</div>
|
||||
<div class="action-value">
|
||||
{{#if targetName}}
|
||||
"{{targetName}}"
|
||||
{{else}}
|
||||
{{targetId}}
|
||||
{{/if}}
|
||||
({{lookup trans.targetsAndSources targetValue}})
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if widgetId}}
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.widgetToLoad}}</div>
|
||||
<div class="action-value">
|
||||
{{#if widgetName}}
|
||||
"{{widgetName}}"
|
||||
{{else}}
|
||||
{{widgetId}}
|
||||
{{/if}}
|
||||
({{lookup trans.targetsAndSources 'widget'}})
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if layoutCode}}
|
||||
<div class="action-group">
|
||||
<div class="action-label">{{trans.layoutCode}}</div>
|
||||
<div class="action-value">{{layoutCode}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#unless readOnly}}
|
||||
<div class="action-btn-container">
|
||||
<div class="action-btn" data-action="edit" title="{{trans.editAction}}">
|
||||
{{trans.editAction}}
|
||||
</div>
|
||||
<div class="action-btn" data-action="delete" title="{{trans.deleteAction}}">
|
||||
{{trans.deleteAction}}
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
</div>
|
||||
14
ui/src/templates/actions-form-content-template.hbs
Normal file
14
ui/src/templates/actions-form-content-template.hbs
Normal file
@@ -0,0 +1,14 @@
|
||||
<div class="actions-container">
|
||||
<div class="actions-content">
|
||||
{{#unless readOnly}}
|
||||
<button class="actions-content-button" type="button" data-action="add">
|
||||
<span>{{trans.addAction}}</span>
|
||||
<span class="icon">
|
||||
<i class="fa fa-plus"></i>
|
||||
</span>
|
||||
</button>
|
||||
{{/unless}}
|
||||
|
||||
<div class="actions-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
6
ui/src/templates/auto-submit-field.hbs
Normal file
6
ui/src/templates/auto-submit-field.hbs
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="checkbox">
|
||||
<label for="autoSubmit" accesskey="a" title="{{trans.helpText}}">
|
||||
<input type="checkbox" id="autoSubmit" name="autoSubmit">
|
||||
{{trans.label}}
|
||||
</label>
|
||||
</div>
|
||||
112
ui/src/templates/bottombar-viewer.hbs
Normal file
112
ui/src/templates/bottombar-viewer.hbs
Normal file
@@ -0,0 +1,112 @@
|
||||
<nav class="navbar viewer-navbar designer-{{object.type}}-selected">
|
||||
<div class="viewer-navbar-info">
|
||||
{{! Element Info }}
|
||||
{{#eq object.type "widget"}}
|
||||
<div class="info">
|
||||
{{#ifCond object.widgetName '||' object.moduleName}}
|
||||
<div class="label-name">
|
||||
<strong title="{{trans.widgetType}}">{{objectTypeName}}</strong> <div class="name" title="{{trans.widgetName}}">{{#if object.widgetName}}"{{object.widgetName}}"{{/if}}{{#if moduleTemplateTitle}}<span class="template-name" title="{{trans.widgetTemplate}}"> | "{{moduleTemplateTitle}}"</span>{{/if}}</div>
|
||||
</div>
|
||||
{{/ifCond}}
|
||||
</div>
|
||||
{{else eq object.type "element"}}
|
||||
<div class="info">
|
||||
<div class="label-name">
|
||||
<strong>{{objectTypeName}}</strong> | <div class="mediaTemplate" title="{{trans.templateName}}">{{object.template.title}}</div>
|
||||
{{#if object.elementName}} - <div class="name" title="{{trans.elementName}}">"{{object.elementName}}"</div>{{/if}}
|
||||
{{#if object.elementMediaInfo}}
|
||||
- <div class="mediaInfo">[
|
||||
<div class="mediaInfoName" title="{{trans.elementMediaInfoName}}">{{object.elementMediaInfo.name}}</div>
|
||||
<div class="mediaInfoId" title="{{trans.elementMediaInfoId}}">#{{object.elementMediaInfo.id}}</div>
|
||||
]</div>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{else eq object.type "element-group"}}
|
||||
<div class="info">
|
||||
<div class="label-name">
|
||||
<strong>{{objectTypeName}}</strong>{{#if object.elementGroupName}} - <div class="name" title="{{trans.elementGroupName}}">"{{object.elementGroupName}}"</div>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{else if object}}
|
||||
<div class="info">
|
||||
<div class="label-name">
|
||||
<strong>{{objectTypeName}}</strong> <div class="name" title="{{trans.regionName}}">{{#if object.name}}"{{object.name}}"{{/if}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/eq}}
|
||||
</div>
|
||||
|
||||
<div class="viewer-navbar-controls">
|
||||
{{! Left area }}
|
||||
<div class="area-right">
|
||||
{{#if renderLayout}}
|
||||
<button type="button" id="play-btn" class="btn btn-sm" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{ trans.playPreviewLayout }}">
|
||||
<i class="fa fa-play-circle" data-toggle="popover" title="{{ trans.playPreviewLayoutPOTitle }}" data-content="{{ trans.playPreviewLayoutPOMessage }}" data-placement="top"></i>
|
||||
</button>
|
||||
{{else}}
|
||||
<button type="button" id="inline-editor-save" class="btn btn-sm" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top"
|
||||
data-title="{{ trans.saveEditorChanges }}">
|
||||
<i class="fa fa-save"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
|
||||
{{#unless readOnlyModeOn}}
|
||||
{{#eq object.type "element"}}
|
||||
{{#if widget.isPermissionsModifiable}}
|
||||
<button type="button" id="permissions-btn" class="properties-btn properties-widget btn btn-sm" data-property="Permissions"
|
||||
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.permissions.description}}">
|
||||
<i class="tool-icon-permissions card-icon"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/eq}}
|
||||
|
||||
{{#eq object.type "widget"}}
|
||||
{{#if object.isPermissionsModifiable}}
|
||||
<button type="button" id="permissions-btn" class="properties-btn btn btn-sm" data-property="Permissions"
|
||||
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.permissions.description}}">
|
||||
<i class="tool-icon-permissions card-icon"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{#if object.isEditable}}
|
||||
{{#if object.canAttachAudio}}
|
||||
<button type="button" id="audio-btn" class="properties-btn btn btn-sm" data-property="Audio"
|
||||
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.audio.description}}">
|
||||
<i class="tool-icon-audio card-icon"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/eq}}
|
||||
|
||||
{{#eq object.type "region"}}
|
||||
{{#neq object.subType "zone"}}
|
||||
{{#if object.isPermissionsModifiable}}
|
||||
<button type="button" id="permissions-btn" class="properties-btn btn btn-sm" data-property="Permissions"
|
||||
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.permissions.description}}">
|
||||
<i class="tool-icon-permissions card-icon"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/neq}}
|
||||
{{/eq}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
|
||||
{{! Right area }}
|
||||
<div class="area-left">
|
||||
{{#unless readOnlyModeOn}}
|
||||
{{#if undoActive}}
|
||||
<button type="button" id="undo-btn" class="btn btn-sm tooltip-always-on" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top"
|
||||
data-title="{{trans.undoActiveTitle}}">
|
||||
<i class="fa fa-undo"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
|
||||
{{#if trashActive}}
|
||||
<button type="button" id="delete-btn" class="btn btn-sm" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top"
|
||||
data-title="{{trans.trashBinActiveTitle}}">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
34
ui/src/templates/calendar/agenda-campaigns.hbs
Normal file
34
ui/src/templates/calendar/agenda-campaigns.hbs
Normal file
@@ -0,0 +1,34 @@
|
||||
<table id="campaigns" class="table agenda-table" data-type="campaigns" width="100%">
|
||||
<thead>
|
||||
<tr class="table-title">
|
||||
<th colspan="4">{{trans.campaigns}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>{{trans.id}}</th>
|
||||
<th>{{trans.name}}</th>
|
||||
<th>{{trans.cyclePlayback}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% _.each(campaigns, function(campaign){ %>
|
||||
<tr data-elem-id="<%= campaign.campaignId %>">
|
||||
<td></td>
|
||||
<td>
|
||||
<%= campaign.campaignId %>
|
||||
</td>
|
||||
<td>
|
||||
<%= campaign.campaign %>
|
||||
</td>
|
||||
<%
|
||||
var icon = "";
|
||||
if (campaign.cyclePlaybackEnabled == 0)
|
||||
icon = "fa-times";
|
||||
else
|
||||
icon = "fa-check";
|
||||
%>
|
||||
<td><span class="fa <%= icon %>"></span></td>
|
||||
</tr>
|
||||
<% }); %>
|
||||
</tbody>
|
||||
</table>
|
||||
30
ui/src/templates/calendar/agenda-display-groups.hbs
Normal file
30
ui/src/templates/calendar/agenda-display-groups.hbs
Normal file
@@ -0,0 +1,30 @@
|
||||
<table id="displaygroups" class="table agenda-table" data-type="displaygroups" width="100%">
|
||||
<thead>
|
||||
<tr class="table-title">
|
||||
<th colspan="3">{{trans.displayGroups}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>{{trans.id}}</th>
|
||||
<th>{{trans.name}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% _.each(displaygroups, function(displaygroup){ %>
|
||||
<tr data-elem-id="<%= displaygroup.displayGroupId %>">
|
||||
<%
|
||||
var icon = "";
|
||||
if (displaygroup.isDisplaySpecific == 1)
|
||||
icon = "fa-television";
|
||||
%>
|
||||
<td><span class="fa <%= icon %>"></span></td>
|
||||
<td>
|
||||
<%= displaygroup.displayGroupId %>
|
||||
</td>
|
||||
<td>
|
||||
<%= displaygroup.displayGroup %>
|
||||
</td>
|
||||
</tr>
|
||||
<% }); %>
|
||||
</tbody>
|
||||
</table>
|
||||
44
ui/src/templates/calendar/agenda-filter.hbs
Normal file
44
ui/src/templates/calendar/agenda-filter.hbs
Normal file
@@ -0,0 +1,44 @@
|
||||
<div class="col-sm-12 cal-event-agenda-filter">
|
||||
<div class="d-flex justify-content-between">
|
||||
<!-- Timeline Checkbox -->
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="form-check">
|
||||
<input title="{{ trans.showTimeLineLabel }}" class="form-check-input" type="checkbox" id="showTimeline" name="showTimeline">
|
||||
<label class="form-check-label" title="{{ trans.showTimeLineLabel }}" for="showTimeline" accesskey="">{{ trans.showTimeLineLabel }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Geo location -->
|
||||
<form class="form-inline cal-event-location">
|
||||
<button id="toggleMap" type="button" class="btn btn-primary pull-right" title="{{ trans.geoMap }}"><i
|
||||
class="fa fa-map"></i></button>
|
||||
<button id="getLocation" type="button" class="btn btn-white pull-right" title="{{ trans.geoGetBrowserLocation }}"><i class="fa fa-map-marker"></i>
|
||||
</button>
|
||||
<button id="clearLocation" type="button" class="btn btn-white pull-right" title="{{ trans.geoClearCoord }}"><i class="fa fa-times"></i>
|
||||
</button>
|
||||
<div class="form-group pull-right">
|
||||
<input type="email" class="form-control" id="geoLongitude" placeholder="{{ trans.geoLongitude }}">
|
||||
</div>
|
||||
<div class="form-group pull-right">
|
||||
<input type="text" class="form-control" id="geoLatitude" placeholder="{{ trans.geoLatitude }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Timeline -->
|
||||
<div class="cal-event-time-bar" style="display: none;">
|
||||
<div class="btn slider-step-btn time-picker-step-btn" data-step="-1">
|
||||
<span class="fa fa-step-backward"></span>
|
||||
</div>
|
||||
<input id="timePicker" type="text" data-slider-id='timePickerSlider' data-slider-min="0" data-slider-max="1439"
|
||||
data-slider-step="1" data-slider-value="0" data-slider-handle="square" />
|
||||
<div class="btn slider-step-btn time-picker-step-btn" data-step="1">
|
||||
<span class="fa fa-step-forward"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Geo location map -->
|
||||
<div class="cal-event-location-map" data-default-lat="{{ defaultLat }}" data-default-long="{{ defaultLong }}">
|
||||
<div id="geoFilterAgendaMap" style="height: 400px; width: 100%" class="d-none"></div>
|
||||
</div>
|
||||
</div>
|
||||
97
ui/src/templates/calendar/agenda-layouts.hbs
Normal file
97
ui/src/templates/calendar/agenda-layouts.hbs
Normal file
@@ -0,0 +1,97 @@
|
||||
<table class="table agenda-table agenda-table-layouts" data-type="layouts" style="width: 100%;">
|
||||
<thead>
|
||||
<tr class="table-title">
|
||||
<% if (layouts.type == 4) { %>
|
||||
<th colspan="11" class="pr-2">
|
||||
<% } else { %>
|
||||
<th colspan="10" class="pr-2">
|
||||
<% } %>
|
||||
<% if (layouts.type == 1) { %>
|
||||
<span>{{trans.layouts}}</span>
|
||||
<% } else if (layouts.type == 3) { %>
|
||||
<span>{{trans.overlayLayouts}}</span>
|
||||
<% } else if (layouts.type == 4) { %>
|
||||
<span>{{trans.interruptLayouts}}</span>
|
||||
<% } else if (layouts.type == 5) { %>
|
||||
<span>{{trans.campaignLayouts}}</span>
|
||||
<% } else if (layouts.type == 7) { %>
|
||||
<span>{{trans.fullscreenVideoImage}}</span>
|
||||
<% } else if (layouts.type == 8) { %>
|
||||
<span>{{trans.fullscreenPlaylist}}</span>
|
||||
<% } else if (layouts.type == 9) { %>
|
||||
<span>{{trans.synchronised}}</span>
|
||||
<% } %>
|
||||
|
||||
<span class="pull-right badge badge-light" title="{{trans.numberLayouts}}" data-toggle="tooltip" data-placement="top">
|
||||
<%= layouts.length %>
|
||||
</span>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>{{trans.id}}</th>
|
||||
<th>{{trans.layoutName}}</th>
|
||||
<th>{{trans.status}}</th>
|
||||
<th>{{trans.fromDate}}</th>
|
||||
<th>{{trans.toDate}}</th>
|
||||
<th>{{trans.layoutDuration}}</th>
|
||||
<% if (layouts.type == 4) { %>
|
||||
<th>{{trans.shareOfVoice}}</th>
|
||||
<% } %>
|
||||
<th>{{trans.displayOrder}}</th>
|
||||
<th>{{trans.priority}}</th>
|
||||
<th>{{trans.visible}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% _.each(layouts, function(layout){ %>
|
||||
<tr
|
||||
class="<%= layout.itemClass %>"
|
||||
data-elem-id="<%= layout.layoutId %>"
|
||||
data-event-id="<%= layout.eventId %>"
|
||||
data-toggle="tooltip"
|
||||
<% if (layout.itemClass == 'low-priority') { %>
|
||||
title="{{trans.layoutWontBeShown}}"
|
||||
<% } %>
|
||||
>
|
||||
<td><span class="fa <%= layout.itemIcon %>"></span></td>
|
||||
<td><%= layout.layoutId %></td>
|
||||
<td><%= layout.layoutName %></td>
|
||||
<%
|
||||
var icon = "";
|
||||
if (layout.layoutStatus == 1)
|
||||
icon = "fa-check";
|
||||
else if (layout.layoutStatus == 0)
|
||||
icon = "fa-times";
|
||||
else if (layout.layoutStatus == 3)
|
||||
icon = "fa-cogs";
|
||||
else
|
||||
icon = "fa-exclamation";
|
||||
%>
|
||||
<td><span class="fa <%= icon %>"></span></td>
|
||||
<% if (layout.isAlways == 1) { %>
|
||||
<td>{{trans.always}}</td>
|
||||
<td><span class="fa fa-retweet"></span></td>
|
||||
<% } else { %>
|
||||
<td><%= layout.eventFromDt %></td>
|
||||
<td><%= layout.eventToDt %></td>
|
||||
<% } %>
|
||||
|
||||
<td><%= layout.layoutDuration %></td>
|
||||
<% if (layouts.type == 4) { %>
|
||||
<td><%= layout.shareOfVoice %></td>
|
||||
<% } %>
|
||||
<td><%= layout.layoutDisplayOrder %></td>
|
||||
<td><%= layout.eventPriority %></td>
|
||||
<%
|
||||
var icon = "";
|
||||
if (layout.itemClass == 'low-priority')
|
||||
icon = "fa-times";
|
||||
else
|
||||
icon = "fa-check";
|
||||
%>
|
||||
<td><span class="fa <%= icon %>"></span></td>
|
||||
</tr>
|
||||
<% }); %>
|
||||
</tbody>
|
||||
</table>
|
||||
92
ui/src/templates/calendar/agenda.hbs
Normal file
92
ui/src/templates/calendar/agenda.hbs
Normal file
@@ -0,0 +1,92 @@
|
||||
<div class="container-fluid">
|
||||
<!-- Content panel with tabs -->
|
||||
<div class="card with-nav-tabs bg-white agenda-panel">
|
||||
<!-- Tab Panel -->
|
||||
<% if (typeof agenda.displayGroupList != 'undefined' && agenda.displayGroupList.length > 1) { %>
|
||||
<div class="card-heading">
|
||||
<ul class="nav nav-tabs flex-nowrap w-100" style="overflow:auto hidden;">
|
||||
<% _.each(agenda.displayGroupList, function(displayGroup){ %>
|
||||
<% if (displayGroup['id'] == agenda.selectedDisplayGroup) { %>
|
||||
<li class="nav-item flex-shrink-0 active" <% if (agenda.displayGroupList.length > 10) { %>style="order: -1;" <% }; %>>
|
||||
<% } else { %>
|
||||
<li class="nav-item flex-shrink-0">
|
||||
<% }; %>
|
||||
|
||||
<%
|
||||
// If it is a simple display show an
|
||||
var displayGroupIcon = "";
|
||||
if (displayGroup['isDisplaySpecific'] == 0)
|
||||
displayGroupIcon = "<span class='fa fa-television'></span> ";
|
||||
%>
|
||||
|
||||
<a class="nav-link" data-toggle="tab" data-id="<%= displayGroup['id'] %>" href="#tab_<%= displayGroup['id'] %>">
|
||||
<%= (displayGroupIcon + displayGroup['name']) %>
|
||||
</a>
|
||||
</li>
|
||||
<% }); %>
|
||||
</ul>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<!-- Tab Content -->
|
||||
<div class="card-body p-1">
|
||||
|
||||
<% if (agenda.errorMessage != '') { %>
|
||||
<!-- Request failed - Show Error Message -->
|
||||
<div class="text-danger text-center">
|
||||
<% if (agenda.errorMessage == 'display_not_selected') { %>
|
||||
<p>{{trans.displayNotSelected}}</p>
|
||||
<% } else if (agenda.errorMessage == 'no_events') { %>
|
||||
<p>{{trans.noEventsForTheChosen}}</p>
|
||||
<% } else if (agenda.errorMessage == 'request_failed') { %>
|
||||
<p>{{trans.dataRequestFailed}}</p>
|
||||
<% } %>
|
||||
</div>
|
||||
<% } else if(!jQuery.isEmptyObject(agenda.results)) { %>
|
||||
<!-- Request successful - Show Data -->
|
||||
|
||||
<!-- Breadcrumb trail -->
|
||||
<div class="cal-event-breadcrumb-trail col-12 mt-2">
|
||||
<div id="content"></div>
|
||||
</div>
|
||||
|
||||
<!-- Agenda Data Content -->
|
||||
<div class="tab-content">
|
||||
<% _.each(agenda.displayGroupList, function(displayGroup){ %>
|
||||
<% if (typeof agenda.results[(displayGroup['id'])] != 'undefined') { %>
|
||||
<%
|
||||
var resultItem = agenda.results[displayGroup['id']];
|
||||
var isActive = (displayGroup['id'] == agenda.selectedDisplayGroup) ? 'active' : '';
|
||||
%>
|
||||
<div id="tab_<%= displayGroup['id'] %>" class="tab-pane <%= isActive %> container-fluid">
|
||||
<div class="row">
|
||||
<% if(typeof resultItem.events != 'undefined') { %>
|
||||
<div class="col-lg-9 agenda-col agenda-col-lt">
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 1) %>
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 3) %>
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 4) %>
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 5) %>
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 7) %>
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 8) %>
|
||||
<%= cal._layouts(resultItem.events, resultItem.layouts, 9) %>
|
||||
</div>
|
||||
<div class="col-lg-3 agenda-col agenda-col-dg">
|
||||
<div class="row">
|
||||
<div class="col-6 col-lg-12 agenda-col">
|
||||
<%= cal._displaygroups(resultItem.events, resultItem.displayGroups) %>
|
||||
</div>
|
||||
<div class="col-6 col-lg-12 agenda-col">
|
||||
<%= cal._campaigns(resultItem.events, resultItem.campaigns) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% }); %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
42
ui/src/templates/calendar/breadcrumb-trail.hbs
Normal file
42
ui/src/templates/calendar/breadcrumb-trail.hbs
Normal file
@@ -0,0 +1,42 @@
|
||||
<!-- Layout -->
|
||||
<span>
|
||||
<% if (layout.link != '') { %>
|
||||
<a href="<%= layout.link %>"><%= layout.name %></a>
|
||||
<% } else { %>
|
||||
<%= layout.name %>
|
||||
<% } %>
|
||||
</span>
|
||||
|
||||
<span> <i class="fa fa-arrow-right" aria-hidden="true"></i> </span>
|
||||
|
||||
<!-- Campaign -->
|
||||
<% if (typeof campaign != 'undefined') { %>
|
||||
<span>
|
||||
<% if (campaign.link != '') { %>
|
||||
<a href="<%= campaign.link %>"><%= campaign.name %></a>
|
||||
<% } else { %>
|
||||
<%= campaign.name %>
|
||||
<% } %>
|
||||
</span>
|
||||
<span> <i class="fa fa-arrow-right" aria-hidden="true"></i> </span>
|
||||
<% } %>
|
||||
|
||||
<!-- Schedule -->
|
||||
<span>
|
||||
<a href="<%= schedule.link %>" class="XiboFormButton" data-event-start="<%= schedule.fromDt %>" data-event-end="<%= schedule.toDt %>">
|
||||
{{trans.schedule}}
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<!-- Display Groups -->
|
||||
<% _.each(displayGroups, function(displayGroup){ %>
|
||||
<span> <i class="fa fa-arrow-right" aria-hidden="true"></i> </span>
|
||||
<span>
|
||||
<% if (displayGroup.link != '') { %>
|
||||
<a href="<%= displayGroup.link %>"><%= displayGroup.name %></a>
|
||||
<% } else { %>
|
||||
<%= displayGroup.name %>
|
||||
<% } %>
|
||||
</span>
|
||||
<% }); %>
|
||||
|
||||
82
ui/src/templates/calendar/day.hbs
Normal file
82
ui/src/templates/calendar/day.hbs
Normal file
@@ -0,0 +1,82 @@
|
||||
<div id="cal-day-box">
|
||||
<div class="row-fluid clearfix cal-row-head">
|
||||
<div class="span1 col-1 cal-cell"><%= cal.locale.time %></div>
|
||||
<div class="span11 col-11 cal-cell"><%= cal.locale.events %></div>
|
||||
</div>
|
||||
<% if(all_day.length) {%>
|
||||
<div class="row-fluid clearfix cal-day-hour">
|
||||
<div class="span1 col-1"><b><%= cal.locale.all_day %></b></div>
|
||||
<div class="span11 col-11">
|
||||
<% _.each(all_day, function(event){ %>
|
||||
<%
|
||||
var eventTitle = (event.event.isAlways == 1) ? event.title : "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
|
||||
%>
|
||||
<div class="day-highlight dh-<%= event['class'] %>">
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
class="event-item">
|
||||
<%= eventTitle %></a>
|
||||
</div>
|
||||
<% }); %>
|
||||
</div>
|
||||
</div>
|
||||
<% }; %>
|
||||
<% if(before_time.length) {%>
|
||||
<div class="row-fluid clearfix cal-day-hour">
|
||||
<div class="span1 col-3"><b><%= cal.locale.before_time %></b></div>
|
||||
<div class="span5 col-5">
|
||||
<% _.each(before_time, function(event){ %>
|
||||
<div class="day-highlight dh-<%= event['class'] %>">
|
||||
<span class="cal-hours pull-right"><%= event.end_hour %></span>
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
class="event-item">
|
||||
<%= event.title %></a>
|
||||
</div>
|
||||
<% }); %>
|
||||
</div>
|
||||
</div>
|
||||
<% }; %>
|
||||
<div id="cal-day-panel" class="clearfix">
|
||||
<div id="cal-day-panel-hour">
|
||||
<% for(i = 0; i < hours; i++){ %>
|
||||
<div class="cal-day-hour">
|
||||
<% for(l = 0; l < cal._hour_min(i); l++){ %>
|
||||
<div class="row-fluid cal-day-hour-part">
|
||||
<div class="span1 col-1"><b><%= cal._hour(i, l) %></b></div>
|
||||
<div class="span11 col-11"></div>
|
||||
</div>
|
||||
<% }; %>
|
||||
</div>
|
||||
<% }; %>
|
||||
</div>
|
||||
|
||||
<% _.each(by_hour, function(event){ %>
|
||||
<div class="pull-left day-event <% if (event.lines < 1) { %>day-event-small<% } %> day-highlight dh-<%= event['class'] %>" style="margin-top: <%= (event.top * 30) %>px; height: <%= (event.lines * 30) %>px"
|
||||
<% if (event.lines < 2) { %>data-toggle="popover" data-html="true" data-content="<a href='<%= event.url ? event.url : "javascript:void(0)" %>'><%= event.title %></a>" title="<%= event.start_hour %> - <%= event.end_hour %>"<% } %>
|
||||
>
|
||||
<span class="cal-hours"><%= event.start_hour %> - <%= event.end_hour %></span>
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
data-event-class="<%= event['class'] %>" class="event-item">
|
||||
<%= event.title %></a>
|
||||
</div>
|
||||
<% }); %>
|
||||
</div>
|
||||
<% if(after_time.length) {%>
|
||||
<div class="row-fluid clearfix cal-day-hour">
|
||||
<div class="span1 col-3"><b><%= cal.locale.after_time %></b></div>
|
||||
<div class="span11 col-9">
|
||||
<% _.each(after_time, function(event){ %>
|
||||
<div class="day-highlight dh-<%= event['class'] %>">
|
||||
<span class="cal-hours"><%= event.start_hour %></span>
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
data-event-class="<%= event['class'] %>" class="event-item">
|
||||
<%= event.title %></a>
|
||||
</div>
|
||||
<% }); %>
|
||||
</div>
|
||||
</div>
|
||||
<% }; %>
|
||||
</div>
|
||||
82
ui/src/templates/calendar/events-list.hbs
Normal file
82
ui/src/templates/calendar/events-list.hbs
Normal file
@@ -0,0 +1,82 @@
|
||||
<span id="cal-slide-tick" style="display: none"></span>
|
||||
<div id="cal-slide-content" class="cal-event-list">
|
||||
<ul class="unstyled list-unstyled">
|
||||
<% _.each(events, function(event) { %>
|
||||
<%
|
||||
var title = event.title;
|
||||
var eventIcon = "fa-desktop";
|
||||
var eventClass = "event-warning";
|
||||
var eventPriority = "";
|
||||
|
||||
if (event.event.isAlways != 1) {
|
||||
if (event.event.eventTypeId == 2) {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
|
||||
} else if (event.sameDay) {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
|
||||
} else {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.event.displayOrder > 0)
|
||||
title = title + " (" + event.event.displayOrder + ")";
|
||||
|
||||
if (event.event.displayGroups.length <= 1) {
|
||||
eventClass = "event-info";
|
||||
}
|
||||
else {
|
||||
eventClass = "event-success";
|
||||
}
|
||||
|
||||
if (event.event.isAlways == 1) {
|
||||
eventIcon = "fa-retweet";
|
||||
}
|
||||
|
||||
if (event.event.recurrenceType != null && event.event.recurrenceType != "") {
|
||||
eventClass = "event-special";
|
||||
eventIcon = "fa-repeat";
|
||||
}
|
||||
|
||||
if (event.event.isPriority >= 1) {
|
||||
eventClass = "event-important";
|
||||
eventIcon = "fa-bullseye";
|
||||
eventPriority = event.event.isPriority;
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 2) {
|
||||
eventIcon = "fa-wrench";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 4) {
|
||||
eventIcon = "fa-hand-paper";
|
||||
}
|
||||
|
||||
if (event.event.isGeoAware === 1) {
|
||||
eventIcon = "fa-map-marker";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 6) {
|
||||
eventIcon = "fa-paper-plane";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 9) {
|
||||
eventIcon = "fa-refresh";
|
||||
}
|
||||
|
||||
if (!event.editable) {
|
||||
event.url = null;
|
||||
eventIcon = "fa-lock";
|
||||
eventClass = "event-inverse";
|
||||
}
|
||||
%>
|
||||
<li>
|
||||
<span class="pull-left event <%= event['class'] %>"></span>
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
data-event-class="<%= eventClass %>" class="event-item">
|
||||
<span class="fa <%= eventIcon %>"><span class="event-priority"><%= eventPriority %></span></span> <%= title %></a>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
<div class="btn btn-light cal-agenda-button" title="{{trans.openAgenda}}">{{trans.agenda}}</div>
|
||||
</div>
|
||||
86
ui/src/templates/calendar/month-day.hbs
Normal file
86
ui/src/templates/calendar/month-day.hbs
Normal file
@@ -0,0 +1,86 @@
|
||||
<div class="cal-month-day <%= cls %>">
|
||||
<span class="pull-right cal-month-day-number" data-cal-date="<%= data_day %>" <% if (events.length > 0) { %>data-cal-events="1"<% } %> ><%= day %></span>
|
||||
|
||||
<% if (events.length > 0) { %>
|
||||
<span class="cal-month-day-number-events label label-info" data-toggle="tooltip" title="{{trans.numberOfEvents}}"><%= events.length %></span>
|
||||
<% } %>
|
||||
|
||||
<% if (events.length > 0) { %>
|
||||
<div class="events-list" data-cal-start="<%= start %>" data-cal-end="<%= end %>">
|
||||
<% _.each(events, function(event) { %>
|
||||
<%
|
||||
var title = event.title;
|
||||
var eventIcon = "fa-desktop";
|
||||
var eventClass = "event-warning";
|
||||
var eventPriority = "";
|
||||
|
||||
if (event.event.isAlways != 1) {
|
||||
if (event.event.eventTypeId == 2) {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
|
||||
} else if (event.sameDay) {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
|
||||
} else {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.event.displayOrder > 0)
|
||||
title = title + " (" + event.event.displayOrder + ")";
|
||||
|
||||
if (event.event.displayGroups.length <= 1) {
|
||||
eventClass = "event-info";
|
||||
}
|
||||
else {
|
||||
eventClass = "event-success";
|
||||
}
|
||||
|
||||
if (event.event.isAlways == 1) {
|
||||
eventIcon = "fa-retweet";
|
||||
}
|
||||
|
||||
if (event.event.recurrenceType != null && event.event.recurrenceType != "") {
|
||||
eventClass = "event-special";
|
||||
eventIcon = "fa-repeat";
|
||||
}
|
||||
|
||||
if (event.event.isPriority >= 1) {
|
||||
eventClass = "event-important";
|
||||
eventIcon = "fa-bullseye";
|
||||
eventPriority = event.event.isPriority;
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 2) {
|
||||
eventIcon = "fa-wrench";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 4) {
|
||||
eventIcon = "fa-hand-paper";
|
||||
}
|
||||
|
||||
if (event.event.isGeoAware === 1) {
|
||||
eventIcon = "fa-map-marker";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 6) {
|
||||
eventIcon = "fa-paper-plane";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 9) {
|
||||
eventIcon = "fa-refresh";
|
||||
}
|
||||
|
||||
if (!event.editable) {
|
||||
event.url = null;
|
||||
eventIcon = "fa-lock";
|
||||
eventClass = "event-inverse";
|
||||
}
|
||||
%>
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
data-event-class="<%= eventClass %>"
|
||||
class="pull-left event <%= eventClass %>" data-toggle="tooltip"
|
||||
title="<%= event.title %>"><span class="fa <%= eventIcon %>"><span class="event-priority"><%= eventPriority %></span></span></a>
|
||||
<% }); %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
19
ui/src/templates/calendar/month.hbs
Normal file
19
ui/src/templates/calendar/month.hbs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="cal-row-fluid cal-row-head">
|
||||
<% _.each(days_name, function(name){ %>
|
||||
<div class="cal-cell1"><%= name %></div>
|
||||
<% }) %>
|
||||
</div>
|
||||
<div class="cal-month-box">
|
||||
<% for(i = 0; i < 6; i++) { %>
|
||||
<% if(cal.stop_cycling == true) break; %>
|
||||
<div class="cal-row-fluid cal-before-eventlist">
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day1"><%= cal._day(i, day++) %></div>
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day2"><%= cal._day(i, day++) %></div>
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day3"><%= cal._day(i, day++) %></div>
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day4"><%= cal._day(i, day++) %></div>
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day5"><%= cal._day(i, day++) %></div>
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day6"><%= cal._day(i, day++) %></div>
|
||||
<div class="cal-cell1 cal-cell" data-cal-row="-day7"><%= cal._day(i, day++) %></div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
22
ui/src/templates/calendar/sync-event-content-selector.hbs
Normal file
22
ui/src/templates/calendar/sync-event-content-selector.hbs
Normal file
@@ -0,0 +1,22 @@
|
||||
{{#each displays}}
|
||||
<tr>
|
||||
<td>{{displayId}} {{#eq displayId leadDisplayId}}{{trans.lead}}{{/eq}}</td>
|
||||
<td>{{display}}</td>
|
||||
<td>
|
||||
<div class="form-group pagedSelect">
|
||||
<select class="form-control syncContentSelect single-select" name="layoutId_{{displayId}}" id="layoutId_{{displayId}}" data-search-url="{{../urlForLayoutSearch}}"
|
||||
data-search-term="layout" data-width="100%" data-id-property="layoutId" data-text-property="layout" data-anchor-element="#contentSelectorTable"
|
||||
data-initial-key="layoutId" data-initial-value="{{layoutId}}" data-display-id="{{displayId}}" data-lead-display-id="{{leadDisplayId}}">
|
||||
<option></option>
|
||||
</select>
|
||||
</div>
|
||||
{{#eq displayId leadDisplayId}}
|
||||
<button data-display-id="{{displayId}}" id="setMirrorContent" type="button" class="btn btn-success d-none"
|
||||
title="{{../trans.setOnAllDisplays}}">
|
||||
{{../trans.mirror}}
|
||||
</button>
|
||||
{{/eq}}
|
||||
<input name="displayGroupIds[]" type="hidden" id="displayGroupIds[]" value="{{displayGroupId}}">
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
73
ui/src/templates/calendar/week-days.hbs
Normal file
73
ui/src/templates/calendar/week-days.hbs
Normal file
@@ -0,0 +1,73 @@
|
||||
<% _.each(events, function(event){ %>
|
||||
<%
|
||||
var title = event.title;
|
||||
var eventIcon = "fa-desktop";
|
||||
var eventClass = "event-warning";
|
||||
var eventPriority = "";
|
||||
|
||||
if (event.event.isAlways != 1) {
|
||||
if (event.event.eventTypeId == 2) {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
|
||||
} else if (event.sameDay) {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
|
||||
} else {
|
||||
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
|
||||
}
|
||||
}
|
||||
|
||||
if (event.event.displayOrder > 0)
|
||||
title = title + " (" + event.event.displayOrder + ")";
|
||||
|
||||
if (event.event.displayGroups.length <= 1) {
|
||||
eventClass = "event-info";
|
||||
}
|
||||
else {
|
||||
eventClass = "event-success";
|
||||
}
|
||||
|
||||
if (event.event.isAlways == 1) {
|
||||
eventIcon = "fa-retweet";
|
||||
}
|
||||
|
||||
if (event.event.recurrenceType != null && event.event.recurrenceType != "") {
|
||||
eventClass = "event-special";
|
||||
eventIcon = "fa-repeat";
|
||||
}
|
||||
|
||||
if (event.event.isPriority >= 1) {
|
||||
eventClass = "event-important";
|
||||
eventIcon = "fa-bullseye";
|
||||
eventPriority = event.event.isPriority;
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 4) {
|
||||
eventIcon = "fa-hand-paper";
|
||||
}
|
||||
|
||||
if (event.event.isGeoAware === 1) {
|
||||
eventIcon = "fa-map-marker";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 6) {
|
||||
eventIcon = "fa-paper-plane";
|
||||
}
|
||||
|
||||
if (event.event.eventTypeId == 9) {
|
||||
eventIcon = "fa-refresh";
|
||||
}
|
||||
|
||||
if (!event.editable) {
|
||||
event.url = null;
|
||||
eventIcon = "fa-wrench";
|
||||
eventClass = "event-inverse";
|
||||
}
|
||||
%>
|
||||
<div class="cal-row-fluid">
|
||||
<div class="cal-cell<%= event.days%> cal-offset<%= event.start_day %> day-highlight dh-<%= event['class'] %>">
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
data-event-class="<%= eventClass %>"
|
||||
class="cal-event-week event<%= event.id %>"><span class="fa <%= eventIcon %>"><span class="event-priority"><%= eventPriority %></span></span> <%= title %></a>
|
||||
</div>
|
||||
</div>
|
||||
<% }); %>
|
||||
18
ui/src/templates/calendar/week.hbs
Normal file
18
ui/src/templates/calendar/week.hbs
Normal file
@@ -0,0 +1,18 @@
|
||||
<div class="cal-week-box">
|
||||
<div class="cal-offset1 cal-column"></div>
|
||||
<div class="cal-offset2 cal-column"></div>
|
||||
<div class="cal-offset3 cal-column"></div>
|
||||
<div class="cal-offset4 cal-column"></div>
|
||||
<div class="cal-offset5 cal-column"></div>
|
||||
<div class="cal-offset6 cal-column"></div>
|
||||
<div class="cal-row-fluid cal-row-head">
|
||||
<% _.each(days_name, function(name) { %>
|
||||
<div class="cal-cell1 <%= cal._getDayClass('week', start) %>" data-toggle="tooltip" title="<%= cal._getHolidayName(start) %>"><%= name %><br>
|
||||
<small><span data-cal-date="<%= start.getFullYear() %>-<%= start.getMonthFormatted() %>-<%= start.getDateFormatted() %>" data-cal-view="day"><%= cal.options.type !== 'Jalali' ? start.getDate() : start.getJalaliDate() %> <%= cal.options.type !== 'Jalali' ? cal.locale['ms' + start.getMonth()] : cal.locale['jms' + (start.getJalaliMonth() - 1)] %></span></small>
|
||||
</div>
|
||||
<% start.setDate(start.getDate() + 1); %>
|
||||
<% }) %>
|
||||
</div>
|
||||
<hr>
|
||||
<%= cal._week() %>
|
||||
</div>
|
||||
13
ui/src/templates/calendar/year-month.hbs
Normal file
13
ui/src/templates/calendar/year-month.hbs
Normal file
@@ -0,0 +1,13 @@
|
||||
<span class="pull-right" data-cal-date="<%= data_day %>" data-cal-view="month"><%= month_name %></span>
|
||||
<% if (events.length > 0) { %>
|
||||
<small class="cal-events-num badge badge-important pull-left"><%= events.length %></small>
|
||||
<div class="hide events-list" data-cal-start="<%= start %>" data-cal-end="<%= end %>">
|
||||
<% _.each(events, function(event) { %>
|
||||
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
|
||||
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
|
||||
data-event-class="<%= event['class'] %>"
|
||||
class="pull-left event <%= event['class'] %> event<%= event.id %>" data-toggle="tooltip"
|
||||
title="<%= event.title %>"></a>
|
||||
<% }); %>
|
||||
</div>
|
||||
<% } %>
|
||||
20
ui/src/templates/calendar/year.hbs
Normal file
20
ui/src/templates/calendar/year.hbs
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="cal-year-box">
|
||||
<div class="row row-fluid cal-before-eventlist">
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month1"><%= cal._month(0) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month2"><%= cal._month(1) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month3"><%= cal._month(2) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month4"><%= cal._month(3) %></div>
|
||||
</div>
|
||||
<div class="row row-fluid cal-before-eventlist">
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month1"><%= cal._month(4) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month2"><%= cal._month(5) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month3"><%= cal._month(6) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month4"><%= cal._month(7) %></div>
|
||||
</div>
|
||||
<div class="row row-fluid cal-before-eventlist">
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month1"><%= cal._month(8) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month2"><%= cal._month(9) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month3"><%= cal._month(10) %></div>
|
||||
<div class="span3 col-md-3 cal-cell" data-cal-row="-month4"><%= cal._month(11) %></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,46 @@
|
||||
<form action="{{campaignAssignLayoutURL}}"
|
||||
data-assignment-remove-url="{{campaignRemoveLayoutURL}}?layoutId={{layoutId}}"
|
||||
data-existing-display-order="{{displayOrder}}"
|
||||
method="POST"
|
||||
class="form-horizontal XiboForm">
|
||||
|
||||
{{> forms/inputs/hidden id="layoutId" value=layoutId }}
|
||||
|
||||
{{> forms/inputs/dropdown id="daysOfWeek[]" value=null title=trans.daysOfWeekDropdownTitle selectType="customSelect"
|
||||
options=(arr
|
||||
(obj id=1 name=trans.daysOfWeek.monday)
|
||||
(obj id=2 name=trans.daysOfWeek.tuesday)
|
||||
(obj id=3 name=trans.daysOfWeek.wednesday)
|
||||
(obj id=4 name=trans.daysOfWeek.thursday)
|
||||
(obj id=5 name=trans.daysOfWeek.friday)
|
||||
(obj id=6 name=trans.daysOfWeek.saturday)
|
||||
(obj id=7 name=trans.daysOfWeek.sunday)
|
||||
)
|
||||
optionsTitle="name" optionsValue="id" multiple="true"
|
||||
helpText=trans.daysOfWeekDropdownHelpText
|
||||
}}
|
||||
|
||||
{{> forms/inputs/dropdown id="dayPartId" value=null title=trans.dayPartDropdownTitle selectType="customSelect"
|
||||
customData=(arr
|
||||
(obj name="search-url" value=dayPartSearchURL)
|
||||
(obj name="search-term" value="name")
|
||||
(obj name="id-property" value="dayPartId")
|
||||
(obj name="text-property" value="name")
|
||||
(obj name="initial-key" value="dayPartId")
|
||||
(obj name="placeholder--id" value=null)
|
||||
(obj name="placeholder--value" value="")
|
||||
(obj name="allow-clear" value="true")
|
||||
)
|
||||
helpText=trans.dayPartDropdownHelpText
|
||||
}}
|
||||
|
||||
{{> forms/inputs/hidden id="geoFence" value=geoFence }}
|
||||
{{> forms/inputs/message title=trans.builderMessage}}
|
||||
|
||||
<div id="campaign-builder-map"
|
||||
data-map-tile-server="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
|
||||
data-map-lat="{{defaultLat}}"
|
||||
data-map-long="{{defaultLong}}"
|
||||
data-map-zoom="13"
|
||||
style="height: 500px; width: 100%"></div>
|
||||
</form>
|
||||
5
ui/src/templates/campaign/campaign-assign-layout.hbs
Normal file
5
ui/src/templates/campaign/campaign-assign-layout.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
<li data-layout-id="{{ layoutId }}" class="btn btn-sm btn-white {{#if locked}}ui-state-disabled{{/if}}">
|
||||
<div class="float-left text-left layout-order">{{index}}</div>
|
||||
<div class="layout-name float-left" title="{{ layoutName }}">{{ layoutName }}</div>
|
||||
<div class="layout-icon fa {{#if locked}}fa-lock{{else}}fa-minus layout-remove{{/if}}"></div>
|
||||
</li>
|
||||
1
ui/src/templates/commandInput/freetext.hbs
Normal file
1
ui/src/templates/commandInput/freetext.hbs
Normal file
@@ -0,0 +1 @@
|
||||
<input class="free-text form-control form-control-inline" value="{{ initVal }}">
|
||||
5
ui/src/templates/commandInput/http-key-value.hbs
Normal file
5
ui/src/templates/commandInput/http-key-value.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="http-key-value-element mt-1">
|
||||
<input class="form-control validated-element form-control-inline http-key" placeholder="{{trans.key}}" value="{{ key }}">
|
||||
<input class="form-control validated-element form-control-inline http-value" placeholder="{{trans.value}}" value="{{ value }}">
|
||||
<button type="button" class="btn btn-sm btn-warning pull-right http-key-value-remove"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
80
ui/src/templates/commandInput/http.hbs
Normal file
80
ui/src/templates/commandInput/http.hbs
Normal file
@@ -0,0 +1,80 @@
|
||||
{{! URL }}
|
||||
<label for="httpURL{{ unique }}" class="http-url-label form-check-label">{{trans.url}}</label>
|
||||
<input name="httpURL{{ unique }}" id="httpURL{{ unique }}" class="http-url w-100 validated-element form-control form-control-inline" placeholder="{{trans.url}}" value="{{ value.url }}">
|
||||
|
||||
{{! Query params }}
|
||||
<div class="request-params request-section mt-2">
|
||||
<div class="form-check w-100">
|
||||
<input type="checkbox" data-toggle-element=".query-builder-container" data-toggle-class="d-inline-block" class="show-query-builder ignore-change form-check-input" id="queryParamsBuilder{{ unique }}" name="queryParamsBuilder{{ unique }}" title="{{trans.queryParamBuilder}}" checked>
|
||||
<label for="queryParamsBuilder{{ unique }}" class="show-query-builder-label form-check-label">{{trans.queryBuilder}}</label>
|
||||
</div>
|
||||
<div class="form-group-command query-builder-container w-100 bg-white p-2 d-none d-inline-block">
|
||||
<label for="queryBuilderContainer{{ unique }}" class="http-key-value-container-label">{{trans.queryParams}}:</label>
|
||||
<button class="http-key-value-add btn btn-info btn-sm pull-right" type="button">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
|
||||
<div id="queryBuilderContainer{{ unique }}" class="http-key-value-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{! Method }}
|
||||
<div class="form-group-command mt-2">
|
||||
<label for="httpMethod{{ unique }}">{{trans.requestMethod}}:</label>
|
||||
<select name="httpMethod{{ unique }}" id="httpMethod{{ unique }}" class="http-method pl-1 form-control form-control-inline">
|
||||
<option value="GET" {{#eq value.requestOptions.method "GET"}}selected="selected"{{/eq}}>GET</option>
|
||||
<option value="POST" {{#eq value.requestOptions.method "POST"}}selected="selected"{{/eq}}>POST</option>
|
||||
<option value="PUT" {{#eq value.requestOptions.method "PUT"}}selected="selected"{{/eq}}>PUT</option>
|
||||
<option value="DELETE" {{#eq value.requestOptions.method "DELETE"}}selected="selected"{{/eq}}>DELETE</option>
|
||||
<option value="CONNECT" {{#eq value.requestOptions.method "CONNECT"}}selected="selected"{{/eq}}>CONNECT</option>
|
||||
<option value="HEAD" {{#eq value.requestOptions.method "HEAD"}}selected="selected"{{/eq}}>HEAD</option>
|
||||
<option value="OPTIONS" {{#eq value.requestOptions.method "OPTIONS"}}selected="selected"{{/eq}}>OPTIONS</option>
|
||||
<option value="PATCH" {{#eq value.requestOptions.method "PATCH"}}selected="selected"{{/eq}}>PATCH</option>
|
||||
<option value="TRACE" {{#eq value.requestOptions.method "TRACE"}}selected="selected"{{/eq}}>TRACE</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{! Headers }}
|
||||
<div class="request-headers request-section mt-2">
|
||||
<div class="form-check w-100">
|
||||
<input type="checkbox" data-toggle-element=".http-headers" data-toggle-element-reverse=".http-headers-container" data-toggle-class="d-inline-block" class="show-raw-headers ignore-change form-check-input" id="showRawHeaders{{ unique }}" name="showRawHeaders{{ unique }}" title="{{trans.showRawHeaders}}">
|
||||
<label for="showRawHeaders{{ unique }}" class="show-raw-headers-label form-check-label">{{trans.showRawHeaders}}</label>
|
||||
</div>
|
||||
<textarea name="httpHeaders{{ unique }}" id="httpHeaders{{ unique }}" class="http-headers w-100 d-none form-control validated-element form-control-inline" placeholder="{{trans.headers}}"></textarea>
|
||||
<div class="form-group-command http-headers-container w-100 bg-white p-2 d-none d-inline-block">
|
||||
<label for="httpHeadersContainer{{ unique }}" class="http-key-value-container-label">{{trans.headers}}</label>
|
||||
<button class="http-key-value-add btn btn-info btn-sm pull-right" type="button">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
|
||||
<div id="httpHeadersContainer{{ unique }}" class="http-key-value-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{! Body }}
|
||||
<div class="request-body request-section mt-2">
|
||||
{{! Content type }}
|
||||
<div class="form-group-command">
|
||||
<label for="httpContentType{{ unique }}" class="pl-1">{{trans.contentType}}:</label>
|
||||
<select name="httpContentType{{ unique }}" id="httpContentType{{ unique }}" class="http-contenttype form-control form-control-inline">
|
||||
<option value="application/x-www-form-urlencoded" {{#eq value.contenttype "application/x-www-form-urlencoded"}}selected="selected"{{/eq}}>urlencoded</option>
|
||||
<option value="application/json" {{#eq value.contenttype "application/json"}}selected="selected"{{/eq}}>json</option>
|
||||
<option value="text/plain" {{#eq value.contenttype "text/plain"}}selected="selected"{{/eq}}>textplain</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{! Body data }}
|
||||
<div class="form-check w-100 mt-2">
|
||||
<input type="checkbox" data-toggle-element=".http-data" data-toggle-element-reverse=".http-data-container" data-toggle-class="d-inline-block" class="show-raw-data ignore-change form-check-input" id="showRawData{{ unique }}" name="showRawData{{ unique }}" title="{{trans.showRawBodyData}}">
|
||||
<label for="showRawData{{ unique }}" class="show-raw-data-label form-check-label">{{trans.showRawData}}</label>
|
||||
</div>
|
||||
<textarea name="httpData{{ unique }}" id="httpData{{ unique }}" class="http-data w-100 validated-element d-none form-control form-control-inline" placeholder="{{trans.bodyData}}"></textarea>
|
||||
<div class="form-group-command http-data-container w-100 bg-white p-2 d-none d-inline-block">
|
||||
<label for="httpDataContainer{{ unique }}" class="http-key-value-container-label">{{trans.bodyData}}</label>
|
||||
<button class="http-key-value-add btn btn-info btn-sm pull-right" type="button">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
|
||||
<div id="httpDataContainer{{ unique }}" class="http-key-value-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
11
ui/src/templates/commandInput/intent-extra.hbs
Normal file
11
ui/src/templates/commandInput/intent-extra.hbs
Normal file
@@ -0,0 +1,11 @@
|
||||
<div class="intent-extra-element">
|
||||
<input class="form-control form-control-inline validated-element extra-name" placeholder="{{trans.name}}" value="{{ name }}">
|
||||
<select class="form-control form-control-inline extra-type">
|
||||
<option value="string" {{#eq type "string"}}selected="selected"{{/eq}}>string</option>
|
||||
<option value="int" {{#eq type "int"}}selected="selected"{{/eq}}>int</option>
|
||||
<option value="bool" {{#eq type "bool"}}selected="selected"{{/eq}}>bool</option>
|
||||
<option value="intArray" {{#eq type "intArray"}}selected="selected"{{/eq}}>intArray</option
|
||||
</select>
|
||||
<input class="form-control form-control-inline validated-element extra-value" placeholder="{{trans.value}}" value="{{ value }}">
|
||||
<button type="button" class="btn btn-sm btn-warning pull-right intent-remove-extra"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
19
ui/src/templates/commandInput/intent.hbs
Normal file
19
ui/src/templates/commandInput/intent.hbs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="form-group-command intent-type-container">
|
||||
<label for="intentType{{ unique }}" class="intent-type-label">{{trans.type}}:</label>
|
||||
<select name="intentType{{ unique }}" id="intentType{{ unique }}" class="intent-type form-control form-control-inline">
|
||||
<option value="activity" {{#eq value.type "activity"}}selected="selected"{{/eq}}>activity</option>
|
||||
<option value="service" {{#eq value.type "service"}}selected="selected"{{/eq}}>service</option>
|
||||
<option value="broadcast" {{#eq value.type "broadcast"}}selected="selected"{{/eq}}>broadcast</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<input name="intentName{{ unique }}" id="intentName{{ unique }}" class="intent-name form-control validated-element form-control-inline" placeholder="{{trans.intent}}" value="{{ value.name }}">
|
||||
|
||||
<div class="form-group-command">
|
||||
<label for="intentExtraContainer{{ unique }}" class="intent-extra-container-label">{{trans.extra}}:</label>
|
||||
<button class="intent-add-extra btn btn-info btn-sm pull-right" type="button">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
|
||||
<div id="intentExtraContainer{{ unique }}" class="intent-extra-container"></div>
|
||||
</div>
|
||||
15
ui/src/templates/commandInput/main.hbs
Normal file
15
ui/src/templates/commandInput/main.hbs
Normal file
@@ -0,0 +1,15 @@
|
||||
<div class="form-check pull-right">
|
||||
<input type="checkbox" class="show-command-preview form-check-input" id="showCommandPreview{{ unique }}" name="showCommandPreview{{ unique }}" title="{{trans.showCommandPreview}}">
|
||||
<label for="showCommandPreview{{ unique }}" class="show-command-preview-label form-check-label">{{trans.showCommandPreview}}</label>
|
||||
</div>
|
||||
|
||||
<select class="command-type form-control form-control-inline">
|
||||
{{#each types}}
|
||||
<option value="{{ @key }}" {{#eq @key ../type}}selected="selected"{{/eq}}>{{ this }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
<div class="command-inputs panel panel-default"></div>
|
||||
|
||||
<div disabled="disabled" class="command-preview bg-primary p-2 w-100" data-invalid-message="{{trans.invalidCommand}}">
|
||||
<code class="text-white"></code>
|
||||
</div>
|
||||
49
ui/src/templates/commandInput/rs232.hbs
Normal file
49
ui/src/templates/commandInput/rs232.hbs
Normal file
@@ -0,0 +1,49 @@
|
||||
<div class="form-group-command form-group-device form-group-rs232">
|
||||
<input class="form-control form-control-inline validated-element rs232-text-input rs232-device-name" placeholder="{{trans.deviceNameCOM}}" value="{{ value.cs.deviceName }}">
|
||||
<input class="form-control form-control-inline validated-element rs232-text-input rs232-baud-rate" placeholder="{{trans.baudRate}}" value="{{ value.cs.baudRate }}">
|
||||
<input class="form-control form-control-inline validated-element rs232-text-input rs232-data-bits" placeholder="{{trans.dateBits}}" value="{{ value.cs.dataBits }}">
|
||||
</div>
|
||||
<div class="form-group-command form-group-rs232">
|
||||
<div class="col-12 col-sm-6">
|
||||
<label for="rs232Parity{{ unique }}">{{trans.parity}}:</label>
|
||||
<select name="rs232Parity{{ unique }}" id="rs232Parity{{ unique }}" class="rs232-parity form-control">
|
||||
<option value="None" {{#eq value.cs.parity "None"}}selected="selected"{{/eq}}>None</option>
|
||||
<option value="Odd" {{#eq value.cs.parity "Odd"}}selected="selected"{{/eq}}>Odd</option>
|
||||
<option value="Even" {{#eq value.cs.parity "Even"}}selected="selected"{{/eq}}>Even</option>
|
||||
<option value="Mark" {{#eq value.cs.parity "Mark"}}selected="selected"{{/eq}}>Mark</option>
|
||||
<option value="Space" {{#eq value.cs.parity "Space"}}selected="selected"{{/eq}}>Space</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-6">
|
||||
<label for="rs232StopBits{{ unique }}">{{trans.stopBits}}:</label>
|
||||
<select name="rs232StopBits{{ unique }}" id="rs232StopBits{{ unique }}" class="rs232-stop-bits form-control">
|
||||
<option value="None" {{#eq value.cs.stopBits "None"}}selected="selected"{{/eq}}>None</option>
|
||||
<option value="One" {{#eq value.cs.stopBits "One"}}selected="selected"{{/eq}}>One</option>
|
||||
<option value="Two" {{#eq value.cs.stopBits "Two"}}selected="selected"{{/eq}}>Two</option>
|
||||
<option value="OnePointFive" {{#eq value.cs.stopBits "OnePointFive"}}selected="selected"{{/eq}}>OnePointFive</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-6">
|
||||
<label for="rs232Handshake{{ unique }}">{{trans.handshake}}:</label>
|
||||
<select name="rs232Handshake{{ unique }}" id="rs232Handshake{{ unique }}" class="rs232-handshake form-control">
|
||||
<option value="None" {{#eq value.cs.handshake "None"}}selected="selected"{{/eq}}>None</option>
|
||||
<option value="XOnXOff" {{#eq value.cs.handshake "XOnXOff"}}selected="selected"{{/eq}}>XOnXOff</option>
|
||||
<option value="RequestToSend" {{#eq value.cs.handshake "RequestToSend"}}selected="selected"{{/eq}}>RequestToSend</option>
|
||||
<option value="RequestToSendXOnXOff" {{#eq value.cs.handshake "RequestToSendXOnXOff"}}selected="selected"{{/eq}}>RequestToSendXOnXOff</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-6">
|
||||
<label for="rs232HexSupport{{ unique }}">{{trans.hexSupport}}:</label>
|
||||
<select name="rs232HexSupport{{ unique }}" id="rs232HexSupport{{ unique }}" class="rs232-hex-support form-control">
|
||||
<option value="0" {{#eq value.cs.hexSupport "0"}}selected="selected"{{/eq}}>0</option>
|
||||
<option value="1" {{#eq value.cs.hexSupport "1"}}selected="selected"{{/eq}}>1</option>
|
||||
<option value="default 0" {{#eq value.cs.hexSupport "default 0"}}selected="selected"{{/eq}}>default 0</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group-command form-group-rs232 command-group">
|
||||
<input class="form-control rs232-command" placeholder="{{trans.command}}" value="{{ value.command }}">
|
||||
</div>
|
||||
7
ui/src/templates/commandInput/tpv_led.hbs
Normal file
7
ui/src/templates/commandInput/tpv_led.hbs
Normal file
@@ -0,0 +1,7 @@
|
||||
<select name="tpv_ledCommand{{ unique }}" id="tpv_ledCommand{{ unique }}" class="tpv-led-command form-control form-control-inline" style="width:100%">
|
||||
<option value="off" {{#eq value "off"}}selected="selected"{{/eq}}>{{trans.off}}</option>
|
||||
<option value="red" {{#eq value "red"}}selected="selected"{{/eq}}>{{trans.red}}</option>
|
||||
<option value="green" {{#eq value "green"}}selected="selected"{{/eq}}>{{trans.green}}</option>
|
||||
<option value="blue" {{#eq value "blue"}}selected="selected"{{/eq}}>{{trans.blue}}</option>
|
||||
<option value="white" {{#eq value "white"}}selected="selected"{{/eq}}>{{trans.white}}</option>
|
||||
</select>
|
||||
22
ui/src/templates/confirmation-modal.hbs
Normal file
22
ui/src/templates/confirmation-modal.hbs
Normal file
@@ -0,0 +1,22 @@
|
||||
<div class="modal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">{{title}}</h5>
|
||||
{{#if buttons.cancel}}
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="{{buttons.cancel.label}}">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{message}}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
{{#each buttons}}
|
||||
<button type="button" class="btn extra {{class}}">{{label}}</button>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
23
ui/src/templates/context-menu-group.hbs
Normal file
23
ui/src/templates/context-menu-group.hbs
Normal file
@@ -0,0 +1,23 @@
|
||||
<div class="context-menu-overlay" oncontextmenu="return false">
|
||||
<div class="context-menu context-menu-group">
|
||||
<div class="main-button-container d-flex flex-column">
|
||||
{{#if canBeGrouped}}
|
||||
<div class="context-menu-btn groupElementsBtn" data-title="{{trans.groupElements}}" data-action="Group" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fas fa-chain"></i><span>{{trans.groupElements}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if canBeAddedToGroup}}
|
||||
<div class="context-menu-btn addElementsToGroupBtn" data-title="{{trans.addElementsToGroup}}" data-action="addToGroup" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fas fa-chain"></i><span>{{trans.addElementsToGroup}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if canBeDeleted}}
|
||||
<div class="context-menu-btn deleteGroupElementsBtn" data-title="{{trans.deleteGroupElements}}" data-action="Delete" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-trash"></i><span>{{trans.deleteGroupElements}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
135
ui/src/templates/context-menu.hbs
Normal file
135
ui/src/templates/context-menu.hbs
Normal file
@@ -0,0 +1,135 @@
|
||||
<div class="context-menu-overlay" oncontextmenu="return false">
|
||||
<div class="context-menu context-menu-{{type}}">
|
||||
{{#if isSortable}}
|
||||
<div class="sort-controls-container">
|
||||
<div class="context-menu-btn" data-title="{{trans.moveTopLeft}}" data-action="Move" data-action-type="topLeft" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fa fa-fast-backward"></i>
|
||||
</div>
|
||||
<div class="context-menu-btn" data-title="{{trans.moveLeft}}" data-action="Move" data-action-type="oneLeft" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fa fa-backward"></i>
|
||||
</div>
|
||||
<div class="context-menu-btn" data-title="{{trans.moveRight}}" data-action="Move" data-action-type="oneRight" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fa fa-forward"></i>
|
||||
</div>
|
||||
<div class="context-menu-btn" data-title="{{trans.moveTopRight}}" data-action="Move" data-action-type="topRight" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fa fa-fast-forward"></i>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="main-button-container d-flex flex-column">
|
||||
{{#if canChangeLayer}}
|
||||
<div class="context-menu-btn" data-title="{{trans.bringToFront}}" data-action="Layer" data-action-type="bringToFront" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fas fa-caret-square-up"></i><span>{{trans.bringToFront}}</span>
|
||||
</div>
|
||||
<div class="context-menu-btn" data-title="{{trans.bringForward}}" data-action="Layer" data-action-type="bringForward" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fas fa-caret-up"></i><span>{{trans.bringForward}}</span>
|
||||
</div>
|
||||
<div class="context-menu-btn" data-title="{{trans.sendBackwards}}" data-action="Layer" data-action-type="sendBackwards" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fas fa-caret-down"></i><span>{{trans.sendBackwards}}</span>
|
||||
</div>
|
||||
<div class="context-menu-btn" data-title="{{trans.sendToBack}}" data-action="Layer" data-action-type="sendToBack" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fas fa-caret-square-down"></i><span>{{trans.sendToBack}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if canUngroup}}
|
||||
<div class="context-menu-btn" data-title="{{trans.ungroupElements}}" data-action="Ungroup" data-toggle="tooltip" data-container=".context-menu">
|
||||
<i class="fas fa-chain-broken"></i><span>{{trans.ungroupElements}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isEditableWidget}}
|
||||
{{#if canAttachAudio}}
|
||||
<div class="context-menu-btn widget-property" data-title="{{trans.editAudio}}" data-property="Audio" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-audio"></i><span>{{trans.editAudio}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#eq editor "playlist"}}
|
||||
<div class="context-menu-btn widget-property" data-title="{{trans.editExpiry}}" data-property="Expiry" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-expiry"></i><span>{{trans.editExpiry}}</span>
|
||||
</div>
|
||||
|
||||
<div class="context-menu-btn widget-property" data-title="{{trans.editTransIn}}" data-property="Transition" data-property-type="in" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-transitionIn"></i><span>{{trans.editTransIn}}</span>
|
||||
</div>
|
||||
|
||||
<div class="context-menu-btn widget-property" data-title="{{trans.editTransOut}}" data-property="Transition" data-property-type="out" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-transitionOut"></i><span>{{trans.editTransOut}}</span>
|
||||
</div>
|
||||
{{/eq}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isPlaylist}}
|
||||
{{#unless isDynamicPlaylist}}
|
||||
<div class="context-menu-btn editPlaylistBtn" data-title="{{trans.editPlaylist}}" data-action="editPlaylist" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-edit"></i><span>{{trans.editPlaylist}}</span>
|
||||
</div>
|
||||
|
||||
{{#if playlistCanBeConverted}}
|
||||
<div class="context-menu-btn convertPlaylistButton" data-title="{{trans.convertPlaylistHelpText}}" data-action="convertPlaylist" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-refresh"></i><span>{{trans.convertPlaylist}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isFrameOrZone}}
|
||||
{{#if widget.isPermissionsModifiable}}
|
||||
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editPermissions}}" data-property="PermissionsWidget" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-permissions"></i><span>{{trans.editPermissions}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{else if isPlaylist}}
|
||||
{{#if isPermissionsModifiable}}
|
||||
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editPlaylistPermissions}}" data-property="Permissions" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-permissions"></i><span>{{trans.editPlaylistPermissions}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{else if isElementBased}}
|
||||
{{#if elementWidget.isPermissionsModifiable}}
|
||||
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editWidgetPermissions}}" data-property="PermissionsCanvasWidget" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-permissions"></i><span>{{trans.editWidgetPermissions}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{#if isPermissionsModifiable}}
|
||||
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editPermissions}}" data-property="Permissions" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="tool-icon-permissions"></i><span>{{trans.editPermissions}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if canBeCopied}}
|
||||
<div class="context-menu-btn copyBtn" data-title="{{trans.copy}}" data-action="Copy" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-copy"></i><span>{{trans.copy}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if canHaveNewConfig}}
|
||||
<div class="context-menu-btn newConfigBtn" data-title="{{trans.newConfig}}" data-action="newConfig" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-plus-square"></i><span>{{trans.newConfig}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if canEditText}}
|
||||
<div class="context-menu-btn editText" data-title="{{trans.editText}}" data-action="editText" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-edit"></i><span>{{trans.editText}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isFrameOrZone}}
|
||||
<div class="context-menu-btn editFrameBtn" data-title="{{trans.options}}" data-action="editFrame" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-cog"></i><span>{{trans.options}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if isDeletable}}
|
||||
<div class="context-menu-btn deleteBtn" data-title="{{trans.delete}}" data-action="Delete" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
|
||||
<i class="fa fa-trash"></i><span>{{trans.delete}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
30
ui/src/templates/dataTable/buttons.hbs
Normal file
30
ui/src/templates/dataTable/buttons.hbs
Normal file
@@ -0,0 +1,30 @@
|
||||
<div class="btn-group pull-right dropdown-menu-container" title="{{translations.rowMenu}}">
|
||||
<button class="btn btn-white dropdown-toggle" data-toggle="dropdown"></button>
|
||||
<div class="dropdown-menu dropdown-menu-right" id="dropdown-menu-right-container">
|
||||
{{#each buttons}}
|
||||
{{#if divider}}
|
||||
<div class="dropdown-divider"></div>
|
||||
{{else multiSelectOnly}}
|
||||
<a {{#each dataAttributes}} data-{{ name }}="{{ value }}" {{/each}}
|
||||
class="dropdown-item multi-select-button {{#if class}}{{ class }}{{else}}XiboMultiHiddenButton{{/if}} {{ id }}"
|
||||
style="display: none;" tabindex="-1" href="#">
|
||||
{{ text }}
|
||||
</a>
|
||||
{{else}}
|
||||
{{#if external}}
|
||||
<a class="dropdown-item {{ id }}" id="{{ id }}" tabindex="-1" data-custom-handler="{{ onclick }}"
|
||||
data-custom-handler-url="{{ onclickParam }}" target="{{ linkType }}" href="{{ url }}" {{#if
|
||||
title}} title="{{title}}" {{/if}}>{{ text }}</a>
|
||||
{{/if}}
|
||||
|
||||
{{#unless external}}
|
||||
<a {{#each dataAttributes}} data-{{ name }}="{{ value }}" {{/each}}
|
||||
class="dropdown-item {{#if multi-select}}multi-select-button{{/if}} {{#if class}}{{ class }}{{else}}XiboFormButton{{/if}} {{ id }}"
|
||||
href="{{ url }}" {{#if title}} title="{{title}}" {{/if}} tabindex="-1" href="#">
|
||||
{{ text }}
|
||||
</a>
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
17
ui/src/templates/dataTable/multiselect-button.hbs
Normal file
17
ui/src/templates/dataTable/multiselect-button.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
<div class="btn-group dropup mr-2"></div>
|
||||
<button class="btn btn-primary select-all" data-toggle="selectAll">
|
||||
{{ selectAll }}
|
||||
</button>
|
||||
<button class="btn btn-white dropdown-toggle" data-toggle="dropdown">
|
||||
{{ withSelected }}
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
{{#each buttons}}
|
||||
{{#if divider}}
|
||||
<div class="dropdown-divider"></div>
|
||||
{{else}}
|
||||
<a class="dropdown-item XiboMultiSelectFormButton" data-custom-handler="{{ customHandler }}" data-custom-handler-url="{{ customHandlerUrl }}" data-button-id="{{ id }}" data-grid-id="{{ gridId }}" data-content-type="{{ contentType }}" data-content-id-name="{{ contentIdName }}" tabindex="-1" href="#">{{ text }}</a>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
19
ui/src/templates/display/status-window.hbs
Normal file
19
ui/src/templates/display/status-window.hbs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div style="margin-top:5px; max-height: 400px; overflow-y: auto;"></div>
|
||||
{{#if data}}
|
||||
{{trans.playerStatusWindow}}:
|
||||
{{#eq type "android"}}
|
||||
<div class="card p-3 mb-3 bg-light">
|
||||
<span>{{{data}}}</span>
|
||||
</div>
|
||||
{{/eq}}
|
||||
{{#neq type "android"}}
|
||||
<div class="card p-3 mb-3 bg-light">
|
||||
<ul>
|
||||
{{#each data as |value key|}}
|
||||
<li>{{key}}: {{value}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/neq}}
|
||||
{{/if}}
|
||||
</div>
|
||||
19
ui/src/templates/fallback-data-content.hbs
Normal file
19
ui/src/templates/fallback-data-content.hbs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="fallback-data-content">
|
||||
{{> forms/inputs/message title=trans.message }}
|
||||
|
||||
{{> forms/inputs/dropdown value=showFallback id="showFallback"
|
||||
options=(arr
|
||||
(obj name='never' title=trans.never)
|
||||
(obj name='always' title=trans.always)
|
||||
(obj name='empty' title=trans.empty)
|
||||
(obj name='error' title=trans.error)
|
||||
)
|
||||
optionsTitle="title" optionsValue="name"
|
||||
title=trans.fallbackTypeTitle helpText=trans.fallbackTypeHelpText }}
|
||||
|
||||
{{> forms/button action="add-new-record" type="btn-block btn-primary mb-2" name=trans.addNewRecord }}
|
||||
|
||||
<div class="fallback-data-records">
|
||||
{{! Fallback records }}
|
||||
</div>
|
||||
</div>
|
||||
12
ui/src/templates/fallback-data-record-preview.hbs
Normal file
12
ui/src/templates/fallback-data-record-preview.hbs
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="fallback-data-record-preview" data-id="{{field.id}}">
|
||||
<div class="fallback-data-record-preview-title" title="{{field.title}} ({{field.type}})">
|
||||
{{field.title}} ({{field.type}})
|
||||
</div>
|
||||
<div class="fallback-data-record-preview-value" title="{{data}}">
|
||||
{{#if data}}
|
||||
{{data}}
|
||||
{{else}}
|
||||
{{trans.noData}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
13
ui/src/templates/fallback-data-record.hbs
Normal file
13
ui/src/templates/fallback-data-record.hbs
Normal file
@@ -0,0 +1,13 @@
|
||||
<div class="fallback-data-record">
|
||||
<div class="fallback-data-record-fields">
|
||||
{{! Fallback record fields }}
|
||||
</div>
|
||||
<div class="fallback-data-record-previews">
|
||||
{{! Fallback record fields }}
|
||||
</div>
|
||||
<div class="fallback-data-record-buttons">
|
||||
{{> forms/button action="delete-record" type="btn-outline-danger fb-btn-delete" name=trans.deleteRecord }}
|
||||
{{> forms/button action="edit-record" type="btn-outline-primary fb-btn-edit" name=trans.editRecord }}
|
||||
{{> forms/button action="save-record" type="btn-success fb-btn-save" name=trans.saveRecord }}
|
||||
</div>
|
||||
</div>
|
||||
24
ui/src/templates/folder-tree.hbs
Normal file
24
ui/src/templates/folder-tree.hbs
Normal file
@@ -0,0 +1,24 @@
|
||||
<!-- Modal -->
|
||||
<div id="{{ modal }}" class="modal fade inner-modal" role="dialog">
|
||||
<div class="modal-dialog modal-sm" style="width:450px;">
|
||||
<!-- Modal content-->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{trans.selectFolder}}</h4>
|
||||
<button type="button" class="close btnCloseInnerModal">×</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group card p-3 mb-3 bg-light">
|
||||
<input id="jstree-search-form" class="form-control" type="text" placeholder="{{trans.search}}">
|
||||
<div class="folder-search-no-results d-none">
|
||||
<p>{{trans.noFolderMatch}}</p>
|
||||
</div>
|
||||
<div id="{{ container }}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-white btnCloseInnerModal">{{trans.done}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
9
ui/src/templates/form-helpers-chart-colors.hbs
Normal file
9
ui/src/templates/form-helpers-chart-colors.hbs
Normal file
@@ -0,0 +1,9 @@
|
||||
<div class="form-group row mb-0">
|
||||
<label class="col-sm-1 control-label" for="seriesColor[]">{{ title }}</label>
|
||||
<div class="col-sm-4">
|
||||
<input class="form-control color-picker" name="seriesColor[]" value="{{ color }}" />
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
23
ui/src/templates/form-helpers-chart-graph-config.hbs
Normal file
23
ui/src/templates/form-helpers-chart-graph-config.hbs
Normal file
@@ -0,0 +1,23 @@
|
||||
<div class="form-group row mb-0">
|
||||
<label class="col-sm-1 control-label" for="columnType[]">{{ title }}</label>
|
||||
<div class="col-sm-4">
|
||||
<label for="columnType[]">
|
||||
<select class="form-control" name="columnType[]">
|
||||
{{#each columnTypeOptions}}
|
||||
<option value="{{ id }}" {{#eq id ../columnType}}selected{{/eq}}>{{ value }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<select class="form-control" name="dataSetColumnId[]">
|
||||
<option value=""></option>
|
||||
{{#each columns}}
|
||||
<option value="{{ dataSetColumnId }}" {{#eq dataSetColumnId ../dataSetColumnId}}selected{{/eq}}>{{ heading }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
28
ui/src/templates/form-helpers-data-set-filter-clause.hbs
Normal file
28
ui/src/templates/form-helpers-data-set-filter-clause.hbs
Normal file
@@ -0,0 +1,28 @@
|
||||
<div class="filter-clause-row flex-nowrap form-inline p-1">
|
||||
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
<div class="form-group {{#eq title "1"}}d-none{{/eq}}">
|
||||
<select class="form-control filter-clause-operator" name="filterClauseOperator[]">
|
||||
{{#each filterOperatorOptions}}
|
||||
<option value="{{ id }}" {{#eq id ../filterClauseOperator}}selected{{/eq}}>{{ value }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select class="form-control filter-clause" name="filterClause[]">
|
||||
<option value=""></option>
|
||||
{{#each columns}}
|
||||
<option value="{{ heading }}" {{#eq heading ../filterClause}}selected{{/eq}}>{{ heading }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select class="form-control filter-clause-criteria" name="filterClauseCriteria[]">
|
||||
{{#each filterOptions}}
|
||||
<option value="{{ id }}" {{#eq id ../filterClauseCriteria}}selected{{/eq}}>{{ value }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="form-control filter-clause-value" name="filterClauseValue[]" type="text" value="{{ filterClauseValue }}" />
|
||||
</div>
|
||||
</div>
|
||||
17
ui/src/templates/form-helpers-data-set-order-clause.hbs
Normal file
17
ui/src/templates/form-helpers-data-set-order-clause.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
<div class="order-clause-row flex-nowrap form-inline justify-content-between p-1">
|
||||
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
<div class="form-group">
|
||||
<select class="form-control order-clause" name="orderClause[]">
|
||||
<option value=""></option>
|
||||
{{#each columns}}
|
||||
<option value="{{ heading }}" {{#eq heading ../orderClause}} selected{{/eq}}>{{ heading }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select class="form-control order-clause-direction" name="orderClauseDirection[]">
|
||||
<option value="ASC" {{#if orderClauseAsc}}selected{{/if}}>{{ ascTitle }}</option>
|
||||
<option value="DESC" {{#if orderClauseDesc}}selected{{/if}}>{{ descTitle }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
13
ui/src/templates/form-helpers-menuboard-product.hbs
Normal file
13
ui/src/templates/form-helpers-menuboard-product.hbs
Normal file
@@ -0,0 +1,13 @@
|
||||
<div class="form-group row form-product-options">
|
||||
<div class="form-group col-xl-5">
|
||||
<input class="form-control" name="productOptions[]" type="text" value="{{ optionName }}" placeholder="Option Name">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-xl-5">
|
||||
<input class="form-control" name="productValues[]" type="number" step="0.01" value="{{ optionValue }}" placeholder="Option Value">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-xl-2 px-2 px-xl-0">
|
||||
<button class="btn btn-success pull-right"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
20
ui/src/templates/form-helpers-sub-playlist-container.hbs
Normal file
20
ui/src/templates/form-helpers-sub-playlist-container.hbs
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="row-special d-inline-flex flex-nowrap p-1 subplaylist-items-header">
|
||||
<div class="subplaylist-id-container subplaylist-id-container-header">
|
||||
{{ trans.playlists }}
|
||||
</div>
|
||||
<div class="subplaylist-spots-container" title="{{ trans.spotsHelp }}" data-toggle="tooltip" data-placement="top">
|
||||
{{ trans.spots }}
|
||||
</div>
|
||||
<div class="subplaylist-spots-length-container" title="{{ trans.spotsLengthHelp }}" data-toggle="tooltip" data-placement="top">
|
||||
{{ trans.spotsLength }}
|
||||
</div>
|
||||
<div class="subplaylist-spots-fill-container" title="{{ trans.spotsFillHelp }}" data-toggle="tooltip" data-placement="top">
|
||||
{{ trans.spotsFill }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="subplaylist-items-content">
|
||||
<!-- Subplaylist items will be added here -->
|
||||
</div>
|
||||
<div class="subplaylist-items-footer">
|
||||
<button class="btn btn-success w-75 subplaylist-item-btn"><i class="fa fa-plus"></i></button>
|
||||
</div>
|
||||
22
ui/src/templates/form-helpers-sub-playlist-form.hbs
Normal file
22
ui/src/templates/form-helpers-sub-playlist-form.hbs
Normal file
@@ -0,0 +1,22 @@
|
||||
<div class="subplaylist-item-row form-inline flex-nowrap p-1">
|
||||
<div class="btn subplaylist-item-sort"><i class="fa fa-arrows-v"></i></div>
|
||||
<button type="button" class="btn btn-white subplaylist-item-btn"><i class="fa fa-minus"></i></button>
|
||||
<div class="form-group subplaylist-id-container">
|
||||
<select class="form-control subplaylist-id" name="playlistId[]" data-field-id="{{playlistId}}">
|
||||
<option value=""></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group subplaylist-spots-container">
|
||||
<input class="form-control subplaylist-spots" name="spots[]" type="number" value="{{ spots }}" />
|
||||
</div>
|
||||
<div class="form-group subplaylist-spots-length-container">
|
||||
<input class="form-control subplaylist-spots-length" name="spotLength[]" type="number" value="{{ spotLength }}" />
|
||||
</div>
|
||||
<div class="form-group subplaylist-spots-fill-container">
|
||||
<select class="form-control subplaylist-spots-fill" name="spotFill[]">
|
||||
<option value="repeat" {{#eq "repeat" spotFill}}selected{{/eq}} data-template-result="{{ repeatHelpText }}">{{ repeatTitle }}</option>
|
||||
<option value="fill" {{#eq "fill" spotFill}}selected{{/eq}} data-template-result="{{ fillHelpText }}">{{ fillTitle }}</option>
|
||||
<option value="pad" {{#eq "pad" spotFill}}selected{{/eq}} data-template-result="{{ padHelpText }}">{{ padTitle }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
8
ui/src/templates/form-helpers-twitter-metro-colors.hbs
Normal file
8
ui/src/templates/form-helpers-twitter-metro-colors.hbs
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="form-group row form-colors mb-0">
|
||||
<div class="col-sm-10 pl-0">
|
||||
{{> forms/inputs/color id=colorId name="color[]" value=value customClass="custom-color" }}
|
||||
</div>
|
||||
<div class="col-sm-2">
|
||||
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
23
ui/src/templates/form-helpers-world-clock.hbs
Normal file
23
ui/src/templates/form-helpers-world-clock.hbs
Normal file
@@ -0,0 +1,23 @@
|
||||
<div class="form-clock row mb-2 p-1 alert alert-info">
|
||||
<div class="form-group localSelect w-75">
|
||||
<select class="form-control">
|
||||
<option value selected>Timezone</option>
|
||||
{{#each timezones}}
|
||||
<option value="{{ id }}" {{#eq id ../clockTimezone}}selected{{/eq}}>{{ value }}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group w-25">
|
||||
<button class="btn btn-primary pull-right"><i class="fa {{ buttonGlyph }}"></i></button>
|
||||
</div>
|
||||
|
||||
<div class="form-group w-50">
|
||||
<input class="form-control clockLabel" type="text" value="{{ clockLabel }}" placeholder="Label" />
|
||||
</div>
|
||||
|
||||
<div class="form-group w-50">
|
||||
<input type="checkbox" class="clockHighlight" name="clockHighlight" {{#if clockHighlight}}checked{{/if}}>
|
||||
<label for="clockHighlight">Highlight?</label>
|
||||
</div>
|
||||
</div>
|
||||
1
ui/src/templates/forms/button.hbs
Normal file
1
ui/src/templates/forms/button.hbs
Normal file
@@ -0,0 +1 @@
|
||||
<button type="button" id="{{id}}" data-action="{{action}}" data-sub-action="{{subAction}}" class="properties-panel-btn xibo-form-btn btn {{type}}">{{name}}</button>
|
||||
18
ui/src/templates/forms/group.hbs
Normal file
18
ui/src/templates/forms/group.hbs
Normal file
@@ -0,0 +1,18 @@
|
||||
<div id="{{id}}" class="panel-group" data-group="{{id}}">
|
||||
<div class="panel-heading" data-toggle="collapse" href="#{{id}}-collapse" aria-expanded="{{#if expanded}}true{{else}}false{{/if}}" aria-controls="{{id}}-collapse">
|
||||
<h4 class="panel-title">
|
||||
<i class="fa fa-chevron-down"></i>
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
<span>{{title}}</span>
|
||||
</h4>
|
||||
{{#if helpText}}
|
||||
<div class="help-block text-muted">{{helpText}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div id="{{id}}-collapse" class="panel-collapse collapse {{#if expanded}}show{{/if}}">
|
||||
<div class="panel-body field-container">
|
||||
<!-- Fields -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
7
ui/src/templates/forms/inputs/add-ons/customPopOver.hbs
Normal file
7
ui/src/templates/forms/inputs/add-ons/customPopOver.hbs
Normal file
@@ -0,0 +1,7 @@
|
||||
<i class="fa fa-info-circle input-info tooltip-always-on"
|
||||
data-toggle="popover"
|
||||
data-trigger="hover"
|
||||
data-placement="bottom"
|
||||
data-html="true"
|
||||
data-content='{{content}}'
|
||||
>
|
||||
@@ -0,0 +1,6 @@
|
||||
<span data-placement="bottom"
|
||||
data-toggle="popover"
|
||||
data-trigger="hover"
|
||||
data-html="true"
|
||||
data-container="body"
|
||||
data-content="{{content}}"><i class="fa fa-info-circle"></i></span>
|
||||
@@ -0,0 +1,6 @@
|
||||
<span class='media'>
|
||||
<span class='media-left mr-2'>
|
||||
<img style='max-width: 80px; max-height: 60px;' src='{{image}}' />
|
||||
</span>
|
||||
<span class='media-body'>{{title}}</span>
|
||||
</span>
|
||||
5
ui/src/templates/forms/inputs/add-ons/helpText.hbs
Normal file
5
ui/src/templates/forms/inputs/add-ons/helpText.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
<i class="fa fa-question-circle input-info tooltip-always-on xibo-help-text"
|
||||
data-toggle="tooltip"
|
||||
data-placement="top"
|
||||
title="{{helpText}}">
|
||||
</i>
|
||||
@@ -0,0 +1,16 @@
|
||||
<i class="fa fa-warning input-warning tooltip-always-on"
|
||||
data-toggle="popover"
|
||||
data-trigger="hover"
|
||||
data-placement="left"
|
||||
data-html="true"
|
||||
data-content='<div class="player-compatibility-helper">
|
||||
{{#if message }}<div class="message">{{ message }}</div>{{/if}}
|
||||
<ul>
|
||||
<li {{#neq android null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/android.png" alt="Android" class="os-icon"></div>{{#if android}}<span class="desc">{{ android }}</span>{{/if}}</li>
|
||||
<li {{#neq linux null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/linux.png" alt="Linux" class="os-icon"></div>{{#if linux}}<span class="desc">{{ linux }}</span>{{/if}}</li>
|
||||
<li {{#neq tizen null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/tizen.png" alt="Tizen" class="os-icon"></div>{{#if tizen}}<span class="desc">{{ tizen }}</span>{{/if}}</li>
|
||||
<li {{#neq webos null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/webos.png" alt="webOS" class="os-icon"></div>{{#if webos}}<span class="desc">{{ webos }}</span>{{/if}}</li>
|
||||
<li {{#neq windows null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/windows.png" alt="Windows" class="os-icon"></div>{{#if windows}}<span class="desc">{{ windows }}</span>{{/if}}</li>
|
||||
<li {{#neq chromeos null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/chromeos.png" alt="ChromeOS" class="os-icon"></div>{{#if chromeos}}<span class="desc">{{ chromeos }}</span>{{/if}}</li>
|
||||
</ul>
|
||||
</div>'>
|
||||
@@ -0,0 +1,9 @@
|
||||
<div class="form-editor-controls rich-text-dimensions-control">
|
||||
<label class="font-weight-bold control-label m-0">{{trans.widgetDimensions }}</label>
|
||||
<div class="form-group form-group-width">
|
||||
<input type="number" class="form-control text-editor-width" id="editorWidth" placeholder="{{trans.width }}" title="{{trans.width }}" value="{{dimensions.width}}">
|
||||
</div>
|
||||
<div class="form-group form-group-height">
|
||||
<input type="number" class="form-control text-editor-height" id="editorHeight" placeholder="{{trans.height }}" title="{{trans.height }}" value="{{dimensions.height}}">
|
||||
</div>
|
||||
</div>
|
||||
36
ui/src/templates/forms/inputs/buttonSwitch.hbs
Normal file
36
ui/src/templates/forms/inputs/buttonSwitch.hbs
Normal file
@@ -0,0 +1,36 @@
|
||||
<div class="form-group xibo-form-input button-switch-input-group
|
||||
{{customClass}}
|
||||
{{variant}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
>
|
||||
<label for="{{#unless forceId}}input_{{/unless}}{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{> add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<input id="{{#unless forceId}}input_{{/unless}}{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}" type="hidden"/>
|
||||
<div class="btn-group btn-block" role="group"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
{{#if readonly}}readonly{{/if}}
|
||||
>
|
||||
{{!-- Set default property values --}}
|
||||
{{#unless optionsValue}}
|
||||
{{set "optionsValue" "name"}}
|
||||
{{/unless}}
|
||||
{{#unless optionsTitle}}
|
||||
{{set "optionsTitle" "title"}}
|
||||
{{/unless}}
|
||||
|
||||
{{!-- Render options --}}
|
||||
{{#each options}}
|
||||
<button type="button" class="btn btn-sm {{#eq (lookup this ../optionsValue) ../value}}selected{{/eq}}"
|
||||
data-value="{{lookup this ../optionsValue}}"
|
||||
>{{lookup this ../optionsTitle}}</button>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
3
ui/src/templates/forms/inputs/canvasWidgetsSelector.hbs
Normal file
3
ui/src/templates/forms/inputs/canvasWidgetsSelector.hbs
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="canvas-widget-control mb-2">
|
||||
{{> dropdown id="canvasWidgetControl" value=widgetId title=trans.canvasWidgets customClass="canvas-widget-control-dropdown" options=widgets optionsTitle="widgetName" optionsValue="widgetId" helpText=trans.canvasWidgetsHelp }}
|
||||
</div>
|
||||
17
ui/src/templates/forms/inputs/checkbox.hbs
Normal file
17
ui/src/templates/forms/inputs/checkbox.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
<div class="form-check pb-3 xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
>
|
||||
<input type="checkbox" class="form-check-input" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" {{#eq (number value) 1}}checked="checked"{{/eq}}
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>
|
||||
<label for="input_{{id}}" class="form-check-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container pt-0">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
25
ui/src/templates/forms/inputs/code.hbs
Normal file
25
ui/src/templates/forms/inputs/code.hbs
Normal file
@@ -0,0 +1,25 @@
|
||||
<div class="form-group code-input-group xibo-code-input xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<textarea class="form-control code-input d-none" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" rows="{{rows}}" data-code-type="{{variant}}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
>{{value}}</textarea>
|
||||
<div class="code-input-editor-container non-scroll">
|
||||
<div class="code-input-editor-scrollable">
|
||||
<div class="code-input-editor"></div>
|
||||
</div>
|
||||
<button type="button" class="code-input-fs-btn btn btn-sm btn-white">
|
||||
<i class="fas fa-arrows-alt hide-on-code-fs"></i>
|
||||
<i class="fas fa-compress-arrows-alt show-on-code-fs"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
27
ui/src/templates/forms/inputs/color.hbs
Normal file
27
ui/src/templates/forms/inputs/color.hbs
Normal file
@@ -0,0 +1,27 @@
|
||||
<div class="form-group colorpicker-form-element colorpicker-input xibo-form-input {{customClass}}"
|
||||
{{#if default}}data-default="{{default}}"{{/if}}
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
{{#if colorFormat}}data-color-format="{{colorFormat}}"{{/if}}
|
||||
>
|
||||
{{#if title}}
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
{{/if}}
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<i class="input-group-text input-group-addon" id="{{id}}_label"></i>
|
||||
</div>
|
||||
<input type="text" class="form-control" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>
|
||||
</div>
|
||||
<div class="picker-container"><!-- Container for the picker dropdown --></div>
|
||||
</div>
|
||||
35
ui/src/templates/forms/inputs/colorGradient.hbs
Normal file
35
ui/src/templates/forms/inputs/colorGradient.hbs
Normal file
@@ -0,0 +1,35 @@
|
||||
<div class="form-group color-gradient {{customClass}} xibo-form-input"
|
||||
{{#if default}}data-default="{{default}}"{{/if}}
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
{{#if colorFormat}}data-color-format="{{colorFormat}}"{{/if}}
|
||||
>
|
||||
{{#if title}}
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
{{/if}}
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="color-gradient-colours">
|
||||
{{> color id='gradientColor1' name="" title=trans.colorGradient.gradientColor1}}
|
||||
{{> color id='gradientColor2' name="" title=trans.colorGradient.gradientColor2}}
|
||||
</div>
|
||||
|
||||
{{> dropdown id='gradientType' name="" title=trans.colorGradient.gradientType
|
||||
optionsTitle="title" optionsValue="name"
|
||||
options=(arr
|
||||
(obj name='linear' title=trans.colorGradient.gradientTypeLinear)
|
||||
(obj name='radial' title=trans.colorGradient.gradientTypeRadial)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
|
||||
<div class="color-gradient-angle">
|
||||
{{> number id='gradientAngle' name="" title=trans.colorGradient.gradientAngle}}
|
||||
</div>
|
||||
|
||||
{{> hidden name=name customClass="color-gradient-hidden" value=value }}
|
||||
</div>
|
||||
1
ui/src/templates/forms/inputs/commandBuilder.hbs
Normal file
1
ui/src/templates/forms/inputs/commandBuilder.hbs
Normal file
@@ -0,0 +1 @@
|
||||
{{> text id=id name=name value=value title=title customClass="XiboCommand xibo-command-builder" helpText=helpText}}
|
||||
17
ui/src/templates/forms/inputs/commandSelector.hbs
Normal file
17
ui/src/templates/forms/inputs/commandSelector.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='width' value='100%')
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
(obj name='search-url' value=commandSearchUrl)
|
||||
(obj name='search-term' value='command')
|
||||
(obj name='id-property' value='code')
|
||||
(obj name='text-property' value='command')
|
||||
(obj name='selected-property' value='selected')
|
||||
(obj name='initial-value' value=initialValue)
|
||||
(obj name='initial-key' value=initialKey)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
28
ui/src/templates/forms/inputs/connectorProperties.hbs
Normal file
28
ui/src/templates/forms/inputs/connectorProperties.hbs
Normal file
@@ -0,0 +1,28 @@
|
||||
{{#if isAutoComplete }}
|
||||
{{> text id=id name=name value=value title=title helpText=helpText
|
||||
customData=(arr
|
||||
(obj name='role' value='panelTagsInput')
|
||||
(obj name='auto-complete-url' value=connectorPropertiesUrl)
|
||||
(obj name='search-term-key' value=name)
|
||||
)
|
||||
}}
|
||||
{{else}}
|
||||
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='width' value='100%')
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
(obj name='search-url' value=connectorPropertiesUrl)
|
||||
(obj name='search-term' value='name')
|
||||
(obj name='id-property' value='type')
|
||||
(obj name='text-property' value='name')
|
||||
(obj name='selected-property' value='selected')
|
||||
(obj name='initial-value' value=initialValue)
|
||||
(obj name='initial-key' value=initialKey)
|
||||
(obj name='display-all' value=true)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
{{/if}}
|
||||
9
ui/src/templates/forms/inputs/custom.hbs
Normal file
9
ui/src/templates/forms/inputs/custom.hbs
Normal file
@@ -0,0 +1,9 @@
|
||||
<div class="xibo-form-input custom-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
>
|
||||
<input type="hidden" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}" />
|
||||
</div>
|
||||
26
ui/src/templates/forms/inputs/datasetColStyle.hbs
Normal file
26
ui/src/templates/forms/inputs/datasetColStyle.hbs
Normal file
@@ -0,0 +1,26 @@
|
||||
<div class="dataset-col-style pt-2 my-3"
|
||||
data-component-id="{{id}}"
|
||||
>
|
||||
<div class="dataset-col-style-title">{{name}}</div>
|
||||
<div class="dataset-col-style-properties" id="{{concat "dataset-col-style-properties-" id}}" data-type="{{type}}">
|
||||
{{#eq type "image"}}
|
||||
{{> number value=value.opacity name=(concat 'style_' id '_opacity') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='opacity')) title=trans.form.opacity}}
|
||||
{{> number value=value.width name=(concat 'style_' id '_width') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='width')) title=trans.form.width}}
|
||||
{{> number value=value.height name=(concat 'style_' id '_height') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='height')) title=trans.form.height}}
|
||||
{{else}}
|
||||
{{> number value=value.fontSize name=(concat 'style_' id '_fontSize') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='fontSize')) title=trans.form.fontSize}}
|
||||
{{> color value=value.fontColor name=(concat 'style_' id '_fontColor') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='fontColor')) title=trans.form.fontColor}}
|
||||
{{> dropdown value=value.fontFamily name=(concat 'style_' id '_fontFamily') title=trans.form.fontFamily customClass="font-selector dataset-col-style-property"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='search-url' value=fontsSearchUrl)
|
||||
(obj name='value' value=value.fontFamily)
|
||||
(obj name='dataset-col-style-input' value='fontFamily')
|
||||
)
|
||||
}}
|
||||
{{> checkbox value=value.bold name=(concat 'style_' id '_bold') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='bold')) title=trans.form.bold}}
|
||||
{{> checkbox value=value.italics name=(concat 'style_' id '_italics') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='italics')) title=trans.form.italics}}
|
||||
{{> checkbox value=value.underline name=(concat 'style_' id '_underline') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='underline')) title=trans.form.underline}}
|
||||
{{/eq}}
|
||||
</div>
|
||||
</div>
|
||||
19
ui/src/templates/forms/inputs/datasetColStyleSelector.hbs
Normal file
19
ui/src/templates/forms/inputs/datasetColStyleSelector.hbs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="xibo-form-input dataset-column-style-selector pb-2"
|
||||
data-select-id="{{id}}"
|
||||
>
|
||||
<div class="connectedlist w-50">
|
||||
<p class="text-info text-center col-out-title mb-1">{{trans.colAvailable}}1</p>
|
||||
<ul id="colsOut" class="connectedSortable m-auto text-center">
|
||||
</ul>
|
||||
</div>
|
||||
<div class="connectedlist w-50">
|
||||
<p class="text-info text-center col-in-title mb-1">{{trans.colSelected}}2</p>
|
||||
<ul id="colsIn" class="connectedSortable m-auto text-center">
|
||||
</ul>
|
||||
</div>
|
||||
{{> hidden id=id name=name value=value }}
|
||||
|
||||
<div class="dataset-column-styles">
|
||||
<!-- COL STYLES -->
|
||||
</div>
|
||||
</div>
|
||||
15
ui/src/templates/forms/inputs/datasetColumnSelector.hbs
Normal file
15
ui/src/templates/forms/inputs/datasetColumnSelector.hbs
Normal file
@@ -0,0 +1,15 @@
|
||||
<div class="xibo-form-input dataset-column-selector pb-2"
|
||||
data-select-id="{{id}}"
|
||||
>
|
||||
<div class="connectedlist w-50">
|
||||
<p class="text-info text-center col-out-title mb-1">{{trans.colAvailable}}1</p>
|
||||
<ul id="columnsOut" class="connectedSortable m-auto text-center">
|
||||
</ul>
|
||||
</div>
|
||||
<div class="connectedlist w-50">
|
||||
<p class="text-info text-center col-in-title mb-1">{{trans.colSelected}}2</p>
|
||||
<ul id="columnsIn" class="connectedSortable m-auto text-center">
|
||||
</ul>
|
||||
</div>
|
||||
{{> hidden id=id name=name value=value }}
|
||||
</div>
|
||||
4
ui/src/templates/forms/inputs/datasetField.hbs
Normal file
4
ui/src/templates/forms/inputs/datasetField.hbs
Normal file
@@ -0,0 +1,4 @@
|
||||
{{> dropdown id=id name=name value=value title=title customClass="dataset-field-selector"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
helpText=helpText
|
||||
}}
|
||||
6
ui/src/templates/forms/inputs/datasetFilter.hbs
Normal file
6
ui/src/templates/forms/inputs/datasetFilter.hbs
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="xibo-form-input dataset-filter-clause"
|
||||
data-filter-id="{{id}}"
|
||||
>
|
||||
<div class="filter-clause-container alert alert-primary p-2 overflow-auto"></div>
|
||||
{{> hidden id=id name=name value=value }}
|
||||
</div>
|
||||
6
ui/src/templates/forms/inputs/datasetOrder.hbs
Normal file
6
ui/src/templates/forms/inputs/datasetOrder.hbs
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="xibo-form-input dataset-order-clause"
|
||||
data-order-id="{{id}}"
|
||||
>
|
||||
<div class="order-clause-container alert alert-primary p-2 overflow-auto"></div>
|
||||
{{> hidden id=id name=name value=value }}
|
||||
</div>
|
||||
17
ui/src/templates/forms/inputs/datasetSelector.hbs
Normal file
17
ui/src/templates/forms/inputs/datasetSelector.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='width' value='100%')
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
(obj name='search-url' value=datasetSearchUrl)
|
||||
(obj name='search-term' value='dataSet')
|
||||
(obj name='id-property' value='dataSetId')
|
||||
(obj name='text-property' value='dataSet')
|
||||
(obj name='selected-property' value='selected')
|
||||
(obj name='initial-value' value=initialValue)
|
||||
(obj name='initial-key' value=initialKey)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
20
ui/src/templates/forms/inputs/date.hbs
Normal file
20
ui/src/templates/forms/inputs/date.hbs
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="form-group xibo-form-input date-input-group {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control dateControl {{variant}}" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}" {{#if format }}data-custom-format="{{ format }}"{{/if}}
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>
|
||||
<span class="input-group-append input-group-addon input-group-text date-clear-button d-none" role="button"><i
|
||||
class="fa fa-times"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
5
ui/src/templates/forms/inputs/divider.hbs
Normal file
5
ui/src/templates/forms/inputs/divider.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
>
|
||||
<hr id="input_{{id}}" class="divider ml-5 mr-5" ></hr>
|
||||
</div>
|
||||
43
ui/src/templates/forms/inputs/dropdown.hbs
Normal file
43
ui/src/templates/forms/inputs/dropdown.hbs
Normal file
@@ -0,0 +1,43 @@
|
||||
<div class="form-group xibo-form-input dropdown-input-group
|
||||
{{#if selectType}}{{selectType}}{{else}}localSelect{{/if}}
|
||||
{{customClass}}
|
||||
{{variant}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
>
|
||||
<label for="{{#unless forceId}}input_{{/unless}}{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<select class="form-control" id="{{#unless forceId}}input_{{/unless}}{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}"
|
||||
{{#if multiple}}multiple{{/if}}
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
{{#if readonly}}readonly{{/if}}
|
||||
>
|
||||
{{!-- Set default property values --}}
|
||||
{{#unless optionsValue}}
|
||||
{{set "optionsValue" "name"}}
|
||||
{{/unless}}
|
||||
{{#unless optionsTitle}}
|
||||
{{set "optionsTitle" "title"}}
|
||||
{{/unless}}
|
||||
|
||||
{{!-- Render options --}}
|
||||
{{#each options}}
|
||||
<option value="{{lookup this ../optionsValue}}"
|
||||
{{#eq (lookup this ../optionsValue) ../value}}selected{{/eq}}
|
||||
{{#if image}}
|
||||
data-content="{{> add-ons/dropdownOptionImage image=image title=(lookup this ../optionsTitle) }}"
|
||||
{{/if}}
|
||||
{{#if set}}
|
||||
data-set="{{#each set}}{{this}}{{#unless @last}},{{/unless}}{{/each}}"
|
||||
{{/if}}
|
||||
>{{lookup this ../optionsTitle}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
5
ui/src/templates/forms/inputs/effectSelector.hbs
Normal file
5
ui/src/templates/forms/inputs/effectSelector.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
{{> dropdown id=id name=name value=value title=title customClass="effect-selector"
|
||||
options=options optionsTitle="title" optionsValue="name"
|
||||
customData=(arr (obj name="effects-type" value=variant) (obj name="value" value=value))
|
||||
helpText=helpText
|
||||
}}
|
||||
8
ui/src/templates/forms/inputs/fontSelector.hbs
Normal file
8
ui/src/templates/forms/inputs/fontSelector.hbs
Normal file
@@ -0,0 +1,8 @@
|
||||
{{> dropdown id=id name=name value=value title=title customClass=(concat "font-selector " customClass)
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='search-url' value=fontsSearchUrl)
|
||||
(obj name='value' value=value)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
13
ui/src/templates/forms/inputs/forecastUnitsSelector.hbs
Normal file
13
ui/src/templates/forms/inputs/forecastUnitsSelector.hbs
Normal file
@@ -0,0 +1,13 @@
|
||||
{{> dropdown id=id name=name title=title
|
||||
value=value
|
||||
selectType="localSelect"
|
||||
optionsTitle="title" optionsValue="name"
|
||||
options=(arr
|
||||
(obj name='auto' title='Automatically select based on geographic location')
|
||||
(obj name='ca' title='Canada')
|
||||
(obj name='si' title='Standard International Units')
|
||||
(obj name='uk2' title='United Kingdom')
|
||||
(obj name='us' title='United States')
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
5
ui/src/templates/forms/inputs/header.hbs
Normal file
5
ui/src/templates/forms/inputs/header.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
>
|
||||
<div id="input_{{id}}" class="header pt-3 mb-1 {{variant}}" >{{title}}</div>
|
||||
</div>
|
||||
7
ui/src/templates/forms/inputs/hidden.hbs
Normal file
7
ui/src/templates/forms/inputs/hidden.hbs
Normal file
@@ -0,0 +1,7 @@
|
||||
<input name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" class="{{customClass}}" type="hidden" id="input_{{ id }}" value="{{ value }}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
/>
|
||||
11
ui/src/templates/forms/inputs/imageReplace.hbs
Normal file
11
ui/src/templates/forms/inputs/imageReplace.hbs
Normal file
@@ -0,0 +1,11 @@
|
||||
<div class="form-group xibo-form-input image-replace-control">
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="image-replace-control-area">
|
||||
<div>{{helpText}}</div>
|
||||
</div>
|
||||
</div>
|
||||
19
ui/src/templates/forms/inputs/keyCapture.hbs
Normal file
19
ui/src/templates/forms/inputs/keyCapture.hbs
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="form-group xibo-form-input key-capture-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
data-capture-target-id="{{target}}"
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="key-capture-input-wrapper">
|
||||
<input type="text" class="key-capture-area" id="input_{{id}}">
|
||||
<span class="clear-key-button fas fa-times" title="{{trans.clearKey}}"></span>
|
||||
</div>
|
||||
|
||||
<div class="key-capture-error"></div>
|
||||
</div>
|
||||
147
ui/src/templates/forms/inputs/languageSelector.hbs
Normal file
147
ui/src/templates/forms/inputs/languageSelector.hbs
Normal file
@@ -0,0 +1,147 @@
|
||||
{{> dropdown id=id name=name title=title
|
||||
value=value
|
||||
selectType="languageSelect"
|
||||
variant=variant
|
||||
optionsTitle="title" optionsValue="name"
|
||||
options=(arr
|
||||
(obj name=null title='')
|
||||
(obj name='af' title='Afrikaans')
|
||||
(obj name='ar-dz' title='Arabic (Algeria)')
|
||||
(obj name='ar-kw' title='Arabic (Kuwait)')
|
||||
(obj name='ar-ly' title='Arabic (Libya)')
|
||||
(obj name='ar-ma' title='Arabic (Morocco)')
|
||||
(obj name='ar-sa' title='Arabic (Saudi Arabia)')
|
||||
(obj name='ar-tn' title='Arabic (Tunisia)')
|
||||
(obj name='ar' title='Arabic')
|
||||
(obj name='az' title='Azerbaijani')
|
||||
(obj name='be' title='Belarusian')
|
||||
(obj name='bg' title='Bulgarian')
|
||||
(obj name='bm' title='Bambara')
|
||||
(obj name='bn-bd' title='Bengali (Bangladesh)')
|
||||
(obj name='bn' title='Bengali')
|
||||
(obj name='bo' title='Tibetan')
|
||||
(obj name='br' title='Breton')
|
||||
(obj name='bs' title='Bosnian')
|
||||
(obj name='ca' title='Catalan')
|
||||
(obj name='cs' title='Czech')
|
||||
(obj name='cv' title='Chuvash')
|
||||
(obj name='cy' title='Welsh')
|
||||
(obj name='da' title='Danish')
|
||||
(obj name='de-at' title='German (Austria)')
|
||||
(obj name='de-ch' title='German (Switzerland)')
|
||||
(obj name='de' title='German')
|
||||
(obj name='dv' title='Divehi')
|
||||
(obj name='el' title='Greek')
|
||||
(obj name='en-au' title='English (Australia)')
|
||||
(obj name='en-ca' title='English (Canada)')
|
||||
(obj name='en-gb' title='English (United Kingdom)')
|
||||
(obj name='en-ie' title='English (Ireland)')
|
||||
(obj name='en-il' title='English (Israel)')
|
||||
(obj name='en-in' title='English (India)')
|
||||
(obj name='en-nz' title='English (New Zealand)')
|
||||
(obj name='en-sg' title='English (Singapore)')
|
||||
(obj name='eo' title='Esperanto')
|
||||
(obj name='es-do' title='Spanish (Dominican Republic)')
|
||||
(obj name='es-mx' title='Spanish (Mexico)')
|
||||
(obj name='es-us' title='Spanish (United States)')
|
||||
(obj name='es' title='Spanish')
|
||||
(obj name='et' title='Estonian')
|
||||
(obj name='eu' title='Basque')
|
||||
(obj name='fa' title='Persian')
|
||||
(obj name='fi' title='Finnish')
|
||||
(obj name='fil' title='Filipino')
|
||||
(obj name='fo' title='Faroese')
|
||||
(obj name='fr-ca' title='French (Canada)')
|
||||
(obj name='fr-ch' title='French (Switzerland)')
|
||||
(obj name='fr' title='French')
|
||||
(obj name='fy' title='Western Frisian')
|
||||
(obj name='gd' title='Scottish Gaelic')
|
||||
(obj name='gl' title='Galician')
|
||||
(obj name='gom-latn' title='gom (Latin)')
|
||||
(obj name='gu' title='Gujarati')
|
||||
(obj name='he' title='Hebrew')
|
||||
(obj name='hi' title='Hindi')
|
||||
(obj name='hr' title='Croatian')
|
||||
(obj name='hu' title='Hungarian')
|
||||
(obj name='hy-am' title='Armenian (Armenia)')
|
||||
(obj name='id' title='Indonesian')
|
||||
(obj name='is' title='Icelandic')
|
||||
(obj name='it-ch' title='Italian (Switzerland)')
|
||||
(obj name='it' title='Italian')
|
||||
(obj name='ja' title='Japanese')
|
||||
(obj name='jv' title='Javanese')
|
||||
(obj name='ka' title='Georgian')
|
||||
(obj name='kk' title='Kazakh')
|
||||
(obj name='km' title='Khmer')
|
||||
(obj name='kn' title='Kannada')
|
||||
(obj name='ko' title='Korean')
|
||||
(obj name='ku' title='Kurdish')
|
||||
(obj name='ky' title='Kirghiz')
|
||||
(obj name='lb' title='Luxembourgish')
|
||||
(obj name='lo' title='Lao')
|
||||
(obj name='lt' title='Lithuanian')
|
||||
(obj name='lv' title='Latvian')
|
||||
(obj name='me' title='Montenegrin')
|
||||
(obj name='mi' title='Maori')
|
||||
(obj name='mk' title='Macedonian')
|
||||
(obj name='ml' title='Malayalam')
|
||||
(obj name='mn' title='Mongolian')
|
||||
(obj name='mr' title='Marathi')
|
||||
(obj name='ms-my' title='Malay (Malaysia)')
|
||||
(obj name='ms' title='Malay')
|
||||
(obj name='mt' title='Maltese')
|
||||
(obj name='my' title='Burmese')
|
||||
(obj name='nb' title='Norwegian Bokmål')
|
||||
(obj name='ne' title='Nepali')
|
||||
(obj name='nl-be' title='Dutch (Belgium)')
|
||||
(obj name='nl' title='Dutch')
|
||||
(obj name='nn' title='Norwegian Nynorsk')
|
||||
(obj name='pa-in' title='Punjabi (India)')
|
||||
(obj name='pl' title='Polish')
|
||||
(obj name='pt-br' title='Portuguese (Brazil)')
|
||||
(obj name='pt' title='Portuguese')
|
||||
(obj name='ro' title='Romanian')
|
||||
(obj name='ru' title='Russian')
|
||||
(obj name='sd' title='Sindhi')
|
||||
(obj name='se' title='Northern Sami')
|
||||
(obj name='si' title='Sinhala')
|
||||
(obj name='sk' title='Slovak')
|
||||
(obj name='sl' title='Slovenian')
|
||||
(obj name='sq' title='Albanian')
|
||||
(obj name='sr-cyrl' title='Serbian (Cyrillic)')
|
||||
(obj name='sr' title='Serbian')
|
||||
(obj name='ss' title='Swati')
|
||||
(obj name='sv' title='Swedish')
|
||||
(obj name='sw' title='Swahili')
|
||||
(obj name='ta' title='Tamil')
|
||||
(obj name='te' title='Telugu')
|
||||
(obj name='tet' title='Tetum')
|
||||
(obj name='tg' title='Tajik')
|
||||
(obj name='th' title='Thai')
|
||||
(obj name='tk' title='Turkmen')
|
||||
(obj name='tl-ph' title='Tagalog (Philippines)')
|
||||
(obj name='tlh' title='Klingon')
|
||||
(obj name='tr' title='Turkish')
|
||||
(obj name='tzl' title='Talossan')
|
||||
(obj name='tzm-latn' title='Central Atlas Tamazight (Latin)')
|
||||
(obj name='tzm' title='Central Atlas Tamazight')
|
||||
(obj name='ug-cn' title='Uyghur (China)')
|
||||
(obj name='uk' title='Ukrainian')
|
||||
(obj name='ur' title='Urdu')
|
||||
(obj name='uz-latn' title='Uzbek (Latin)')
|
||||
(obj name='uz' title='Uzbek')
|
||||
(obj name='vi' title='Vietnamese')
|
||||
(obj name='x-pseudo' title='Pseudo')
|
||||
(obj name='yo' title='Yoruba (Nigeria)')
|
||||
(obj name='zh-cn' title='Chinese (China)')
|
||||
(obj name='zh-hk' title='Chinese (Hong Kong)')
|
||||
(obj name='zh-mo' title='Chinese (Macau)')
|
||||
(obj name='zh-tw' title='Chinese (Taiwan)')
|
||||
)
|
||||
customData=(arr
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
25
ui/src/templates/forms/inputs/mediaSelector.hbs
Normal file
25
ui/src/templates/forms/inputs/mediaSelector.hbs
Normal file
@@ -0,0 +1,25 @@
|
||||
{{#if variant}}
|
||||
{{set "filterOptions" '{"type":"{{variant}}"}'}}
|
||||
{{else}}
|
||||
{{set "filterOptions" '{"type":"image"}'}}
|
||||
{{/if}}
|
||||
|
||||
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='width' value='100%')
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
(obj name='search-url' value=mediaSearchUrl)
|
||||
(obj name='search-term' value='media')
|
||||
(obj name='search-term-tags' value='tags')
|
||||
(obj name='id-property' value='mediaId')
|
||||
(obj name='text-property' value='name')
|
||||
(obj name='selected-property' value='selected')
|
||||
(obj name='initial-value' value=initialValue)
|
||||
(obj name='initial-key' value=initialKey)
|
||||
(obj name='filter-options' value=filterOptions)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
18
ui/src/templates/forms/inputs/menuBoardCategorySelector.hbs
Normal file
18
ui/src/templates/forms/inputs/menuBoardCategorySelector.hbs
Normal file
@@ -0,0 +1,18 @@
|
||||
{{> dropdown id=id name=name value=value title=title selectType="dependsSelect" customClass="menu-board-category-selector"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='width' value='100%')
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
(obj name='search-url-base' value=menuBoardCategorySearchUrl)
|
||||
(obj name='search-url' value=menuBoardCategorySearchUrl)
|
||||
(obj name='search-term' value='name')
|
||||
(obj name='id-property' value='menuCategoryId')
|
||||
(obj name='text-property' value='name')
|
||||
(obj name='selected-property' value='selected')
|
||||
(obj name='initial-value' value=initialValue)
|
||||
(obj name='initial-key' value=initialKey)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
17
ui/src/templates/forms/inputs/menuBoardSelector.hbs
Normal file
17
ui/src/templates/forms/inputs/menuBoardSelector.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='width' value='100%')
|
||||
(obj name='allow-clear' value='true')
|
||||
(obj name='placeholder--id' value=null)
|
||||
(obj name='placeholder--value' value='')
|
||||
(obj name='search-url' value=menuBoardSearchUrl)
|
||||
(obj name='search-term' value='name')
|
||||
(obj name='id-property' value='menuId')
|
||||
(obj name='text-property' value='name')
|
||||
(obj name='selected-property' value='selected')
|
||||
(obj name='initial-value' value=initialValue)
|
||||
(obj name='initial-key' value=initialKey)
|
||||
)
|
||||
helpText=helpText
|
||||
}}
|
||||
5
ui/src/templates/forms/inputs/message.hbs
Normal file
5
ui/src/templates/forms/inputs/message.hbs
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
>
|
||||
<div id="input_{{id}}" class="alert {{#if variant}}alert-{{variant}}{{else}}alert-info{{/if}}" >{{title}}</div>
|
||||
</div>
|
||||
17
ui/src/templates/forms/inputs/number.hbs
Normal file
17
ui/src/templates/forms/inputs/number.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
<div class="form-group xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<input type="number" class="form-control" {{#if step}}step="{{step}}"{{/if}} id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" {{#if min}}min="{{min}}"{{/if}} value="{{value}}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>
|
||||
</div>
|
||||
7
ui/src/templates/forms/inputs/playlistMixer.hbs
Normal file
7
ui/src/templates/forms/inputs/playlistMixer.hbs
Normal file
@@ -0,0 +1,7 @@
|
||||
<div class="xibo-form-input playlist-mixer"
|
||||
data-mixer-id="{{id}}"
|
||||
data-playlist-id="{{playlistId}}"
|
||||
>
|
||||
<div class="mixer-playlist-container alert alert-primary overflow-auto"></div>
|
||||
{{> hidden id=id name=name value=value }}
|
||||
</div>
|
||||
24
ui/src/templates/forms/inputs/richText.hbs
Normal file
24
ui/src/templates/forms/inputs/richText.hbs
Normal file
@@ -0,0 +1,24 @@
|
||||
<div class="form-group xibo-form-input rich-text-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="rich-text-main-container">
|
||||
<div class="text-area-buttons"></div>
|
||||
<div class="rich-text-container-wrapper">
|
||||
<div class="rich-text-container">
|
||||
<textarea type="text" class="form-control rich-text" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>{{value}}</textarea>
|
||||
<div class="rich-text-editor" data-target="input_{{id}}" data-allow-lib-refs="{{allowLibraryRefs}}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
13
ui/src/templates/forms/inputs/snippet.hbs
Normal file
13
ui/src/templates/forms/inputs/snippet.hbs
Normal file
@@ -0,0 +1,13 @@
|
||||
<div class="form-group xibo-form-input dropdown-input-group localSelect snippet-selector"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
title="{{helpText}}">
|
||||
<select class="form-control" id="input_{{id}}"
|
||||
data-mode="{{mode}}"
|
||||
data-target="{{target}}"
|
||||
data-placeholder="{{title}}">
|
||||
<option></option>
|
||||
{{#each options}}
|
||||
<option value="{{name}}">{{title}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
17
ui/src/templates/forms/inputs/text.hbs
Normal file
17
ui/src/templates/forms/inputs/text.hbs
Normal file
@@ -0,0 +1,17 @@
|
||||
<div class="form-group xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<input type="text" class="form-control" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>
|
||||
</div>
|
||||
18
ui/src/templates/forms/inputs/textArea.hbs
Normal file
18
ui/src/templates/forms/inputs/textArea.hbs
Normal file
@@ -0,0 +1,18 @@
|
||||
<div class="form-group xibo-form-input {{customClass}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
|
||||
>
|
||||
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
|
||||
<div class="input-info-container">
|
||||
{{#if helpText}}
|
||||
{{>add-ons/helpText helpText=helpText}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="text-area-buttons"></div>
|
||||
<textarea class="form-control" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" rows="6"
|
||||
{{#each customData}}
|
||||
data-{{this.name}}="{{this.value}}"
|
||||
{{/each}}
|
||||
/>{{value}}</textarea>
|
||||
</div>
|
||||
20
ui/src/templates/forms/inputs/tickerTagSelector.hbs
Normal file
20
ui/src/templates/forms/inputs/tickerTagSelector.hbs
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="xibo-form-input ticker-tag-selector pb-2"
|
||||
data-select-id="{{id}}"
|
||||
>
|
||||
<div class="connectedlist w-50">
|
||||
<p class="text-info text-center col-out-title mb-0">{{trans.tagAvailable}}1</p>
|
||||
<ul id="tagsOut" class="connectedSortable m-auto text-center">
|
||||
</ul>
|
||||
</div>
|
||||
<div class="connectedlist w-50">
|
||||
<p class="text-info text-center col-in-title mb-0">{{trans.tagSelected}}2</p>
|
||||
<ul id="tagsIn" class="connectedSortable m-auto text-center">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> hidden id=id name=name value=value }}
|
||||
|
||||
<div class="ticker-tag-styles">
|
||||
<!-- TAG STYLES -->
|
||||
</div>
|
||||
</div>
|
||||
26
ui/src/templates/forms/inputs/tickerTagStyle.hbs
Normal file
26
ui/src/templates/forms/inputs/tickerTagStyle.hbs
Normal file
@@ -0,0 +1,26 @@
|
||||
<div class="ticker-tag-style pt-2 my-3"
|
||||
data-component-id="{{id}}"
|
||||
>
|
||||
<div class="ticker-tag-style-title">{{lookup trans id}}</div>
|
||||
<div class="ticker-tag-style-properties" id="{{concat "ticker-tag-style-properties-" id}}" data-type="{{id}}">
|
||||
{{#eq type "image"}}
|
||||
{{> number value=value.opacity name=(concat 'style_' id '_opacity') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='opacity')) title=trans.form.opacity}}
|
||||
{{> number value=value.width name=(concat 'style_' id '_width') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='width')) title=trans.form.width}}
|
||||
{{> number value=value.height name=(concat 'style_' id '_height') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='height')) title=trans.form.height}}
|
||||
{{else}}
|
||||
{{> number value=value.fontSize name=(concat 'style_' id '_fontSize') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='fontSize')) title=trans.form.fontSize}}
|
||||
{{> color value=value.fontColor name=(concat 'style_' id '_fontColor') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='fontColor')) title=trans.form.fontColor}}
|
||||
{{> dropdown value=value.fontFamily name=(concat 'style_' id '_fontFamily') title=trans.form.fontFamily customClass="font-selector ticker-tag-style-property"
|
||||
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
|
||||
customData=(arr
|
||||
(obj name='search-url' value=fontsSearchUrl)
|
||||
(obj name='value' value=value.fontFamily)
|
||||
(obj name='tag-style-input' value='fontFamily')
|
||||
)
|
||||
}}
|
||||
{{> checkbox value=value.bold name=(concat 'style_' id '_bold') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='bold')) title=trans.form.bold}}
|
||||
{{> checkbox value=value.italics name=(concat 'style_' id '_italics') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='italics')) title=trans.form.italics}}
|
||||
{{> checkbox value=value.underline name=(concat 'style_' id '_underline') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='underline')) title=trans.form.underline}}
|
||||
{{/eq}}
|
||||
</div>
|
||||
</div>
|
||||
3
ui/src/templates/forms/inputs/widgetInfo.hbs
Normal file
3
ui/src/templates/forms/inputs/widgetInfo.hbs
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="widget-info-container mb-1">
|
||||
<span class="widget-info-name" title="{{trans.widgetName}}">{{widget.widgetName}}</span>
|
||||
</div>
|
||||
8
ui/src/templates/forms/inputs/worldClock.hbs
Normal file
8
ui/src/templates/forms/inputs/worldClock.hbs
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="xibo-form-input world-clock-control"
|
||||
data-order-id="{{id}}"
|
||||
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
|
||||
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
|
||||
>
|
||||
<div class="clocksContainer"></div>
|
||||
{{> hidden id=id name=name value=value customClass="world-clock-value" }}
|
||||
</div>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user