1 <div id="jscripty-project" class="page-layout simple tabbed" layout="column">
3 <div class="header md-accent-bg" layout="row" layout-align="start center">
4 <div class="white-fg" layout="row" layout-align="start center" flex>
6 class="goto-projects-button md-icon-button"
7 aria-label="Go to projects"
8 ng-click="vm.gotoProjects()"
10 translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS"
12 <md-icon md-font-icon="icon-arrow-left"></md-icon>
15 <div layout="row" layout-align="start center">
16 <div class="project-image" hide-xs>
17 <img ng-src="assets/images/business/projects.jpg" />
20 <div layout="column" layout-align="start start">
23 <span ng-if="vm.project.name">{{vm.project.name}}</span>
25 <div class="subtitle secondary-text">
26 <span translate="JSCRIPTY.CREATED_AT"></span>
27 <span>{{vm.project.createdAt | date:'medium'}}</span>
33 <div ng-cloak ng-if="vm.crudPermissions.canEdit">
35 ng-click="vm.clonedialog(vm.project, $event)"
36 class="md-fab md-green-500-bg md-icon-button"
40 ><span translate="JSCRIPTY.CLONE_PROJECT"></span
42 <md-icon md-font-icon="icon-content-duplicate"></md-icon>
48 ng-click="vm.saveProject()"
49 ng-if="vm.crudPermissions.canEdit"
50 class="send-button md-accent md-raised"
51 ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)"
52 translate="JSCRIPTY.SAVE"
53 translate-attr-aria-label="JSCRIPTY.SAVE"
64 md-selected="vm.selectedTab"
65 md-stretch-tabs="always"
72 <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>
76 class="project-detail-form-container general md-background-bg md-whiteframe-1dp"
78 <div class="pb-16" layout="row" layout-align="start center">
79 <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">
83 <form name="generalForm" novalidate>
84 <md-input-container class="md-block">
85 <label translate="JSCRIPTY.NAME">Name</label>
89 ng-model="vm.project.name"
90 ng-pattern="/^[A-Za-z0-9\.\_]+$/i"
97 <span translate="JSCRIPTY.HELP.NAME"></span>
100 ng-messages="generalForm['name'].$error"
101 ng-show="generalForm['name'].$touched"
104 <div ng-message="required">
105 <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED"
106 >Name field is required</span
109 <div ng-message="pattern">
111 translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN"
112 translate-values="{ regex: '/^[A-Za-z0-9\.\_]+$/i' }"
113 >Name must be valid pattern
117 </md-input-container>
118 <md-input-container class="md-block">
120 ng-model="vm.project.enableUncompleteSave"
121 aria-label="EnableUncompleteSave"
122 ng-disabled="!vm.crudPermissions.canEdit"
123 ><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE"
124 >EnableUncompleteSave</span
129 <span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span>
131 </md-input-container>
132 <md-input-container class="md-block">
134 ng-model="vm.project.sendUnpauseOnSubmit"
135 aria-label="SendUnpauseOnSubmit"
136 ng-disabled="!vm.crudPermissions.canEdit"
137 ><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT"
138 >SendUnpauseOnSubmit</span
143 <span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span>
145 </md-input-container>
146 <md-input-container class="md-block">
147 <label translate="JSCRIPTY.DESCRIPTION">Description</label>
151 ng-model="vm.project.description"
152 ng-disabled="!vm.crudPermissions.canEdit"
156 ng-messages="generalForm['description'].$error"
157 ng-show="generalForm['description'].$touched"
160 <div ng-message="required">
161 <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED"
162 >Description field is required</span
166 </md-input-container>
173 <span translate="JSCRIPTY.BUILDER">BUILDER</span>
177 class="project-detail-form-container builder md-background-bg md-whiteframe-1dp"
180 ng-controller="ProjectBuilderController as vm_bc"
181 ng-init="vm_bc.init(vm.project)"
184 ng-if="vm_bc.project.formData"
185 form-data="vm_bc.project.formData"
186 options="vm_bc.optionsBuilder"
195 <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>
199 class="project-detail-form-container preview md-background-bg md-whiteframe-1dp"
203 layout-align="center"
204 ng-controller="ProjectViewerController as vm_vc"
205 ng-init="vm_vc.init(vm.project)"
207 <div layout="row" layout-align="center">
209 class="md-raised md-accent"
211 ng-click="vm_vc.resetViewer()"
217 ng-if="vm_vc.project.formData"
218 form-data="vm_vc.project.formData"
219 response-data="vm_vc.responseData"
220 on-submit="vm_vc.onSubmit($event)"
221 api="vm_vc.formViewer"
229 <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>
233 class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp"
236 ng-controller="ProjectSessionsController as vm_dc"
237 ng-init="vm_dc.init(vm.project, vm.crudPermissions)"
240 class="md-table-toolbar md-default"
241 ng-hide="vm_dc.selectedProjectSessions.length"
243 <div class="md-toolbar-tools">
244 <span class="md-subhead" translate="JSCRIPTY.SESSIONS"
248 on-search="vm_dc.query.filter = query"
249 on-collapse="vm_dc.query.filter = undefined"
257 class="md-table-toolbar md-accent"
258 ng-show="vm_dc.selectedProjectSessions.length"
260 <div class="md-toolbar-tools">
261 <span class="md-subhead"
262 >{{vm_dc.selectedProjectSessions.length}}
263 {{vm_dc.selectedProjectSessions.length > 1 ? 'items' :
264 'item'}} selected</span
268 class="md-icon-button"
269 ng-csv="vm_dc.exportSelectedProjectSessions"
271 filename="projects.csv"
273 <md-icon md-font-icon="icon-file-excel"></md-icon>
276 ng-if="vm_dc.crudPermissions.canDelete"
277 class="md-icon-button"
278 ng-click="vm_dc.deleteSelectedProjectSessions($event)"
279 aria-label="delete selected"
281 translate-attr-label="JSCRIPTY.DELETE_SELECTED"
283 <md-icon md-font-icon="icon-delete"></md-icon>
287 <md-table-container class="font-size-12">
292 ng-model="vm_dc.selectedProjectSessions"
293 md-progress="vm_dc.promise"
297 md-order="vm_dc.query.sort"
298 md-on-reorder="vm_dc.getProjectSessions"
301 <th md-column md-order-by="id">
302 {{ 'JSCRIPTY.ID' | translate }}
304 <th md-column md-order-by="starttime">
305 {{ 'JSCRIPTY.STARTTIME' | translate }}
307 <th md-column md-order-by="endtime">
308 {{ 'JSCRIPTY.ENDTIME' | translate }}
310 <th md-column md-order-by="membername">
311 {{ 'JSCRIPTY.MEMBERNAME' | translate }}
313 <th md-column md-order-by="calleridnum">
314 {{ 'JSCRIPTY.CALLERIDNUM' | translate }}
316 <th md-column md-order-by="completed">
317 {{ 'JSCRIPTY.COMPLETE' | translate }}
319 <th md-column width="10px"></th>
327 ng-repeat="session in vm_dc.projectSessions.rows"
329 <td md-cell>{{session.id}}</td>
330 <td md-cell>{{ session.starttime | formatdate }}</td>
331 <td md-cell>{{ session.endtime | formatdate }}</td>
332 <td md-cell>{{session.membername}}</td>
333 <td md-cell>{{session.calleridnum}}</td>
334 <td md-cell class="completed">
336 md-colors="{color: {{session.completed ? '\'green\'' : '\'grey\''}}}"
337 md-font-icon="{{session.completed? 'icon-check' : 'icon-close'}}"
340 <td md-cell class="actions">
343 class="md-icon-button"
346 translate-attr-aria-label="JSCRIPTY.MORE"
347 ng-click="$mdMenu.open($event)"
350 md-font-icon="icon-dots-vertical"
354 <md-menu-content width="3">
357 ng-click="vm_dc.showQuestionsProjectSession($event, session)"
358 translate="JSCRIPTY.SHOW_QUESTIONS_SESSION"
364 ng-if="vm_dc.crudPermissions.canDelete"
367 ng-click="vm_dc.deleteConfirm(session, $event)"
368 translate="JSCRIPTY.DELETE_SESSION"
377 <tr md-row ng-if="!vm_dc.projectSessions.rows.length">
378 <td md-cell colspan="8">
379 <div layout="row" layout-align="center center">
381 class="text-boxed-light"
382 translate="JSCRIPTY.NO_SESSION_AVAILABLE"
383 >No session available</span
390 </md-table-container>
392 md-label="{page: '{{'JSCRIPTY.PAGE' | translate}}:', rowsPerPage: '{{'JSCRIPTY.ROWSPERPAGE' | translate}}:', of: '{{'JSCRIPTY.OF' | translate}}'}"
393 md-limit="vm_dc.query.limit"
394 md-limit-options="[10, 15, 20, 50, 100, 250]"
395 md-page="vm_dc.query.page"
396 md-total="{{vm_dc.projectSessions.count}}"
397 md-on-paginate="vm_dc.getProjectSessions"
399 ></md-table-pagination>
406 <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>
410 class="project-detail-form-container answers md-background-bg md-whiteframe-1dp"
413 ng-controller="ProjectAnswersController as vm_an"
414 ng-init="vm_an.init(vm.project)"
419 layout-align="space-between center"
421 <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS">
425 localization-map="vm_an.localizationMap"
426 ng-model="vm_an.pickerModel"
429 md-on-select="vm_an.getAnswers()"
430 placeholder="{{ 'DASHBOARDS.ALL' | translate }}"
434 ng-disabled="!vm_an.answers"
435 ng-click="vm_an.getSummary($event)"
436 class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button"
437 title="{{'JSCRIPTY.EXPORT_TO_CSV' | translate}}"
440 md-font-icon="icon-file-excel"
441 class="md-default-theme md-font material-icons icon-file-excel"
447 class="md-whiteframe-1dp"
448 ng-if="vm_an.answers && vm_an.hasIdAnswers"
453 class="md-2-line contact-item"
454 ng-repeat="(key, question) in vm_an.answers"
456 <div class="md-list-item-text compact" layout-padding>
457 <h3>{{question.question}}</h3>
470 ng-repeat="(key, value) in question.answers"
472 <td md-cell>{{key}}</td>
473 <td md-cell width="20px">{{value}}</td>
474 <td md-cell width="20px">
475 {{value*100/question.sum | number:1}}
480 <b>{{'JSCRIPTY.TOTAL' | translate}}</b>
482 <td md-cell width="20px">
483 <b>{{question.sum}}</b>
485 <td md-cell width="20px"><b>100</b></td>
489 </md-table-container>
491 <md-divider ng-if="!$last"></md-divider>
496 ng-if="!vm_an.answers || !vm_an.hasIdAnswers"
497 class="text-boxed-light"
498 translate="JSCRIPTY.NO_ANSWERS_AVAILABLE"
499 >No answers available</span