1 <%@ MasterClass="Application.Web.Portlets.ConfigurationPanel"%>
2 <com:TContent ID="ConfigurationWindowContent">
3 <com:TActivePanel DefaultButton="Apply">
4 <strong><%[ Volume name: ]%> <com:TActiveLabel ID="VolumeName" /><com:TActiveLabel ID="VolumeID" Visible="false" /></strong>
5 <span class="text tab tab_active" rel="volume_actions_tab"><%[ Actions ]%></span>
6 <span class="text tab" rel="volume_jobs_tab"><%[ Jobs on Volume ]%></span>
8 <div id="volume_actions_tab">
9 <com:TValidationSummary
10 ID="ValidationSummary"
11 CssClass="validation-error-summary"
12 ValidationGroup="VolumeGroup"
15 HeaderText="<%[ There is not possible to run selected action because: ]%>" />
17 <div class="text"><com:TLabel ForControl="VolumeStatus" Text="<%[ Volume status: ]%>" /></div>
19 <com:TActiveDropDownList ID="VolumeStatus" CssClass="textbox-auto" AutoPostBack="false" />
23 <div class="text"><com:TLabel ForControl="RetentionPeriod" Text="<%[ Retention period (in hours): ]%>" /></div>
25 <com:TActiveTextBox ID="RetentionPeriod" MaxLength="20" CssClass="textbox-auto" AutoPostBack="false" />
26 <com:TActiveCustomValidator ID="RetentionPeriodValidator" ValidationGroup="VolumeGroup" ControlToValidate="RetentionPeriod" ErrorMessage="<%[ Retention period value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="retentionPeriodValidator" />
30 <div class="text"><com:TLabel ForControl="Pool" Text="<%[ Pool: ]%>" /></div>
32 <com:TActiveDropDownList ID="Pool" AutoPostBack="false" CssClass="textbox-auto" />
36 <div class="text"><com:TLabel ForControl="UseDuration" Text="<%[ Vol. use duration (in hours): ]%>" /></div>
38 <com:TActiveTextBox ID="UseDuration" AutoPostBack="false" CssClass="textbox-auto" />
39 <com:TActiveCustomValidator ID="UseDurationValidator" ValidationGroup="VolumeGroup" ControlToValidate="UseDuration" ErrorMessage="<%[ Vol. use duration value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="useDurationValidator" />
43 <div class="text"><com:TLabel ForControl="MaxVolJobs" Text="<%[ Max vol. jobs: ]%>" /></div>
45 <com:TActiveTextBox ID="MaxVolJobs" AutoPostBack="false" CssClass="textbox-auto" />
46 <com:TActiveCustomValidator ID="MaxVolJobsValidator" ValidationGroup="VolumeGroup" ControlToValidate="MaxVolJobs" ErrorMessage="<%[ Max vol. jobs value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="maxVolJobsValidator" />
50 <div class="text"><com:TLabel ForControl="MaxVolFiles" Text="<%[ Max vol. files: ]%>" /></div>
52 <com:TActiveTextBox ID="MaxVolFiles" AutoPostBack="false" CssClass="textbox-auto" />
53 <com:TActiveCustomValidator ID="MaxVolFilesValidator" ValidationGroup="VolumeGroup" ControlToValidate="MaxVolFiles" ErrorMessage="<%[ Max vol. files value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="maxVolFilesValidator" />
57 <div class="text"><com:TLabel ForControl="MaxVolBytes" Text="<%[ Max vol. bytes: ]%>" /></div>
59 <com:TActiveTextBox ID="MaxVolBytes" AutoPostBack="false" CssClass="textbox-auto" />
60 <com:TActiveCustomValidator ID="MaxVolBytesValidator" ValidationGroup="VolumeGroup" ControlToValidate="MaxVolBytes" ErrorMessage="<%[ Max vol. bytes value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="maxVolBytesValidator" />
64 <div class="text"><com:TLabel ForControl="Slot" Text="<%[ Slot number: ]%>" /></div>
66 <com:TActiveTextBox ID="Slot" AutoPostBack="false" CssClass="textbox-auto" />
67 <com:TActiveCustomValidator ID="SlotValidator" ValidationGroup="VolumeGroup" ControlToValidate="Slot" ErrorMessage="<%[ Slot value must be integer. ]%>" ControlCssClass="validation-error" Display="None" OnServerValidate="slotValidator" />
71 <div class="text"><com:TLabel ForControl="Recycle" Text="<%[ Recycle: ]%>" /></div>
72 <div class="field"><com:TActiveCheckBox ID="Recycle" AutoPostBack="false" /></div>
75 <div class="text"><com:TLabel ForControl="Enabled" Text="<%[ Enabled: ]%>" /></div>
76 <div class="field"><com:TActiveCheckBox ID="Enabled" AutoPostBack="false" /></div>
79 <div class="text"><com:TLabel ForControl="InChanger" Text="<%[ In changer: ]%>" /></div>
80 <div class="field"><com:TActiveCheckBox ID="InChanger" AutoPostBack="false" /></div>
82 <com:TCallback ID="ReloadVolumes" OnCallback="Page.VolumeWindow.prepareData" ClientSide.OnComplete="SlideWindow.getObj('VolumeWindow').setLoadRequest();" />
83 <script type="text/javascript">
84 var volume_callback_func = function() {
86 * Check if Volume list window is open and if any checkbox from actions is not checked.
87 * Also check if toolbar is open.
88 * If yes, then is possible to refresh Volume list window.
90 var obj = SlideWindow.getObj('VolumeWindow');
91 if (obj.isWindowOpen() === false || obj.areCheckboxesChecked() === true || obj.isToolbarOpen() === true) {
94 var mainForm = Prado.Validation.getForm();
95 var callback = <%=$this->ReloadVolumes->ActiveControl->Javascript%>;
96 if (Prado.Validation.managers[mainForm].getValidatorsWithError('VolumeGroup').length == 0) {
97 obj.markAllChecked(false);
103 <com:Application.Web.Portlets.BActiveButton ID="Purge" Text="<%[ Purge ]%>" OnClick="purge" ClientSide.OnSuccess="ConfigurationWindow.getObj('VolumeWindow').progress(false);volume_callback_func()" />
104 <com:Application.Web.Portlets.BActiveButton ID="Prune" Text="<%[ Prune ]%>" OnClick="prune" ClientSide.OnSuccess="ConfigurationWindow.getObj('VolumeWindow').progress(false);volume_callback_func()" />
105 <com:Application.Web.Portlets.BActiveButton ValidationGroup="VolumeGroup" CausesValidation="true" ID="Apply" Text="<%[ Apply ]%>" OnClick="apply" ClientSide.OnSuccess="ConfigurationWindow.getObj('VolumeWindow').progress(false);volume_callback_func()" />
108 <div id="volume_jobs_tab" style="display: none">
109 <div style="max-height: 500px; overflow-y: auto;">
112 EnableViewState="false"
113 AutoGenerateColumns="false"
115 OnSortCommand="sortDataGrid"
117 CssClass="window-section-detail"
118 ItemStyle.CssClass="slide-window-element"
119 AlternatingItemStyle.CssClass="slide-window-element-alternating"
121 <com:TActiveBoundColumn HeaderText="ID" DataField="jobid" />
122 <com:TActiveTemplateColumn HeaderText="<%[ Job name ]%>" SortExpression="name">
124 <div title="<%=$this->getParent()->Data['name']%>"><%=$this->getPage()->JobWindow->formatJobName($this->getParent()->Data['name'])%></div>
125 <input type="hidden" name="<%=$this->getParent()->ClientID%>" value="<%=$this->getParent()->Data['jobid']%>" />
127 </com:TActiveTemplateColumn>
128 <com:TActiveTemplateColumn>
130 <span title="<%=Prado::localize('Type')%>" style="cursor: help">T</span>
133 <%=$this->getParent()->Data['type']%>
135 </com:TActiveTemplateColumn>
136 <com:TActiveTemplateColumn>
138 <span title="<%=Prado::localize('Level')%>" style="cursor: help">L</span>
141 <%=$this->getParent()->Data['level']%>
143 </com:TActiveTemplateColumn>
144 <com:TActiveTemplateColumn HeaderText="<%[ Job status ]%>" SortExpression="jobstatus">
146 <div class="job-status-<%=$this->getPage()->JobWindow->getJobStatusLetter($this->getParent()->Data)%>" title="<%=$this->getPage()->JobWindow->getJobStatusDescription($this->getParent()->Data)%>"><%=$this->getPage()->JobWindow->getJobStatusValue($this->getParent()->Data)%></div>
148 </com:TActiveTemplateColumn>
149 <com:TActiveTemplateColumn HeaderText="<%[ Size ]%>" SortExpression="jobbytes">
151 <div class="size" rel="<%=$this->getParent()->Data['jobbytes']%>"><%=$this->getParent()->Data['jobbytes']%></div>
153 </com:TActiveTemplateColumn>
154 <com:TActiveBoundColumn SortExpression="jobfiles" HeaderText="<%[ Files ]%>" DataField="jobfiles" />
155 <com:TActiveTemplateColumn HeaderText="<%[ End time ]%>" SortExpression="endtime">
157 <%=$this->getParent()->Data['endtime']%>
158 <%=in_array($this->getParent()->Data['jobstatus'], $this->getPage()->JobWindow->runningJobStates) ? '<img src="' . $this->getPage()->getTheme()->getBaseUrl() . '/loader-alter.gif" />' : ''%>
160 </com:TActiveTemplateColumn>
161 </com:TActiveDataGrid>
163 <p class="center bold" id="no_jobs_on_volume" style="display: none"><%[ No jobs on the volume. ]%></p>
164 <script type="text/javascript">
165 var bind_jobs_on_volume_action = function() {
166 var grid_id = '<%=$this->JobsOnVolume->ClientID%>';
167 var no_jobs_msg_id = 'no_jobs_on_volume';
168 if (!document.getElementById(grid_id)) {
169 $('#' + no_jobs_msg_id).show();
172 $('#' + no_jobs_msg_id).hide();
173 SlideWindow.makeSortable(grid_id);
174 var odd_rows = ['#' + grid_id, 'tr.' + SlideWindow.elements.contentItems].join(' ');
175 var even_rows = ['#' + grid_id, 'tr.' + SlideWindow.elements.contentAlternatingItems].join(' ');
176 var callback = <%=$this->OpenJobCall->ActiveControl->Javascript%>;
177 $(odd_rows + ', ' + even_rows).each(function(index, el) {
178 $(el).on('click', function(e) {
179 var el = $(e.srcElement||e.target);
181 if (el.length === 1) {
182 el = el.parents('tr').find('input[type=hidden]');
183 if (el.length === 1) {
184 var val = el[0].value;
185 callback.setCallbackParameter(val);
187 ConfigurationWindow.getObj('VolumeWindow').progress(true);
192 SlideWindow.sortTable(grid_id, 0, true);
195 <com:TCallback ID="OpenJobCall" OnCallback="openJob">
196 <prop:ClientSide.OnComplete>
197 ConfigurationWindow.getObj('VolumeWindow').progress(false);
198 ConfigurationWindow.getObj('JobWindow').switchTabByNo(2);
199 ConfigurationWindow.getObj('JobWindow').show();
200 </prop:ClientSide.OnComplete>